diff --git a/changelog b/changelog index 5496f9298..ca4dc65aa 100644 --- a/changelog +++ b/changelog @@ -54,6 +54,13 @@ * Microwave explosions no longer destroy blocks, only the microwave and nearby players * Wings can now be used like armor mods * At higher pollution levels, skeletons can now spawn with guns +* Logistic drones now move at 0.625 blocks/t instead of 0.6. There is no balancing reason for this, I just hate weird numbers like 0.6 +* Fallout effects now remove snow layers in the same area where they would remove things like small plants and leaves +* Adjusted damage values to many swords and some tools +* Unsats and aromatics can now be filled into gas canisters +* Basalt asbestos ore no longer creates asbestos particles every block update, meaning volcanoes no longer cause massive delays with chunk rendering due to constant block changes +* Rockets shot by the rocket turret are no longer subject to gravity and lock onto the intended target +* Updated the anti-personell mine's model, it also now has 4 different textures which are automatically applied depending on whether the mine is placed underground or what biome it is in ## Fixed * The conveyor grabber should no longer skip over items when used in long lines @@ -72,3 +79,6 @@ * Fixed the wood burner destroying container items like buckets when using lava as fuel * Fixed pollution serialization for the fluid trait config being wrong * Fixed slag crashing the game when trying to flow into the void +* Fixed issue where drones that are too fast may skip waypoints +* Fixed the electrolyzer speed upgrades not increasing energy consumption as advertised +* Fixed giblets rendering in fullbright even in the dark diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index c0720383e..1c4659078 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -605,6 +605,7 @@ public class ModBlocks { public static Block sat_dock; public static Block soyuz_capsule; + public static Block crate_supply; public static Block crate_iron; public static Block crate_steel; @@ -2067,6 +2068,7 @@ public class ModBlocks { sat_dock = new MachineSatDock(Material.iron).setBlockName("sat_dock").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":sat_dock"); soyuz_capsule = new SoyuzCapsule(Material.iron).setBlockName("soyuz_capsule").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":soyuz_capsule"); + crate_supply = new BlockSupplyCrate(Material.wood).setBlockName("crate_supply").setStepSound(Block.soundTypeWood).setHardness(1.0F).setResistance(2.5F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":crate_can"); turret_chekhov = new TurretChekhov(Material.iron).setBlockName("turret_chekhov").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); turret_friendly = new TurretFriendly(Material.iron).setBlockName("turret_friendly").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); @@ -2852,8 +2854,8 @@ public class ModBlocks { //Mines GameRegistry.registerBlock(mine_ap, mine_ap.getUnlocalizedName()); - GameRegistry.registerBlock(mine_he, mine_he.getUnlocalizedName()); GameRegistry.registerBlock(mine_shrap, mine_shrap.getUnlocalizedName()); + GameRegistry.registerBlock(mine_he, mine_he.getUnlocalizedName()); GameRegistry.registerBlock(mine_fat, mine_fat.getUnlocalizedName()); //Block Bombs @@ -3343,6 +3345,7 @@ public class ModBlocks { GameRegistry.registerBlock(soyuz_launcher, soyuz_launcher.getUnlocalizedName()); GameRegistry.registerBlock(sat_dock, sat_dock.getUnlocalizedName()); GameRegistry.registerBlock(soyuz_capsule, soyuz_capsule.getUnlocalizedName()); + GameRegistry.registerBlock(crate_supply, crate_supply.getUnlocalizedName()); GameRegistry.registerBlock(machine_radar, machine_radar.getUnlocalizedName()); GameRegistry.registerBlock(machine_radar_large, machine_radar_large.getUnlocalizedName()); GameRegistry.registerBlock(radar_screen, radar_screen.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/bomb/Landmine.java b/src/main/java/com/hbm/blocks/bomb/Landmine.java index 966cc470f..03a505e55 100644 --- a/src/main/java/com/hbm/blocks/bomb/Landmine.java +++ b/src/main/java/com/hbm/blocks/bomb/Landmine.java @@ -37,7 +37,6 @@ public class Landmine extends BlockContainer implements IBomb { public Landmine(Material mat, double range, double height) { super(mat); - this.range = range; this.height = height; } @@ -47,20 +46,9 @@ public class Landmine extends BlockContainer implements IBomb { return new TileEntityLandmine(); } - @Override - public int getRenderType() { - return -1; - } - - @Override - public boolean isOpaqueCube() { - return false; - } - - @Override - public boolean renderAsNormalBlock() { - return false; - } + @Override public int getRenderType() { return -1; } + @Override public boolean isOpaqueCube() { return false; } + @Override public boolean renderAsNormalBlock() { return false; } @Override public Item getItemDropped(int i, Random rand, int j) { @@ -70,14 +58,10 @@ public class Landmine extends BlockContainer implements IBomb { @Override public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { float f = 0.0625F; - if(this == ModBlocks.mine_ap) - this.setBlockBounds(6 * f, 0.0F, 6 * f, 10 * f, 2 * f, 10 * f); - if(this == ModBlocks.mine_he) - this.setBlockBounds(4 * f, 0.0F, 4 * f, 12 * f, 2 * f, 12 * f); - if(this == ModBlocks.mine_shrap) - this.setBlockBounds(4 * f, 0.0F, 4 * f, 12 * f, 2 * f, 12 * f); - if(this == ModBlocks.mine_fat) - this.setBlockBounds(5 * f, 0.0F, 4 * f, 11 * f, 6 * f, 12 * f); + if(this == ModBlocks.mine_ap) this.setBlockBounds(5 * f, 0.0F, 5 * f, 11 * f, 1 * f, 11 * f); + if(this == ModBlocks.mine_he) this.setBlockBounds(4 * f, 0.0F, 4 * f, 12 * f, 2 * f, 12 * f); + if(this == ModBlocks.mine_shrap) this.setBlockBounds(5 * f, 0.0F, 5 * f, 11 * f, 1 * f, 11 * f); + if(this == ModBlocks.mine_fat) this.setBlockBounds(5 * f, 0.0F, 4 * f, 11 * f, 6 * f, 12 * f); } @Override @@ -154,7 +138,7 @@ public class Landmine extends BlockContainer implements IBomb { if(this == ModBlocks.mine_ap) { ExplosionVNT vnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 3F); - vnt.setEntityProcessor(new EntityProcessorCrossSmooth(0.5, 10F)); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(0.5, 10F).setupPiercing(5F, 0.2F)); vnt.setPlayerProcessor(new PlayerProcessorStandard()); vnt.setSFX(new ExplosionEffectWeapon(5, 1F, 0.5F)); vnt.explode(); @@ -162,7 +146,7 @@ public class Landmine extends BlockContainer implements IBomb { ExplosionVNT vnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 4F); vnt.setBlockAllocator(new BlockAllocatorStandard()); vnt.setBlockProcessor(new BlockProcessorStandard()); - vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, 35)); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, 35).setupPiercing(15F, 0.2F)); vnt.setPlayerProcessor(new PlayerProcessorStandard()); vnt.setSFX(new ExplosionEffectWeapon(15, 3.5F, 1.25F)); vnt.explode(); @@ -182,5 +166,4 @@ public class Landmine extends BlockContainer implements IBomb { return BombReturnCode.DETONATED; } - } diff --git a/src/main/java/com/hbm/blocks/generic/BlockCrate.java b/src/main/java/com/hbm/blocks/generic/BlockCrate.java index ea7ffd968..6fa75c7fb 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockCrate.java +++ b/src/main/java/com/hbm/blocks/generic/BlockCrate.java @@ -52,18 +52,6 @@ public class BlockCrate extends BlockFalling { // Supply Crate BlockCrate.addToListWithWeight(crateList, ModItems.syringe_metal_stimpak, 10); BlockCrate.addToListWithWeight(crateList, ModItems.syringe_antidote, 5); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_revolver_iron, 9); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_revolver, 7); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_revolver_gold, 4); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_revolver_lead, 6); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_revolver_cursed, 5); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_rpg, 5); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_fatman, 1); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_mp40, 7); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_uzi, 7); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_uboinik, 7); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_lever_action, 5); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_bolt_action, 5); BlockCrate.addToListWithWeight(crateList, ModItems.grenade_generic, 8); BlockCrate.addToListWithWeight(crateList, ModItems.grenade_strong, 6); BlockCrate.addToListWithWeight(crateList, ModItems.grenade_mk2, 4); diff --git a/src/main/java/com/hbm/blocks/generic/BlockOreBasalt.java b/src/main/java/com/hbm/blocks/generic/BlockOreBasalt.java index 977051fb8..41e4a35c4 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockOreBasalt.java +++ b/src/main/java/com/hbm/blocks/generic/BlockOreBasalt.java @@ -19,7 +19,6 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; public class BlockOreBasalt extends BlockEnumMulti { @@ -65,14 +64,7 @@ public class BlockOreBasalt extends BlockEnumMulti { } @Override - public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { - int meta = world.getBlockMetadata(x, y, z); - if(meta == EnumBasaltOreType.ASBESTOS.ordinal()) for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - if(world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ) == Blocks.air) { - world.setBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, ModBlocks.gas_asbestos); - } - } - } + public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { } //no more BUD outgassing for you, mister @Override public void dropBlockAsItemWithChance(World world, int x, int y, int z, int meta, float chance, int fortune) { diff --git a/src/main/java/com/hbm/blocks/generic/BlockSupplyCrate.java b/src/main/java/com/hbm/blocks/generic/BlockSupplyCrate.java new file mode 100644 index 000000000..961032204 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockSupplyCrate.java @@ -0,0 +1,130 @@ +package com.hbm.blocks.generic; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import com.hbm.items.ModItems; + +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class BlockSupplyCrate extends BlockContainer { + + public BlockSupplyCrate(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntitySupplyCrate(); + } + + @Override public int getRenderType() { return BlockCanCrate.renderID; } + @Override public boolean isOpaqueCube() { return false; } + @Override public boolean renderAsNormalBlock() { return false; } + + @Override public Item getItemDropped(int i, Random rand, int j) { return null; } + + @Override + public boolean removedByPlayer(World world, EntityPlayer player, int x, int y, int z, boolean willHarvest) { + + if(!player.capabilities.isCreativeMode && !world.isRemote && willHarvest) { + + ItemStack drop = new ItemStack(this); + TileEntitySupplyCrate inv = (TileEntitySupplyCrate) world.getTileEntity(x, y, z); + NBTTagCompound nbt = new NBTTagCompound(); + + if(inv != null) { + for(int i = 0; i < inv.items.size(); i++) { + ItemStack stack = inv.items.get(i); + if(stack == null) continue; + NBTTagCompound slot = new NBTTagCompound(); + stack.writeToNBT(slot); + nbt.setTag("slot" + i, slot); + } + nbt.setInteger("amount", inv.items.size()); + } + + if(!nbt.hasNoTags()) drop.stackTagCompound = nbt; + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, drop)); + } + return world.setBlockToAir(x, y, z); + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { + + TileEntitySupplyCrate inv = (TileEntitySupplyCrate) world.getTileEntity(x, y, z); + + if(inv != null && stack.hasTagCompound()) { + int amount = stack.stackTagCompound.getInteger("amount"); + for(int i = 0; i < amount; i++) { + inv.items.add(ItemStack.loadItemStackFromNBT(stack.stackTagCompound.getCompoundTag("slot" + i))); + } + } + + super.onBlockPlacedBy(world, x, y, z, player, stack); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_) { + if(player.getHeldItem() != null && player.getHeldItem().getItem().equals(ModItems.crowbar)) { + if(!world.isRemote) { + dropContents(world, x, y, z); + world.func_147480_a(x, y, z, false); + world.playSoundEffect(x, y, z, "hbm:block.crateBreak", 0.5F, 1.0F); + } + return true; + } + return false; + } + + public void dropContents(World world, int x, int y, int z) { + TileEntity tile = world.getTileEntity(x, y, z); + if(tile instanceof TileEntitySupplyCrate) { + TileEntitySupplyCrate crate = (TileEntitySupplyCrate) tile; + + for(ItemStack item : crate.items) { + this.dropBlockAsItem(world, x, y, z, item); + } + } + } + + public static class TileEntitySupplyCrate extends TileEntity { + + public List items = new ArrayList(); + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + items.clear(); + NBTTagList list = nbt.getTagList("items", 10); + for(int i = 0; i < list.tagCount(); i++) { + NBTTagCompound nbt1 = list.getCompoundTagAt(i); + items.add(ItemStack.loadItemStackFromNBT(nbt1)); + } + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + NBTTagList list = new NBTTagList(); + for(int i = 0; i < items.size(); i++) { + NBTTagCompound nbt1 = new NBTTagCompound(); + items.get(i).writeToNBT(nbt1); + list.appendTag(nbt1); + } + nbt.setTag("items", list); + } + } +} diff --git a/src/main/java/com/hbm/blocks/machine/MachineAmmoPress.java b/src/main/java/com/hbm/blocks/machine/MachineAmmoPress.java index 226a16a67..b54d34e7f 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineAmmoPress.java +++ b/src/main/java/com/hbm/blocks/machine/MachineAmmoPress.java @@ -1,16 +1,15 @@ package com.hbm.blocks.machine; -import com.hbm.main.MainRegistry; +import com.hbm.blocks.BlockDummyable; +import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityMachineAmmoPress; -import cpw.mods.fml.common.network.internal.FMLNetworkHandler; -import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; -public class MachineAmmoPress extends BlockContainer { +public class MachineAmmoPress extends BlockDummyable { public MachineAmmoPress() { super(Material.iron); @@ -18,19 +17,14 @@ public class MachineAmmoPress extends BlockContainer { @Override public TileEntity createNewTileEntity(World world, int meta) { - return new TileEntityMachineAmmoPress(); + return meta >= 12 ? new TileEntityMachineAmmoPress() : new TileEntityProxyCombo().inventory(); } @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - - if(world.isRemote) { - return true; - } else if(!player.isSneaking()) { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); - return true; - } else { - return false; - } + return this.standardOpenBehavior(world, x, y, z, player, 0); } + + @Override public int[] getDimensions() { return new int[] {1, 0, 0, 0, 1, 1}; } + @Override public int getOffset() { return 0; } } diff --git a/src/main/java/com/hbm/commands/CommandReloadRecipes.java b/src/main/java/com/hbm/commands/CommandReloadRecipes.java index 8b2a939eb..402b61edb 100644 --- a/src/main/java/com/hbm/commands/CommandReloadRecipes.java +++ b/src/main/java/com/hbm/commands/CommandReloadRecipes.java @@ -3,6 +3,7 @@ package com.hbm.commands; import com.hbm.config.ItemPoolConfigJSON; import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.util.ChatBuilder; +import com.hbm.util.DamageResistanceHandler; import net.minecraft.command.CommandBase; import net.minecraft.command.ICommandSender; @@ -26,6 +27,7 @@ public class CommandReloadRecipes extends CommandBase { try { SerializableRecipe.initialize(); ItemPoolConfigJSON.initialize(); + DamageResistanceHandler.init(); sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Reload complete :)")); } catch(Exception ex) { sender.addChatMessage(ChatBuilder.start("----------------------------------").color(EnumChatFormatting.GRAY).flush()); diff --git a/src/main/java/com/hbm/config/FalloutConfigJSON.java b/src/main/java/com/hbm/config/FalloutConfigJSON.java index 039cf060e..65636f402 100644 --- a/src/main/java/com/hbm/config/FalloutConfigJSON.java +++ b/src/main/java/com/hbm/config/FalloutConfigJSON.java @@ -62,6 +62,7 @@ public class FalloutConfigJSON { entries.add(new FalloutEntry() .mB(Blocks.brown_mushroom_block).mM(10) .prim(new Triplet(ModBlocks.waste_log, 0, 1)) .max(woodEffectRange)); entries.add(new FalloutEntry() .mB(Blocks.red_mushroom_block) .prim(new Triplet(Blocks.air, 0, 1)) .max(woodEffectRange)); entries.add(new FalloutEntry() .mB(Blocks.brown_mushroom_block) .prim(new Triplet(Blocks.air, 0, 1)) .max(woodEffectRange)); + entries.add(new FalloutEntry() .mB(Blocks.snow_layer) .prim(new Triplet(Blocks.air, 0, 1)) .max(woodEffectRange)); entries.add(new FalloutEntry() .mB(Blocks.planks) .prim(new Triplet(ModBlocks.waste_planks, 0, 1)) .max(woodEffectRange)); /* if it can't be petrified, destroy it */ entries.add(new FalloutEntry() .mMa(Material.wood) .prim(new Triplet(Blocks.air, 0, 1)) .max(woodEffectRange)); diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index ad269a269..5acaa73d4 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -33,6 +33,14 @@ public class WeaponRecipes { //SEDNA Parts CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_stock, 1, Mats.MAT_WOOD.id), new Object[] { "WWW", " W", 'W', KEY_PLANKS }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_grip, 1, Mats.MAT_WOOD.id), new Object[] { "W ", " W", " W", 'W', KEY_PLANKS }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_stock, 1, Mats.MAT_POLYMER.id), new Object[] { "WWW", " W", 'W', POLYMER.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_grip, 1, Mats.MAT_POLYMER.id), new Object[] { "W ", " W", " W", 'W', POLYMER.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_stock, 1, Mats.MAT_BAKELITE.id), new Object[] { "WWW", " W", 'W', BAKELITE.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_grip, 1, Mats.MAT_BAKELITE.id), new Object[] { "W ", " W", " W", 'W', BAKELITE.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_stock, 1, Mats.MAT_HARDPLASTIC.id), new Object[] { "WWW", " W", 'W', PC.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_grip, 1, Mats.MAT_HARDPLASTIC.id), new Object[] { "W ", " W", " W", 'W', PC.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_stock, 1, Mats.MAT_PVC.id), new Object[] { "WWW", " W", 'W', PVC.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_grip, 1, Mats.MAT_PVC.id), new Object[] { "W ", " W", " W", 'W', PVC.ingot() }); CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.casing, EnumCasingType.SHOTSHELL, 2), new Object[] { "P", "C", 'P', GUNMETAL.plate(), 'C', DictFrame.fromOne(ModItems.casing, EnumCasingType.LARGE) }); CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.casing, EnumCasingType.BUCKSHOT, 2), new Object[] { "P", "C", 'P', ANY_PLASTIC.ingot(), 'C', DictFrame.fromOne(ModItems.casing, EnumCasingType.LARGE) }); @@ -41,16 +49,37 @@ public class WeaponRecipes { //SEDNA Guns CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_pepperbox, 1), new Object[] { "IIW", " C", 'I', IRON.ingot(), 'W', KEY_PLANKS, 'C', CU.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_light_revolver, 1), new Object[] { "BRM", " G", 'B', STEEL.lightBarrel(), 'R', STEEL.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_light_revolver_atlas, 1), new Object[] { " M ", "MAM", " M ", 'M', WEAPONSTEEL.mechanism(), 'A', ModItems.gun_light_revolver }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_henry, 1), new Object[] { "BRP", "BMS", 'B', STEEL.lightBarrel(), 'R', GUNMETAL.lightReceiver(), 'M', GUNMETAL.mechanism(), 'S', WOOD.stock(), 'P', GUNMETAL.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_greasegun, 1), new Object[] { "BRS", "SMG", 'B', STEEL.lightBarrel(), 'R', STEEL.lightReceiver(), 'S', STEEL.bolt(), 'M', GUNMETAL.mechanism(), 'G', STEEL.grip() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_maresleg, 1), new Object[] { "BRM", "BGS", 'B', STEEL.lightBarrel(), 'R', STEEL.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', STEEL.bolt(), 'S', WOOD.stock() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_maresleg_akimbo, 1), new Object[] { "SMS", 'S', ModItems.gun_maresleg, 'M', WEAPONSTEEL.mechanism() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_flaregun, 1), new Object[] { "BRM", " G", 'B', STEEL.heavyBarrel(), 'R', STEEL.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', STEEL.grip() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_heavy_revolver, 1), new Object[] { "BRM", " G", 'B', DURA.lightBarrel(), 'R', DURA.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_carbine, 1), new Object[] { "BRM", "G S", 'B', DURA.lightBarrel(), 'R', DURA.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip(), 'S', WOOD.stock() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_am180, 1), new Object[] { "BBR", "GMS", 'B', DURA.lightBarrel(), 'R', DURA.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip(), 'S', WOOD.stock() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_liberator, 1), new Object[] { "BB ", "BBM", "G G", 'B', DURA.lightBarrel(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_congolake, 1), new Object[] { "BM ", "BRS", "G ", 'B', DURA.heavyBarrel(), 'M', GUNMETAL.mechanism(), 'R', DURA.lightReceiver(), 'S', WOOD.stock(), 'G', WOOD.grip() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_flamer, 1), new Object[] { " MG", "BBR", " GM", 'M', GUNMETAL.mechanism(), 'G', DURA.grip(), 'B', DURA.heavyBarrel(), 'R', DURA.heavyReceiver() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_flamer_topaz, 1), new Object[] { " M ", "MFM", " M ", 'M', WEAPONSTEEL.mechanism(), 'F', ModItems.gun_flamer }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_heavy_revolver, 1), new Object[] { "BRM", " G", 'B', DESH.lightBarrel(), 'R', DESH.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_carbine, 1), new Object[] { "BRM", "G S", 'B', DESH.lightBarrel(), 'R',DESH.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip(), 'S', WOOD.stock() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi, 1), new Object[] { "BRS", " GM", 'B', DESH.lightBarrel(), 'R', DESH.lightReceiver(), 'S', ANY_PLASTIC.stock(), 'G', ANY_PLASTIC.grip(), 'M', GUNMETAL.mechanism() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi_akimbo, 1), new Object[] { "UMU", 'U', ModItems.gun_uzi, 'M', WEAPONSTEEL.mechanism() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_spas12, 1), new Object[] { "BRM", "BGS", 'B', DESH.lightBarrel(), 'R', DESH.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', ANY_PLASTIC.grip(), 'S', DESH.stock() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_panzerschreck, 1), new Object[] { "BBB", "PGM", 'B', DESH.heavyBarrel(), 'P', STEEL.plateCast(), 'G', DESH.grip(), 'M', GUNMETAL.mechanism() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_g3, 1), new Object[] { "BRM", "WGS", 'B', WEAPONSTEEL.lightBarrel(), 'R', WEAPONSTEEL.lightReceiver(), 'M', WEAPONSTEEL.mechanism(), 'W', WOOD.grip(), 'G', RUBBER.grip(), 'S', WOOD.stock() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_stinger, 1), new Object[] { "BBB", "PGM", 'B', WEAPONSTEEL.heavyBarrel(), 'P', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'G', WEAPONSTEEL.grip(), 'M', WEAPONSTEEL.mechanism() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_chemthrower, 1), new Object[] { "MHW", "PSS", 'M', WEAPONSTEEL.mechanism(), 'H', RUBBER.pipe(), 'W', ModItems.wrench, 'P', WEAPONSTEEL.heavyBarrel(), 'S', WEAPONSTEEL.shell() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_m2, 1), new Object[] { " G", "BRM", " G", 'G', WOOD.grip(), 'B', FERRO.heavyBarrel(), 'R', FERRO.heavyReceiver(), 'M', WEAPONSTEEL.mechanism() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_autoshotgun, 1), new Object[] { "BRM", "G G", 'B', FERRO.heavyBarrel(), 'R', FERRO.heavyReceiver(), 'M', WEAPONSTEEL.mechanism(), 'G', ANY_PLASTIC.grip() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_quadro, 1), new Object[] { "BCB", "BMB", "GG ", 'B', FERRO.heavyBarrel(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'M', WEAPONSTEEL.mechanism(), 'G', ANY_PLASTIC.grip() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_lag, 1), new Object[] { "BRM", " G", 'B', ANY_RESISTANTALLOY.lightBarrel(), 'R', ANY_RESISTANTALLOY.lightReceiver(), 'M', WEAPONSTEEL.mechanism(), 'G', ANY_PLASTIC.grip() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_minigun, 1), new Object[] { "BMG", "BRE", "BGM", 'B', ANY_RESISTANTALLOY.lightBarrel(), 'M', WEAPONSTEEL.mechanism(), 'G', ANY_PLASTIC.grip(), 'R', ANY_RESISTANTALLOY.heavyReceiver(), 'E', ModItems.motor_desh }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_missile_launcher, 1), new Object[] { " CM", "BBB", "G ", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'M', WEAPONSTEEL.mechanism(), 'B', ANY_RESISTANTALLOY.heavyBarrel(), 'G', ANY_PLASTIC.grip() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_tesla_cannon, 1), new Object[] { "CCC", "BRB", "MGE", 'C', ModItems.coil_advanced_alloy, 'B', ANY_RESISTANTALLOY.heavyBarrel(), 'R', ANY_RESISTANTALLOY.heavyReceiver(), 'M', WEAPONSTEEL.mechanism(), 'G', ANY_PLASTIC.grip(), 'E', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_stg77, 1), new Object[] { " D ", "BRS", "GM ", 'D', DIAMOND.gem(), 'B', BIGMT.lightBarrel(), 'R', BIGMT.lightReceiver(), 'S', ANY_HARDPLASTIC.stock(), 'G', ANY_HARDPLASTIC.grip(), 'M', BIGMT.mechanism() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_fatman, 1), new Object[] { "PPP", "BSR", "G M", 'P', BIGMT.plate(), 'B', BIGMT.heavyBarrel(), 'S', BIGMT.shell(), 'R', BIGMT.heavyReceiver(), 'G', ANY_HARDPLASTIC.grip(), 'M', BIGMT.mechanism() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_tau, 1), new Object[] { " RD", "CTT", "GMS", 'D', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BISMOID), 'C', CU.pipe(), 'T', ModItems.coil_advanced_torus, 'G', ANY_HARDPLASTIC.grip(), 'R', BIGMT.lightReceiver(), 'M', BIGMT.mechanism(), 'S', ANY_HARDPLASTIC.stock() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_lasrifle, 1), new Object[] { "LC ", "BRS", "MG ", 'L', ModItems.crystal_redstone, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BISMOID), 'B', ANY_BISMOIDBRONZE.lightBarrel(), 'R', ANY_BISMOIDBRONZE.lightReceiver(), 'S', ANY_HARDPLASTIC.stock(), 'M', BIGMT.mechanism(), 'G', ANY_HARDPLASTIC.grip() }); //SEDNA Ammo CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.STONE, 6), new Object[] { "C", "P", "G", 'C', KEY_COBBLESTONE, 'P', Items.paper, 'G', Items.gunpowder }); @@ -101,87 +130,10 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.turret_sentry, 1), new Object[] { "PPL", " MD", " SC", 'P', STEEL.plate(), 'M', ModItems.motor, 'L', ModItems.mechanism_rifle_1, 'S', ModBlocks.steel_scaffold, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'D', ModItems.crt_display }); //Guns - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_rpg, 1), new Object[] { "SSW", " MW", 'S', STEEL.shell(), 'W', IRON.plate(), 'M', ModItems.mechanism_launcher_1 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_karl, 1), new Object[] { "SSW", " MW", 'S', STEEL.shell(), 'W', ALLOY.plate(), 'M', ModItems.mechanism_launcher_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_hk69, 1), new Object[] { "SSI", " MB", 'S', STEEL.shell(), 'I', IRON.ingot(), 'M', ModItems.mechanism_launcher_1, 'B', STEEL.bolt() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver, 1), new Object[] { "SSM", " RW", 'S', STEEL.plate(), 'W', KEY_PLANKS, 'R', AL.wireFine(), 'M', ModItems.mechanism_revolver_1 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_saturnite, 1), new Object[] { "SSM", " RW", 'S', BIGMT.plate(), 'W', KEY_PLANKS, 'R', W.wireFine(), 'M', ModItems.mechanism_revolver_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_gold, 1), new Object[] { "SSM", " RW", 'S', GOLD.plate(), 'W', W.ingot(), 'R', GOLD.wireFine(), 'M', ModItems.mechanism_revolver_1 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_schrabidium, 1), new Object[] { "SSM", " RW", 'S', SA326.block(), 'W', W.ingot(), 'R', SA326.wireFine(), 'M', ModItems.mechanism_special }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_pip, 1), new Object[] { " G ", "SSP", " TI", 'G', KEY_ANYPANE, 'S', STEEL.plate(), 'P', ModItems.mechanism_revolver_2, 'T', W.wireFine(), 'I', ANY_PLASTIC.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_nopip, 1), new Object[] { "SSP", " TI", 'S', STEEL.plate(), 'P', ModItems.mechanism_revolver_2, 'T', W.wireFine(), 'I', ANY_PLASTIC.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_blackjack, 1), new Object[] { "SSP", " TI", 'S', STEEL.plate(), 'P', ModItems.mechanism_revolver_2, 'T', W.wireFine(), 'I', KEY_PLANKS }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_silver, 1), new Object[] { "SSP", " TI", 'S', AL.plate(), 'P', ModItems.mechanism_revolver_2, 'T', W.wireFine(), 'I', KEY_PLANKS }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_red, 1), new Object[] { "R ", " B", 'R', ModItems.key_red, 'B', ModItems.gun_revolver_blackjack }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_deagle, 1), new Object[] { "PPM", " BI", 'P', STEEL.plate(), 'B', STEEL.bolt(), 'I', ANY_PLASTIC.ingot(), 'M', ModItems.mechanism_rifle_1 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uac_pistol, 1), new Object[] { "IIM", " BI", 'B', DURA.bolt(), 'I', ANY_PLASTIC.ingot(), 'M', ModItems.mechanism_rifle_1 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_cursed, 1), new Object[] { "TTM", "SRI", 'S', STEEL.plate(), 'I', STEEL.ingot(), 'R', MINGRADE.wireFine(), 'T', TI.plate(), 'M', ModItems.mechanism_revolver_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_nightmare, 1), new Object[] { "SEM", " RW", 'S', STEEL.plate(), 'W', KEY_PLANKS, 'R', AL.wireFine(), 'E', ModItems.powder_power, 'M', ModItems.mechanism_revolver_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_nightmare2, 1), new Object[] { "SSM", "RRW", 'S', OreDictManager.getReflector(), 'W', W.ingot(), 'R', GOLD.wireFine(), 'M', ModItems.mechanism_special }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_bio_revolver, 1), new Object[] { "SSM", "BTW", 'S', STEEL.plate(), 'M', ModItems.mechanism_revolver_2, 'B', B.ingot(), 'T', W.bolt(), 'W', KEY_LOG }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_chemthrower, 1), new Object[] { "RWC", "HHT", "RLC", 'R', RUBBER.ingot(), 'W', ModItems.wrench, 'C', CU.plate(), 'H', STEEL.shell(), 'T', ModItems.tank_steel, 'L', ModItems.mechanism_launcher_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mirv, 1), new Object[] { "LLL", "WFW", "SSS", 'S', STEEL.plate(), 'L', PB.plate(), 'W', GOLD.wireFine(), 'F', ModItems.gun_fatman }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_proto, 1), new Object[] { "LLL", "WFW", "SSS", 'S', ANY_RUBBER.ingot(), 'L', ModItems.plate_desh, 'W', W.wireFine(), 'F', ModItems.gun_fatman }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_nuke, 1, AmmoFatman.BALEFIRE.ordinal()), new Object[] { " S ", "EBE", " S ", 'S', STEEL.shell(), 'E', ModItems.powder_power, 'B', ModItems.egg_balefire_shard }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mp40, 1), new Object[] { "IIM", " SW", " S ", 'S', STEEL.plate(), 'I', STEEL.ingot(), 'W', KEY_PLANKS, 'M', ModItems.mechanism_rifle_1 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_thompson, 1), new Object[] { "IIM", " SW", " S ", 'S', IRON.plate(), 'I', STEEL.plate(), 'W', KEY_PLANKS, 'M', ModItems.mechanism_rifle_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_flechette, 1), new Object[] { "PPM", "TIS", "G ", 'P', STEEL.plate(), 'M', ModItems.mechanism_rifle_2, 'T', STEEL.shell(), 'I', STEEL.ingot(), 'S', ANY_PLASTIC.ingot(), 'G', ModItems.mechanism_launcher_1 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uboinik, 1), new Object[] { "IIM", "SPW", 'P', STEEL.plate(), 'I', STEEL.ingot(), 'W', KEY_PLANKS, 'S', KEY_STICK, 'M', ModItems.mechanism_revolver_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_supershotgun, 1), new Object[] { "BBM", "BBM", "AWL", 'B', STEEL.pipe(), 'M', ModItems.mechanism_rifle_2, 'A', ModItems.plate_dalekanium, 'W', GOLD.wireFine(), 'L', KEY_LOG }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_ks23, 1), new Object[] { "PPM", "SWL", 'P', STEEL.plate(), 'M', ModItems.mechanism_rifle_1, 'S', KEY_STICK, 'W', W.wireFine(), 'L', KEY_LOG }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.gun_sauer, 1), new Object[] { ModItems.ducttape, ModItems.gun_ks23, Blocks.lever, ModItems.gun_ks23 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_xvl1456, 1), new Object[] { "PBB", "ACC", "PRY", 'P', STEEL.plate(), 'R', ModItems.redcoil_capacitor, 'A', ModItems.coil_advanced_alloy, 'B', ModItems.battery_generic, 'C', ModItems.coil_advanced_torus, 'Y', ModItems.mechanism_special }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_xvl1456_ammo, 16), new Object[] { " S ", "SRS", " S ", 'S', STEEL.plate(), 'R', ModItems.waste_natural_uranium }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_xvl1456_ammo, 16), new Object[] { " S ", "SRS", " S ", 'S', STEEL.plate(), 'R', ModItems.waste_uranium }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_xvl1456_ammo, 20), new Object[] { " S ", " R ", " S ", 'S', STEEL.plate(), 'R', ModItems.waste_plate_u235 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_xvl1456_ammo, 16), new Object[] { "SRS", 'S', STEEL.plate(), 'R', ModItems.waste_u235 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_xvl1456_ammo, 16), new Object[] { " S ", " R ", " S ", 'S', STEEL.plate(), 'R', U238.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_xvl1456_ammo, 16), new Object[] { "SRS", 'S', STEEL.plate(), 'R', U238.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_osipr, 1), new Object[] { "CCT", "WWI", "MCC", 'C', CMB.plate(), 'T', W.ingot(), 'W', MAGTUNG.wireFine(), 'I', ModItems.mechanism_rifle_2, 'M', ModItems.coil_magnetized_tungsten }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_immolator, 1), new Object[] { "WCC", "PMT", "WAA", 'W', GOLD.wireFine(), 'C', CU.plate(), 'P', ALLOY.plate(), 'M', ModItems.mechanism_launcher_1, 'T', ModItems.tank_steel, 'A', STEEL.plate() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_immolator_ammo, 16), new Object[] { "SPS", "PCP", "SPS", 'S', STEEL.plate(), 'C', COAL.dust(), 'P', P_RED.dust() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_immolator_ammo, 16), new Object[] { " F ", "SFS", " F ", 'S', STEEL.plate(), 'F', Fluids.DIESEL.getDict(1000) }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_immolator_ammo, 24), new Object[] { " F ", "SFS", " F ", 'S', STEEL.plate(), 'F', ModItems.canister_napalm }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_cryolator, 1), new Object[] { "SSS", "IWL", "LMI", 'S', STEEL.plate(), 'I', IRON.plate(), 'L', Items.leather, 'M', ModItems.mechanism_launcher_1, 'W', AL.wireFine() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_cryolator_ammo, 16), new Object[] { "SPS", "PCP", "SPS", 'S', STEEL.plate(), 'C', KNO.dust(), 'P', Items.snowball }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_cryolator_ammo, 16), new Object[] { " F ", "SFS", " F ", 'S', STEEL.plate(), 'F', ModItems.powder_ice }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mp, 1), new Object[] { "EEE", "SSM", "III", 'E', EUPH.ingot(), 'S', STEEL.plate(), 'I', STEEL.ingot(), 'M', ModItems.mechanism_rifle_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_emp, 1), new Object[] { "CPG", "CMF", "CPI", 'C', ModItems.coil_copper, 'P', PB.plate(), 'G', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'M', ModItems.magnetron, 'I', W.ingot(), 'F', ModItems.mechanism_special }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_emp_ammo, 8), new Object[] { "IGI", "IPI", "IPI", 'G', GOLD.plate(), 'I', IRON.plate(), 'P', ModItems.powder_power }); - //CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_jack, 1), new Object[] { "WW ", "TSD", " TT", 'W', "ingotWeidanium", 'T', ModItems.toothpicks, 'S', ModItems.gun_uboinik, 'D', ModItems.ducttape }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.gun_jack_ammo, 1), new Object[] { ModItems.ammo_12gauge, ModItems.ammo_12gauge, ModItems.ammo_12gauge, ModItems.ammo_12gauge }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_euthanasia, 1), new Object[] { "TDT", "AAS", " T ", 'A', AUSTRALIUM.ingot(), 'T', ModItems.toothpicks, 'S', ModItems.gun_mp40, 'D', ModItems.ducttape }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_euthanasia_ammo, 12), new Object[] { "P", "S", "N", 'P', ModItems.powder_poison, 'N', KNO.dust(), 'S', ModItems.syringe_metal_empty }); - //CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_spark, 1), new Object[] { "TTD", "AAS", " T", 'A', "ingotDaffergon", 'T', ModItems.toothpicks, 'S', ModItems.gun_rpg, 'D', ModItems.ducttape }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_spark_ammo, 4), new Object[] { "PCP", "DDD", "PCP", 'P', PB.plate(), 'C', ModItems.coil_gold, 'D', ModItems.powder_power }); - //CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_skystinger, 1), new Object[] { "TTT", "AAS", " D ", 'A', "ingotUnobtainium", 'T', ModItems.toothpicks, 'S', ModItems.gun_stinger, 'D', ModItems.ducttape }); - //CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_hp, 1), new Object[] { "TDT", "ASA", " T ", 'A', "ingotReiium", 'T', ModItems.toothpicks, 'S', ModItems.gun_xvl1456, 'D', ModItems.ducttape }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_hp_ammo, 8), new Object[] { " R ", "BSK", " Y ", 'S', STEEL.plate(), 'K', KEY_BLACK, 'R', KEY_RED, 'B', KEY_BLUE, 'Y', KEY_YELLOW }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_defabricator_ammo, 16), new Object[] { "PCP", "DDD", "PCP", 'P', STEEL.plate(), 'C', ModItems.coil_copper, 'D', LI.dust() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_lever_action, 1), new Object[] { "PPI", "SWD", 'P', IRON.plate(), 'I', ModItems.mechanism_rifle_1, 'S', KEY_STICK, 'D', KEY_PLANKS, 'W', STEEL.wireFine() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_lever_action_dark, 1), new Object[] { "PPI", "SWD", 'P', STEEL.plate(), 'I', ModItems.mechanism_rifle_1, 'S', KEY_STICK, 'D', KEY_PLANKS, 'W', STEEL.wireFine() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_bolt_action, 1), new Object[] { "PPI", "SWD", 'P', STEEL.plate(), 'I', ModItems.mechanism_rifle_1, 'S', KEY_STICK, 'D', KEY_PLANKS, 'W', CU.wireFine() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_bolt_action_green, 1), new Object[] { "PPI", "SWD", 'P', IRON.plate(), 'I', ModItems.mechanism_rifle_1, 'S', KEY_STICK, 'D', KEY_PLANKS, 'W', CU.wireFine() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_bolt_action_saturnite, 1), new Object[] { "PPI", "SWD", 'P', BIGMT.plate(), 'I', ModItems.mechanism_rifle_1, 'S', KEY_STICK, 'D', KEY_PLANKS, 'W', W.wireFine() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_b92), new Object[] { "DDD", "SSC", " R", 'D', ModItems.plate_dineutronium, 'S', STAR.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BISMOID), 'R', ModItems.gun_revolver_schrabidium }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_b93), new Object[] { "PCE", "SEB", "PCE", 'P', ModItems.plate_dineutronium, 'C', ModItems.weaponized_starblaster_cell, 'E', ModItems.component_emitter, 'B', ModItems.gun_b92, 'S', ModItems.singularity_spark }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_b92), new Object[] { "DDD", "SSC", " R", 'D', ModItems.plate_dineutronium, 'S', STAR.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BISMOID), 'R', ModItems.gun_lasrifle }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_b92_ammo, 1), new Object[] { "PSP", "ESE", "PSP", 'P', STEEL.plate(), 'S', STAR.ingot(), 'E', ModItems.powder_spark_mix }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.weaponized_starblaster_cell, 1), new Object[] { new ItemStack(ModItems.fluid_tank_full, 1, Fluids.PEROXIDE.getID()), GunB92Cell.getFullCell(), CU.wireFine() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi_silencer, 1), new Object[] { "P ", " P ", " U", 'P', ANY_PLASTIC.ingot(), 'U', ModItems.gun_uzi }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi_saturnite, 1), new Object[] { "SMS", " PB", " P ", 'S', BIGMT.ingot(), 'M', ModItems.mechanism_rifle_2, 'P', BIGMT.plate(), 'B', W.bolt() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi_saturnite_silencer, 1), new Object[] { "P ", " P ", " U", 'P', ANY_PLASTIC.ingot(), 'U', ModItems.gun_uzi_saturnite }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_bolter, 1), new Object[] { "SSM", "PIP", " I ", 'S', BIGMT.plate(), 'I', BIGMT.ingot(), 'M', ModItems.mechanism_special, 'P', ANY_PLASTIC.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_calamity, 1), new Object[] { " PI", "BBM", " PI", 'P', IRON.plate(), 'B', STEEL.pipe(), 'M', ModItems.mechanism_rifle_1, 'I', STEEL.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_m2, 1), new Object[] { " PI", "BBM", " PI", 'P', STEEL.plate(), 'B', STEEL.pipe(), 'M', ModItems.mechanism_rifle_2, 'I', STEEL.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_lacunae, 1), new Object[] { "TIT", "ILI", "PRP", 'T', ModItems.syringe_taint, 'I', STAR.ingot(), 'L', ModItems.gun_minigun, 'P', ModItems.pellet_rtg, 'R', ModBlocks.machine_rtg_grey }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mymy, 1), new Object[] { "PP ", " WP", 'P', ANY_RUBBER.ingot(), 'W', STEEL.wireFine() }); - //CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_darter, 1), new Object[] { "SST", " P", 'S', STEEL.plate(), 'T', ModItems.gas_empty, 'P', ANY_PLASTIC.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_fireext, 1), new Object[] { "HB", " T", 'H', STEEL.pipe(), 'B', STEEL.bolt(), 'T', ModItems.tank_steel }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_spas12, 1), new Object[] { "TPS", "HHR", " L", 'T', STEEL.bolt(), 'P', STEEL.plate(), 'S', STEEL.ingot(), 'H', STEEL.pipe(), 'R', ModItems.mechanism_rifle_1, 'L', ANY_PLASTIC.ingot()}); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_glass_cannon, 1), new Object[] { "GGC", "GTM", 'G', Item.getItemFromBlock(ModBlocks.glass_quartz), 'C', ModItems.battery_lithium_cell, 'T', ModItems.crt_display, 'M', ModItems.mechanism_special }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_remington, 1), new Object[] { "PPM", "S L", 'P', STEEL.plate(), 'M', ModItems.mechanism_rifle_1, 'S', KEY_SLAB, 'L', KEY_LOG }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_benelli), new Object[] { "HHP", "SSM", "AAP", 'H', ModItems.ingot_dura_steel, 'S', STEEL.pipe(), 'A', AL.pipe(), 'P', ANY_PLASTIC.ingot(), 'M', ModItems.mechanism_rifle_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_lunatic_marksman), new Object[] { " GN", "SSM", " A", 'G', KEY_ANYPANE, 'N', ModItems.powder_nitan_mix, 'S', BIGMT.plate(), 'M', ModItems.mechanism_special, 'A', ANY_RESISTANTALLOY.plateCast() }); //TODO: somehow add more variance, 4 gauge is still missing CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_22lr, 16), new Object[] { ModItems.nitra_small }); @@ -200,54 +152,8 @@ public class WeaponRecipes { //Ammo assemblies CraftingManager.addRecipeAuto(new ItemStack(ModItems.pellet_flechette, 1), new Object[] { " L ", " L ", "LLL", 'L', PB.nugget() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.pellet_claws, 1), new Object[] { " X ", "X X", " XX", 'X', STEEL.plate() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_iron, 1), new Object[] { " I", "GC", 'I', IRON.ingot(), 'G', ANY_GUNPOWDER.dust(), 'C', ModItems.casing_357 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_steel, 1), new Object[] { " I", "GC", 'I', PB.ingot(), 'G', ANY_GUNPOWDER.dust(), 'C', ModItems.casing_357 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_lead, 1), new Object[] { " I", "GC", 'I', U235.ingot(), 'G', ModItems.cordite, 'C', KEY_CLEARGLASS }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_lead, 1), new Object[] { " I", "GC", 'I', PU239.ingot(), 'G', ModItems.cordite, 'C', KEY_CLEARGLASS }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_lead, 1), new Object[] { " I", "GC", 'I', ModItems.trinitite, 'G', ModItems.cordite, 'C', KEY_CLEARGLASS }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_lead, 1), new Object[] { " I", "GC", 'I', ModItems.nuclear_waste_tiny, 'G', ModItems.cordite, 'C', KEY_CLEARGLASS }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_gold, 1), new Object[] { " I", "GC", 'I', GOLD.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_357 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_schrabidium, 1), new Object[] { " I ", "GCN", 'I', SA326.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_357, 'N', ModItems.billet_yharonite }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_nightmare, 1), new Object[] { " I", "GC", 'I', W.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_357 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_desh, 1), new Object[] { " I", "GC", 'I', DESH.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_357 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_smg, 1), new Object[] { " I", "GC", 'I', PB.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_9 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_556, 1), new Object[] { " I", "GC", 'I', STEEL.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_9 }); - CraftingManager.addRecipeAuto(ModItems.ammo_556.stackFromEnum(30, Ammo556mm.K), new Object[] { "G", "C", 'G', ANY_GUNPOWDER.dust(), 'C', ModItems.casing_9 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_uzi, 1), new Object[] { " I", "GC", 'I', IRON.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_9 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_lacunae, 1), new Object[] { " I", "GC", 'I', CU.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_9 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_nopip, 1), new Object[] { " I", "GC", 'I', PB.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_44 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_12gauge, 12), new Object[] { " I ", "GCL", 'I', ModItems.pellet_buckshot, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot, 'L', ANY_RUBBER.ingot() }); - CraftingManager.addRecipeAuto(ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.PERCUSSION), new Object[] { "G", "C", 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_4gauge, 12), new Object[] { " I ", "GCL", 'I', ModItems.pellet_buckshot, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ANY_RUBBER.ingot() }); - CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.SLUG), new Object[] { " I ", "GCL", 'I', STEEL.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ANY_RUBBER.ingot() }); - CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.FLECHETTE), new Object[] { " I ", "GCL", 'I', ModItems.pellet_flechette, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ANY_RUBBER.ingot() }); - CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.EXPLOSIVE), new Object[] { " I ", "GCL", 'I', ModBlocks.tnt, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ANY_RUBBER.ingot() }); - CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(6, Ammo4Gauge.EXPLOSIVE), new Object[] { " I ", "GCL", 'I', ANY_PLASTICEXPLOSIVE.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ANY_RUBBER.ingot() }); - CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.MINING), new Object[] { " I ", "GCL", 'I', ModBlocks.det_miner, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ANY_RUBBER.ingot() }); - CraftingManager.addShapelessAuto(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.QUACK), new Object[] { ModItems.ammo_4gauge, ModItems.nugget_bismuth, ModItems.nugget_tantalium, ModItems.ball_dynamite }); - CraftingManager.addRecipeAuto(ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), new Object[] { " I ", "GCL", 'I', ModItems.pellet_buckshot, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot, 'L', CU.plate() }); - CraftingManager.addRecipeAuto(ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.SLUG), new Object[] { " I ", "GCL", 'I', PB.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot, 'L', CU.plate() }); - CraftingManager.addRecipeAuto(ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.EXPLOSIVE), new Object[] { " I ", "GCL", 'I', ModItems.pellet_cluster, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot, 'L', CU.plate() }); - CraftingManager.addRecipeAuto(ModItems.ammo_20gauge.stackFromEnum(20, Ammo20Gauge.FLECHETTE), new Object[] { " I ", "GCL", 'I', ModItems.pellet_flechette, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot, 'L', CU.plate() }); - CraftingManager.addRecipeAuto(ModItems.ammo_357.stackFromEnum(6, Ammo357Magnum.NIGHTMARE2), new Object[] { "I", "C", 'I', ModItems.powder_power, 'C', ModItems.casing_buckshot }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_calamity, 1), new Object[] { " I ", "GCG", 'I', PB.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_actionexpress, 1), new Object[] { " I", "GC", 'I', PB.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_nuke, 1), new Object[] { " WP", "SEP", " WP", 'W', STEEL.wireFine(), 'P', STEEL.plate(), 'S', STEEL.shell(), 'E', ANY_HIGHEXPLOSIVE.ingot() }); - CraftingManager.addRecipeAuto(ModItems.ammo_dart.stackFromEnum(16, AmmoDart.GPS), new Object[] { "IPI", "ICI", "IPI", 'I', ANY_RUBBER.ingot(), 'P', IRON.plate(), 'C', new ItemStack(ModItems.fluid_tank_lead_full, 1, Fluids.WATZ.getID()) }); - CraftingManager.addRecipeAuto(ModItems.ammo_dart.stackFromEnum(16, AmmoDart.NERF), new Object[] { "I", "I", 'I', ANY_RUBBER.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_45, 1), " I", "GC", 'I', CU.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_44); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_762, 1), " I", "GC", 'I', CU.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_luna, 1), new Object[] { " B ", "GCG", "GPG", 'B', FERRO.ingot(), 'G', ModItems.powder_nitan_mix, 'C', ModItems.casing_50, 'P', ModItems.powder_power}); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_nuke, 1), new Object[] { " WP", "SEP", " WP", 'W', GOLD.wireFine(), 'P', STEEL.plate(), 'S', STEEL.shell(), 'E', ModItems.ball_tatb }); - //Folly shells - CraftingManager.addRecipeAuto(new ItemStack(ModItems.folly_bullet, 1), new Object[] { " S ", "STS", "SMS", 'S', STAR.ingot(), 'T', ModItems.powder_magic, 'M', ModBlocks.block_meteor }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.folly_bullet_nuclear, 1), new Object[] { " N ", "UTU", "UTU", 'N', ModItems.ammo_nuke, 'U', IRON.ingot(), 'T', W.block() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.folly_bullet_du, 1), new Object[] { " U ", "UDU", "UTU", 'U', U238.block(), 'D', DESH.block(), 'T', W.block() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.folly_shell, 1), new Object[] { "IPI", "IPI", "IMI", 'I', IRON.ingot(), 'P', IRON.plate(), 'M', ANY_SMOKELESS.dust() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_folly, 1), new Object[] { " B ", "MEM", " S ", 'B', ModItems.folly_bullet, 'M', ModItems.powder_magic, 'E', ModItems.powder_power, 'S', ModItems.folly_shell }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_folly_nuclear, 1), new Object[] { " B ", "EEE", " S ", 'B', ModItems.folly_bullet_nuclear, 'E', ModBlocks.det_charge, 'S', ModItems.folly_shell }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_folly_du, 1), new Object[] { " B ", "EEE", " S ", 'B', ModItems.folly_bullet_du, 'E', ModBlocks.det_charge, 'S', ModItems.folly_shell }); - //Rockets CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket, 1), new Object[] { "T", "C", "G", 'T', ModItems.ball_dynamite, 'G', ModItems.rocket_fuel, 'C', STEEL.shell() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket, 2), new Object[] { "T", "C", "G", 'T', ANY_PLASTICEXPLOSIVE.ingot(), 'G', ModItems.rocket_fuel, 'C', STEEL.shell() }); @@ -406,9 +312,9 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_null, 1), new Object[] { "BAB", "AGA", "BAB", 'G', ModItems.grenade_if_generic, 'A', ModItems.undefined, 'B', BIGMT.ingot() }); //Mines - CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.mine_ap, 4), new Object[] { "C", "P", "T", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'P', IRON.plate(), 'T', ANY_PLASTICEXPLOSIVE.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.mine_ap, 4), new Object[] { "I", "C", "S", 'I', ModItems.plate_polymer, 'C', ANY_SMOKELESS.dust(), 'S', STEEL.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.mine_shrap, 1), new Object[] { "L", "M", 'M', ModBlocks.mine_ap, 'L', ModItems.pellet_buckshot }); CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.mine_he, 1), new Object[] { " C ", "PTP", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'P', STEEL.plate(), 'T', ANY_HIGHEXPLOSIVE.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.mine_shrap, 2), new Object[] { "LLL", " C ", "PTP", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'P', STEEL.plate(), 'T', ModBlocks.det_cord, 'L', ModItems.pellet_buckshot }); CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.mine_fat, 1), new Object[] { "CDN", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ANALOG), 'D', ModItems.ducttape, 'N', ModItems.ammo_nuke }); //Nuke parts diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index 352e85ca4..76c27234b 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -124,6 +124,7 @@ public class EntityMappings { addEntity(EntityGrenadePC.class, "entity_grenade_pink_cloud", 250); addEntity(EntityGrenadeCloud.class, "entity_grenade_cloud", 250); addEntity(EntityBomber.class, "entity_bomber", 1000); + addEntity(EntityC130.class, "entity_c130", 1000); addEntity(EntityBombletZeta.class, "entity_zeta", 1000); addEntity(EntityOrangeFX.class, "entity_agent_orange", 1000); addEntity(EntityDeathBlast.class, "entity_laser_blast", 1000); @@ -148,6 +149,7 @@ public class EntityMappings { addEntity(EntityFallingNuke.class, "entity_falling_bomb", 1000); addEntity(EntityBulletBaseNT.class, "entity_bullet_mk3", 250, false); addEntity(EntityBulletBaseMK4.class, "entity_bullet_mk4", 250, false); + addEntity(EntityBulletBaseMK4CL.class, "entity_bullet_mk4_cl", 250, false); addEntity(EntityBulletBeamBase.class, "entity_beam_mk4", 250, false); addEntity(EntityMinerRocket.class, "entity_miner_lander", 1000); addEntity(EntityFogFX.class, "entity_nuclear_fog", 1000); @@ -163,6 +165,7 @@ public class EntityMappings { addEntity(EntityBuilding.class, "entity_falling_building", 1000); addEntity(EntitySoyuz.class, "entity_soyuz", 1000); addEntity(EntitySoyuzCapsule.class, "entity_soyuz_capsule", 1000); + addEntity(EntityParachuteCrate.class, "entity_parachute_crate", 1000); addEntity(EntityMovingItem.class, "entity_c_item", 1000); addEntity(EntityMovingPackage.class, "entity_c_package", 1000); addEntity(EntityDeliveryDrone.class, "entity_delivery_drone", 250, false); @@ -251,6 +254,7 @@ public class EntityMappings { addMob(EntityGlyphidDigger.class, "entity_glyphid_digger", 0x273038, 0x724A21); addMob(EntityPlasticBag.class, "entity_plastic_bag", 0xd0d0d0, 0x808080); addMob(EntityParasiteMaggot.class, "entity_parasite_maggot", 0xd0d0d0, 0x808080); + addMob(EntityDummy.class, "entity_ntm_test_dummy", 0xffffff, 0x000000); addSpawn(EntityCreeperPhosgene.class, 5, 1, 1, EnumCreatureType.monster, BiomeGenBase.getBiomeGenArray()); addSpawn(EntityCreeperVolatile.class, 10, 1, 1, EnumCreatureType.monster, BiomeGenBase.getBiomeGenArray()); diff --git a/src/main/java/com/hbm/entity/effect/EntityFireLingering.java b/src/main/java/com/hbm/entity/effect/EntityFireLingering.java index 2c101d471..1aef970e4 100644 --- a/src/main/java/com/hbm/entity/effect/EntityFireLingering.java +++ b/src/main/java/com/hbm/entity/effect/EntityFireLingering.java @@ -19,6 +19,7 @@ public class EntityFireLingering extends Entity { public static int TYPE_DIESEL = 0; public static int TYPE_BALEFIRE = 1; + public static int TYPE_PHOSPHORUS = 2; public int maxAge = 150; public EntityFireLingering(World world) { @@ -72,6 +73,7 @@ public class EntityFireLingering extends Entity { EntityLivingBase livng = (EntityLivingBase) e; HbmLivingProps props = HbmLivingProps.getData(livng); if(this.getType() == this.TYPE_DIESEL) if(props.fire < 60) props.fire = 60; + if(this.getType() == this.TYPE_PHOSPHORUS) if(props.fire < 300) props.fire = 300; if(this.getType() == this.TYPE_BALEFIRE) if(props.balefire < 100) props.balefire = 100; } else { e.setFire(4); @@ -88,6 +90,7 @@ public class EntityFireLingering extends Entity { MovingObjectPosition mop = worldObj.func_147447_a(up, down, false, true, true); if(mop != null && mop.typeOfHit == mop.typeOfHit.BLOCK) down = mop.hitVec; if(this.getType() == this.TYPE_DIESEL) FlameCreator.composeEffectClient(worldObj, x, down.yCoord, z, FlameCreator.META_FIRE); + if(this.getType() == this.TYPE_PHOSPHORUS) FlameCreator.composeEffectClient(worldObj, x, down.yCoord, z, FlameCreator.META_FIRE); if(this.getType() == this.TYPE_BALEFIRE) FlameCreator.composeEffectClient(worldObj, x, down.yCoord, z, FlameCreator.META_BALEFIRE); } } diff --git a/src/main/java/com/hbm/entity/item/EntityDroneBase.java b/src/main/java/com/hbm/entity/item/EntityDroneBase.java index f7d12a9e2..b6e269869 100644 --- a/src/main/java/com/hbm/entity/item/EntityDroneBase.java +++ b/src/main/java/com/hbm/entity/item/EntityDroneBase.java @@ -103,14 +103,12 @@ public abstract class EntityDroneBase extends Entity { if(this.targetY != -1) { Vec3 dist = Vec3.createVectorHelper(targetX - posX, targetY - posY, targetZ - posZ); - double speed = getSpeed(); + double speed = Math.min(getSpeed(), dist.lengthVector()); - if(dist.lengthVector() >= speed) { - dist = dist.normalize(); - this.motionX = dist.xCoord * speed; - this.motionY = dist.yCoord * speed; - this.motionZ = dist.zCoord * speed; - } + dist = dist.normalize(); + this.motionX = dist.xCoord * speed; + this.motionY = dist.yCoord * speed; + this.motionZ = dist.zCoord * speed; } if(isCollidedHorizontally){ motionY += 1; diff --git a/src/main/java/com/hbm/entity/item/EntityParachuteCrate.java b/src/main/java/com/hbm/entity/item/EntityParachuteCrate.java new file mode 100644 index 000000000..b18195288 --- /dev/null +++ b/src/main/java/com/hbm/entity/item/EntityParachuteCrate.java @@ -0,0 +1,75 @@ +package com.hbm.entity.item; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockSupplyCrate.TileEntitySupplyCrate; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.Entity; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.world.World; + +public class EntityParachuteCrate extends Entity { + + public List items = new ArrayList(); + + public EntityParachuteCrate(World world) { + super(world); + this.ignoreFrustumCheck = true; + this.isImmuneToFire = true; + } + + @Override + public void onUpdate() { + + this.lastTickPosX = this.prevPosX = posX; + this.lastTickPosY = this.prevPosY = posY; + this.lastTickPosZ = this.prevPosZ = posZ; + this.setPosition(posX + this.motionX, posY + this.motionY, posZ + this.motionZ); + + if(this.motionY > -0.2) this.motionY -= 0.02; + if(posY > 600) posY = 600; + + if(this.worldObj.getBlock((int) Math.floor(this.posX), (int) Math.floor(this.posY), (int) Math.floor(this.posZ)) != Blocks.air) { + + this.setDead(); + + if(!worldObj.isRemote) { + + worldObj.setBlock((int) Math.floor(this.posX), (int) Math.floor(this.posY + 1), (int) Math.floor(this.posZ), ModBlocks.crate_supply); + TileEntitySupplyCrate crate = (TileEntitySupplyCrate) worldObj.getTileEntity((int) Math.floor(this.posX), (int) Math.floor(this.posY + 1), (int) Math.floor(this.posZ)); + if(crate != null) crate.items.addAll(this.items); + } + } + } + + @Override protected void entityInit() { } + @Override @SideOnly(Side.CLIENT) public boolean isInRangeToRenderDist(double distance) { return true; } + + @Override + public void readEntityFromNBT(NBTTagCompound nbt) { + items.clear(); + NBTTagList list = nbt.getTagList("items", 10); + for(int i = 0; i < list.tagCount(); i++) { + NBTTagCompound nbt1 = list.getCompoundTagAt(i); + items.add(ItemStack.loadItemStackFromNBT(nbt1)); + } + } + + @Override + public void writeEntityToNBT(NBTTagCompound nbt) { + NBTTagList list = new NBTTagList(); + for(int i = 0; i < items.size(); i++) { + NBTTagCompound nbt1 = new NBTTagCompound(); + items.get(i).writeToNBT(nbt1); + list.appendTag(nbt1); + } + nbt.setTag("items", list); + } +} diff --git a/src/main/java/com/hbm/entity/item/EntityRequestDrone.java b/src/main/java/com/hbm/entity/item/EntityRequestDrone.java index 9a63c5dfd..6e8a742a1 100644 --- a/src/main/java/com/hbm/entity/item/EntityRequestDrone.java +++ b/src/main/java/com/hbm/entity/item/EntityRequestDrone.java @@ -199,7 +199,7 @@ public class EntityRequestDrone extends EntityDroneBase { @Override public double getSpeed() { - return 0.6D; + return 0.625D; } @Override diff --git a/src/main/java/com/hbm/entity/logic/EntityBomber.java b/src/main/java/com/hbm/entity/logic/EntityBomber.java index 25cc3acb4..1fcb7bbb7 100644 --- a/src/main/java/com/hbm/entity/logic/EntityBomber.java +++ b/src/main/java/com/hbm/entity/logic/EntityBomber.java @@ -1,516 +1,275 @@ package com.hbm.entity.logic; -import java.util.ArrayList; -import java.util.List; - import com.hbm.config.GeneralConfig; import com.hbm.entity.projectile.EntityBombletZeta; import com.hbm.entity.projectile.EntityBoxcar; import com.hbm.entity.projectile.EntityRocketHoming; import com.hbm.explosion.ExplosionChaos; -import com.hbm.explosion.ExplosionLarge; -import com.hbm.lib.ModDamageSource; +import com.hbm.interfaces.NotableComments; import com.hbm.main.MainRegistry; -import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.toclient.LoopedEntitySoundPacket; -import com.hbm.util.ParticleUtil; +import com.hbm.sound.AudioWrapper; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.Entity; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; -import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.World; -import net.minecraftforge.common.ForgeChunkManager; -import net.minecraftforge.common.ForgeChunkManager.Ticket; -import net.minecraftforge.common.ForgeChunkManager.Type; -public class EntityBomber extends Entity implements IChunkLoader { +@NotableComments +public class EntityBomber extends EntityPlaneBase { - int timer = 200; + /* This was probably the dumbest fucking way that I could have handled this. Not gonna change it now, be glad I made a superclass at all. */ int bombStart = 75; int bombStop = 125; int bombRate = 3; int type = 0; - - public int health = 50; - public EntityBomber(World p_i1582_1_) { - super(p_i1582_1_); + protected AudioWrapper audio; + + public EntityBomber(World world) { + super(world); this.ignoreFrustumCheck = true; - this.setSize(8.0F, 4.0F); + this.setSize(8.0F, 4.0F); + } + + @Override + public void entityInit() { + super.entityInit(); + this.dataWatcher.addObject(16, Byte.valueOf((byte) 0)); } - public boolean canBeCollidedWith() - { - return this.health > 0; - } - - public boolean attackEntityFrom(DamageSource p_70097_1_, float p_70097_2_) - { - if(p_70097_1_ == ModDamageSource.nuclearBlast) - return false; - - if (this.isEntityInvulnerable()) - { - return false; - } - else - { - if (!this.isDead && !this.worldObj.isRemote && this.health > 0) - { - health -= p_70097_2_; - - if (this.health <= 0) - { - this.killBomber(); - } - } - - return true; - } - } - - private void killBomber() { - ExplosionLarge.explode(worldObj, posX, posY, posZ, 5, true, false, true); - worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "hbm:entity.planeShotDown", 25.0F, 1.0F); - } - + /** This sucks balls. Too bad! */ @Override public void onUpdate() { + super.onUpdate(); - //super.onUpdate(); - - this.lastTickPosX = this.prevPosX = posX; - this.lastTickPosY = this.prevPosY = posY; - this.lastTickPosZ = this.prevPosZ = posZ; - - this.setPosition(posX + motionX, posY + motionY, posZ + motionZ); - - if(!worldObj.isRemote) { - - this.dataWatcher.updateObject(17, health); - - if(health > 0) - PacketDispatcher.wrapper.sendToAllAround(new LoopedEntitySoundPacket(this.getEntityId()), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 250)); - } else { - health = this.dataWatcher.getWatchableObjectInt(17); - } - - this.rotation(); - - if(this.health <= 0) { - motionY -= 0.025; - - for(int i = 0; i < 10; i++) - ParticleUtil.spawnGasFlame(this.worldObj, this.posX + rand.nextGaussian() * 0.5 - motionX * 2, this.posY + rand.nextGaussian() * 0.5 - motionY * 2, this.posZ + rand.nextGaussian() * 0.5 - motionZ * 2, 0.0, 0.1, 0.0); - - if(worldObj.getBlock((int)posX, (int)posY, (int)posZ).isNormalCube() && !worldObj.isRemote) { - this.setDead(); - - /*worldObj.setBlock((int)posX, (int)posY, (int)posZ, ModBlocks.bomber); - TileEntityBomber te = (TileEntityBomber)worldObj.getTileEntity((int)posX, (int)posY, (int)posZ); - - if(te != null) { - te.yaw = (int)(this.rotationYaw); - te.pitch = (int)(this.rotationPitch); - - te.type = this.getDataWatcher().getWatchableObjectByte(16); - }*/ - - ExplosionLarge.explodeFire(worldObj, posX, posY, posZ, 25, true, false, true); - worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "hbm:entity.planeCrash", 10.0F, 1.0F); - - return; + if(worldObj.isRemote) { + if(this.getDataWatcher().getWatchableObjectFloat(17) > 0) { + if(audio == null || !audio.isPlaying()) { + int bomberType = this.dataWatcher.getWatchableObjectByte(16); + audio = MainRegistry.proxy.getLoopedSound(bomberType <= 4 ? "hbm:entity.bomberSmallLoop" : "hbm:entity.bomberLoop", (float) posX, (float) posY, (float) posZ, 2F, 250F, 1F, 20); + audio.startSound(); + } + audio.keepAlive(); + audio.updatePosition((float) posX, (float) posY, (float) posZ); + } else { + if(audio != null && audio.isPlaying()) { + audio.stopSound(); + audio = null; + } } } - if(this.ticksExisted > timer) - this.setDead(); - if(!worldObj.isRemote && this.health > 0 && this.ticksExisted > bombStart && this.ticksExisted < bombStop && this.ticksExisted % bombRate == 0) { if(type == 3) { - - worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "random.fizz", 5.0F, 2.6F + (rand.nextFloat() - rand.nextFloat()) * 0.8F); + worldObj.playSoundEffect((double) (posX + 0.5F), (double) (posY + 0.5F), (double) (posZ + 0.5F), "random.fizz", 5.0F, 2.6F + (rand.nextFloat() - rand.nextFloat()) * 0.8F); ExplosionChaos.spawnChlorine(worldObj, this.posX, this.posY - 1F, this.posZ, 10, 0.5, 3); - - } else if(type == 5) { - - worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "hbm:weapon.missileTakeOff", 10.0F, 0.9F + rand.nextFloat() * 0.2F); - EntityRocketHoming rocket = new EntityRocketHoming(worldObj); - rocket.setIsCritical(true); - //rocket.motionX = motionX; - //rocket.motionZ = motionZ; - rocket.motionY = -1; - rocket.shootingEntity = this; - rocket.homingRadius = 50; - rocket.homingMod = 5; - - rocket.posX = posX + rand.nextDouble() - 0.5; - rocket.posY = posY - rand.nextDouble(); - rocket.posZ = posZ + rand.nextDouble() - 0.5; - - worldObj.spawnEntityInWorld(rocket); - - } else if(type == 6) { - - worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "hbm:weapon.missileTakeOff", 10.0F, 0.9F + rand.nextFloat() * 0.2F); - EntityBoxcar rocket = new EntityBoxcar(worldObj); - - rocket.posX = posX + rand.nextDouble() - 0.5; - rocket.posY = posY - rand.nextDouble(); - rocket.posZ = posZ + rand.nextDouble() - 0.5; - - worldObj.spawnEntityInWorld(rocket); - - } else if(type == 7) { - worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "random.fizz", 5.0F, 2.6F + (rand.nextFloat() - rand.nextFloat()) * 0.8F); - ExplosionChaos.spawnChlorine(worldObj, this.posX, worldObj.getHeightValue((int)this.posX, (int)this.posZ) + 2, this.posZ, 10, 1, 2); - + } else if(type == 5) { + worldObj.playSoundEffect((double) (posX + 0.5F), (double) (posY + 0.5F), (double) (posZ + 0.5F), "hbm:weapon.missileTakeOff", 10.0F, 0.9F + rand.nextFloat() * 0.2F); + EntityRocketHoming rocket = new EntityRocketHoming(worldObj); + rocket.setIsCritical(true); + rocket.motionY = -1; + rocket.shootingEntity = this; + rocket.homingRadius = 50; + rocket.homingMod = 5; + rocket.posX = posX + rand.nextDouble() - 0.5; + rocket.posY = posY - rand.nextDouble(); + rocket.posZ = posZ + rand.nextDouble() - 0.5; + worldObj.spawnEntityInWorld(rocket); + + } else if(type == 6) { + worldObj.playSoundEffect((double) (posX + 0.5F), (double) (posY + 0.5F), (double) (posZ + 0.5F), "hbm:weapon.missileTakeOff", 10.0F, 0.9F + rand.nextFloat() * 0.2F); + EntityBoxcar rocket = new EntityBoxcar(worldObj); + rocket.posX = posX + rand.nextDouble() - 0.5; + rocket.posY = posY - rand.nextDouble(); + rocket.posZ = posZ + rand.nextDouble() - 0.5; + worldObj.spawnEntityInWorld(rocket); + + } else if(type == 7) { + worldObj.playSoundEffect((double) (posX + 0.5F), (double) (posY + 0.5F), (double) (posZ + 0.5F), "random.fizz", 5.0F, 2.6F + (rand.nextFloat() - rand.nextFloat()) * 0.8F); + ExplosionChaos.spawnChlorine(worldObj, this.posX, worldObj.getHeightValue((int) this.posX, (int) this.posZ) + 2, this.posZ, 10, 1, 2); + } else { - - worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "hbm:entity.bombWhistle", 10.0F, 0.9F + rand.nextFloat() * 0.2F); - + worldObj.playSoundEffect((double) (posX + 0.5F), (double) (posY + 0.5F), (double) (posZ + 0.5F), "hbm:entity.bombWhistle", 10.0F, 0.9F + rand.nextFloat() * 0.2F); EntityBombletZeta zeta = new EntityBombletZeta(worldObj); - /*zeta.prevRotationYaw = zeta.rotationYaw = this.rotationYaw; - zeta.prevRotationPitch = zeta.rotationPitch = this.rotationPitch;*/ - zeta.rotation(); - zeta.type = type; - zeta.posX = posX + rand.nextDouble() - 0.5; zeta.posY = posY - rand.nextDouble(); zeta.posZ = posZ + rand.nextDouble() - 0.5; - if(type == 0) { - zeta.motionX = motionX + rand.nextGaussian() * 0.15; - zeta.motionZ = motionZ + rand.nextGaussian() * 0.15; + zeta.motionX = motionX + rand.nextGaussian() * 0.15; zeta.motionZ = motionZ + rand.nextGaussian() * 0.15; } else { - zeta.motionX = motionX; - zeta.motionZ = motionZ; + zeta.motionX = motionX; zeta.motionZ = motionZ; } - worldObj.spawnEntityInWorld(zeta); } } - - if(!worldObj.isRemote) - loadNeighboringChunks((int)(posX / 16), (int)(posZ / 16)); - } - - public void fac(World world, double x, double y, double z) { - - Vec3 vector = Vec3.createVectorHelper(world.rand.nextDouble() - 0.5, 0, world.rand.nextDouble() - 0.5); - vector = vector.normalize(); - vector.xCoord *= GeneralConfig.enableBomberShortMode ? 1 : 2; - vector.zCoord *= GeneralConfig.enableBomberShortMode ? 1 : 2; - - this.setLocationAndAngles(x - vector.xCoord * 100, y + 50, z - vector.zCoord * 100, 0.0F, 0.0F); - this.loadNeighboringChunks((int)(x / 16), (int)(z / 16)); - - this.motionX = vector.xCoord; - this.motionZ = vector.zCoord; - this.motionY = 0.0D; - - this.rotation(); - - int i = 1; - - int rand = world.rand.nextInt(7); - - switch(rand) { - case 0: - case 1: i = 1; break; - case 2: - case 3: i = 2; break; - case 4: i = 5; break; - case 5: i = 6; break; - case 6: i = 7; break; - } - - if(world.rand.nextInt(100) == 0) { - rand = world.rand.nextInt(4); - switch(rand) { - case 0: i = 0; break; - case 1: i = 3; break; - case 2: i = 4; break; - case 3: i = 8; break; - } - } - - this.getDataWatcher().updateObject(16, (byte)i); - this.setSize(8.0F, 4.0F); - } - - public static EntityBomber statFacCarpet(World world, double x, double y, double z) { - - EntityBomber bomber = new EntityBomber(world); - - bomber.timer = 200; - bomber.bombStart = 50; - bomber.bombStop = 100; - bomber.bombRate = 2; + public void fac(World world, double x, double y, double z) { - bomber.fac(world, x, y, z); - - bomber.type = 0; - - return bomber; - } - - public static EntityBomber statFacNapalm(World world, double x, double y, double z) { - - EntityBomber bomber = new EntityBomber(world); - - bomber.timer = 200; - bomber.bombStart = 50; - bomber.bombStop = 100; - bomber.bombRate = 5; + Vec3 vector = Vec3.createVectorHelper(world.rand.nextDouble() - 0.5, 0, world.rand.nextDouble() - 0.5); + vector = vector.normalize(); + vector.xCoord *= GeneralConfig.enableBomberShortMode ? 1 : 2; + vector.zCoord *= GeneralConfig.enableBomberShortMode ? 1 : 2; - bomber.fac(world, x, y, z); - - bomber.type = 1; - - return bomber; - } - - public static EntityBomber statFacChlorine(World world, double x, double y, double z) { - - EntityBomber bomber = new EntityBomber(world); - - bomber.timer = 200; - bomber.bombStart = 50; - bomber.bombStop = 100; - bomber.bombRate = 4; + this.setLocationAndAngles(x - vector.xCoord * 100, y + 50, z - vector.zCoord * 100, 0.0F, 0.0F); + this.loadNeighboringChunks((int) (x / 16), (int) (z / 16)); - bomber.fac(world, x, y, z); - - bomber.type = 2; - - return bomber; - } - - public static EntityBomber statFacOrange(World world, double x, double y, double z) { - - EntityBomber bomber = new EntityBomber(world); - - bomber.timer = 200; - bomber.bombStart = 75; - bomber.bombStop = 125; - bomber.bombRate = 1; + this.motionX = vector.xCoord; + this.motionZ = vector.zCoord; + this.motionY = 0.0D; - bomber.fac(world, x, y, z); - - bomber.type = 3; - - return bomber; - } - - public static EntityBomber statFacABomb(World world, double x, double y, double z) { - - EntityBomber bomber = new EntityBomber(world); - - bomber.timer = 200; - bomber.bombStart = 60; - bomber.bombStop = 70; - bomber.bombRate = 65; + this.rotation(); - bomber.fac(world, x, y, z); - - int i = 1; - - int rand = world.rand.nextInt(3); - - switch(rand) { - case 0: i = 5; break; - case 1: i = 6; break; - case 2: i = 7; break; - } - - if(world.rand.nextInt(100) == 0) { - i = 8; - } - - bomber.getDataWatcher().updateObject(16, (byte)i); - - bomber.type = 4; - - return bomber; - } - - public static EntityBomber statFacStinger(World world, double x, double y, double z) { - - EntityBomber bomber = new EntityBomber(world); - - bomber.timer = 200; - bomber.bombStart = 50; - bomber.bombStop = 150; - bomber.bombRate = 10; + int i = 1; - bomber.fac(world, x, y, z); - - bomber.getDataWatcher().updateObject(16, (byte)4); - - bomber.type = 5; - - return bomber; - } - - public static EntityBomber statFacBoxcar(World world, double x, double y, double z) { - - EntityBomber bomber = new EntityBomber(world); - - bomber.timer = 200; - bomber.bombStart = 50; - bomber.bombStop = 150; - bomber.bombRate = 10; + int rand = world.rand.nextInt(7); - bomber.fac(world, x, y, z); - - bomber.getDataWatcher().updateObject(16, (byte)6); - - bomber.type = 6; - - return bomber; - } - - public static EntityBomber statFacPC(World world, double x, double y, double z) { - - EntityBomber bomber = new EntityBomber(world); - - bomber.timer = 200; - bomber.bombStart = 75; - bomber.bombStop = 125; - bomber.bombRate = 1; + switch(rand) { + case 0: case 1: i = 1; break; + case 2: case 3: i = 2; break; + case 4: i = 5; break; + case 5: i = 6; break; + case 6: i = 7; break; + } - bomber.fac(world, x, y, z); - - bomber.getDataWatcher().updateObject(16, (byte)6); - - bomber.type = 7; - - return bomber; - } + if(world.rand.nextInt(100) == 0) { + rand = world.rand.nextInt(4); + switch(rand) { + case 0: i = 0; break; + case 1: i = 3; break; + case 2: i = 4; break; + case 3: i = 8; break; + } + } - @Override - public void entityInit() { - init(ForgeChunkManager.requestTicket(MainRegistry.instance, worldObj, Type.ENTITY)); - this.dataWatcher.addObject(16, Byte.valueOf((byte)0)); - this.dataWatcher.addObject(17, Integer.valueOf((int)50)); - } + this.getDataWatcher().updateObject(16, (byte) i); + this.setSize(8.0F, 4.0F); + } + + public static EntityBomber statFacCarpet(World world, double x, double y, double z) { + EntityBomber bomber = new EntityBomber(world); + bomber.timer = 200; + bomber.bombStart = 50; + bomber.bombStop = 100; + bomber.bombRate = 2; + bomber.fac(world, x, y, z); + bomber.type = 0; + return bomber; + } + + public static EntityBomber statFacNapalm(World world, double x, double y, double z) { + EntityBomber bomber = new EntityBomber(world); + bomber.timer = 200; + bomber.bombStart = 50; + bomber.bombStop = 100; + bomber.bombRate = 5; + bomber.fac(world, x, y, z); + bomber.type = 1; + return bomber; + } + + public static EntityBomber statFacChlorine(World world, double x, double y, double z) { + EntityBomber bomber = new EntityBomber(world); + bomber.timer = 200; + bomber.bombStart = 50; + bomber.bombStop = 100; + bomber.bombRate = 4; + bomber.fac(world, x, y, z); + bomber.type = 2; + return bomber; + } + + public static EntityBomber statFacOrange(World world, double x, double y, double z) { + EntityBomber bomber = new EntityBomber(world); + bomber.timer = 200; + bomber.bombStart = 75; + bomber.bombStop = 125; + bomber.bombRate = 1; + bomber.fac(world, x, y, z); + bomber.type = 3; + return bomber; + } + + public static EntityBomber statFacABomb(World world, double x, double y, double z) { + EntityBomber bomber = new EntityBomber(world); + bomber.timer = 200; + bomber.bombStart = 60; + bomber.bombStop = 70; + bomber.bombRate = 65; + bomber.fac(world, x, y, z); + int i = 1; + + int rand = world.rand.nextInt(3); + + switch(rand) { + case 0: i = 5; break; + case 1: i = 6; break; + case 2: i = 7; break; + } + if(world.rand.nextInt(100) == 0) i = 8; + + bomber.getDataWatcher().updateObject(16, (byte) i); + bomber.type = 4; + return bomber; + } + + public static EntityBomber statFacStinger(World world, double x, double y, double z) { + EntityBomber bomber = new EntityBomber(world); + bomber.timer = 200; + bomber.bombStart = 50; + bomber.bombStop = 150; + bomber.bombRate = 10; + bomber.fac(world, x, y, z); + bomber.getDataWatcher().updateObject(16, (byte) 4); + bomber.type = 5; + return bomber; + } + + public static EntityBomber statFacBoxcar(World world, double x, double y, double z) { + EntityBomber bomber = new EntityBomber(world); + bomber.timer = 200; + bomber.bombStart = 50; + bomber.bombStop = 150; + bomber.bombRate = 10; + bomber.fac(world, x, y, z); + bomber.getDataWatcher().updateObject(16, (byte) 6); + bomber.type = 6; + return bomber; + } + + public static EntityBomber statFacPC(World world, double x, double y, double z) { + EntityBomber bomber = new EntityBomber(world); + bomber.timer = 200; + bomber.bombStart = 75; + bomber.bombStop = 125; + bomber.bombRate = 1; + bomber.fac(world, x, y, z); + bomber.getDataWatcher().updateObject(16, (byte) 6); + bomber.type = 7; + return bomber; + } @Override protected void readEntityFromNBT(NBTTagCompound nbt) { - ticksExisted = nbt.getInteger("ticksExisted"); + super.readEntityFromNBT(nbt); bombStart = nbt.getInteger("bombStart"); bombStop = nbt.getInteger("bombStop"); bombRate = nbt.getInteger("bombRate"); type = nbt.getInteger("type"); - - this.getDataWatcher().updateObject(16, nbt.getByte("style")); - this.getDataWatcher().updateObject(17, nbt.getInteger("health")); - this.setSize(8.0F, 4.0F); + this.getDataWatcher().updateObject(16, nbt.getByte("style")); + this.setSize(8.0F, 4.0F); } @Override protected void writeEntityToNBT(NBTTagCompound nbt) { - nbt.setInteger("ticksExisted", ticksExisted); + super.writeEntityToNBT(nbt); nbt.setInteger("bombStart", bombStart); nbt.setInteger("bombStop", bombStop); nbt.setInteger("bombRate", bombRate); nbt.setInteger("type", type); nbt.setByte("style", this.getDataWatcher().getWatchableObjectByte(16)); - nbt.setInteger("health", this.getDataWatcher().getWatchableObjectInt(17)); } - - protected void rotation() { - float f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); - - for (this.rotationPitch = (float)(Math.atan2(this.motionY, f2) * 180.0D / Math.PI) - 90; this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) - { - ; - } - - while (this.rotationPitch - this.prevRotationPitch >= 180.0F) - { - this.prevRotationPitch += 360.0F; - } - - while (this.rotationYaw - this.prevRotationYaw < -180.0F) - { - this.prevRotationYaw -= 360.0F; - } - - while (this.rotationYaw - this.prevRotationYaw >= 180.0F) - { - this.prevRotationYaw += 360.0F; - } - } - - @Override - @SideOnly(Side.CLIENT) - public boolean isInRangeToRenderDist(double distance) - { - return distance < 500000; - } - - private Ticket loaderTicket; - - public void init(Ticket ticket) { - - if(!worldObj.isRemote) { - - if(ticket != null) { - - if(loaderTicket == null) { - - loaderTicket = ticket; - loaderTicket.bindEntity(this); - loaderTicket.getModData(); - } - - - ForgeChunkManager.forceChunk(loaderTicket, new ChunkCoordIntPair(chunkCoordX, chunkCoordZ)); - } - } - } - - List loadedChunks = new ArrayList(); - - public void loadNeighboringChunks(int newChunkX, int newChunkZ) - { - if(!worldObj.isRemote && loaderTicket != null) - { - for(ChunkCoordIntPair chunk : loadedChunks) - { - ForgeChunkManager.unforceChunk(loaderTicket, chunk); - } - - loadedChunks.clear(); - loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX + 1, newChunkZ + 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX - 1, newChunkZ - 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX + 1, newChunkZ - 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX - 1, newChunkZ + 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX + 1, newChunkZ)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ + 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX - 1, newChunkZ)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ - 1)); - - for(ChunkCoordIntPair chunk : loadedChunks) - { - ForgeChunkManager.forceChunk(loaderTicket, chunk); - } - } - } } diff --git a/src/main/java/com/hbm/entity/logic/EntityC130.java b/src/main/java/com/hbm/entity/logic/EntityC130.java new file mode 100644 index 000000000..0b0927845 --- /dev/null +++ b/src/main/java/com/hbm/entity/logic/EntityC130.java @@ -0,0 +1,98 @@ +package com.hbm.entity.logic; + +import com.hbm.entity.item.EntityParachuteCrate; +import com.hbm.itempool.ItemPool; +import com.hbm.itempool.ItemPoolsC130; +import com.hbm.main.MainRegistry; +import com.hbm.sound.AudioWrapper; +import com.hbm.util.EnumUtil; + +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class EntityC130 extends EntityPlaneBase { + + protected AudioWrapper audio; + public C130PayloadType payload = C130PayloadType.SUPPLIES; + + public EntityC130(World world) { + super(world); + this.ignoreFrustumCheck = true; + this.setSize(8.0F, 4.0F); + } + + @Override + public void onUpdate() { + super.onUpdate(); + + if(worldObj.isRemote) { + if(this.getDataWatcher().getWatchableObjectFloat(17) > 0) { + if(audio == null || !audio.isPlaying()) { + audio = MainRegistry.proxy.getLoopedSound("hbm:entity.bomberLoop", (float) posX, (float) posY, (float) posZ, 2F, 250F, 1F, 20); + audio.startSound(); + } + audio.keepAlive(); + audio.updatePosition((float) posX, (float) posY, (float) posZ); + } else { + if(audio != null && audio.isPlaying()) { + audio.stopSound(); + audio = null; + } + } + } + + if(!worldObj.isRemote && this.ticksExisted == this.getLifetime() / 2 && this.health > 0) { + EntityParachuteCrate crate = new EntityParachuteCrate(worldObj); + crate.setPosition(posX - motionX * 7, posY - 10, posZ - motionZ * 7); + + if(this.payload == C130PayloadType.SUPPLIES) { + for(int i = 0; i < 5; i++) crate.items.add(ItemPool.getStack(ItemPoolsC130.POOL_SUPPLIES, this.rand)); + } + if(this.payload == C130PayloadType.WEAPONS) { + int amount = 1 + rand.nextInt(2); + for(int i = 0; i < amount; i++) crate.items.add(ItemPool.getStack(ItemPoolsC130.POOL_WEAPONS, this.rand)); + for(int i = 0; i < 6; i++) crate.items.add(ItemPool.getStack(ItemPoolsC130.POOL_AMMO, this.rand)); + } + + worldObj.spawnEntityInWorld(crate); + } + } + + @Override + protected void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); + this.payload = EnumUtil.grabEnumSafely(C130PayloadType.class, nbt.getInteger("payload")); + } + + @Override + protected void writeEntityToNBT(NBTTagCompound nbt) { + super.writeEntityToNBT(nbt); + nbt.setInteger("payload", this.payload.ordinal()); + } + + public void fac(World world, double x, double y, double z, C130PayloadType payload) { + + Vec3 vector = Vec3.createVectorHelper(world.rand.nextDouble() - 0.5, 0, world.rand.nextDouble() - 0.5); + vector = vector.normalize(); + vector.xCoord *= 2; + vector.zCoord *= 2; + + this.payload = payload; + + this.setLocationAndAngles(x - vector.xCoord * 100, y + 100, z - vector.zCoord * 100, 0.0F, 0.0F); + this.loadNeighboringChunks((int) (x / 16), (int) (z / 16)); + + this.motionX = vector.xCoord; + this.motionZ = vector.zCoord; + this.motionY = 0.0D; + + this.rotation(); + } + + public static enum C130PayloadType { + SUPPLIES, + WEAPONS, + A_FUCKING_FUEL_TRUCK + } +} diff --git a/src/main/java/com/hbm/entity/logic/EntityPlaneBase.java b/src/main/java/com/hbm/entity/logic/EntityPlaneBase.java new file mode 100644 index 000000000..d34fec111 --- /dev/null +++ b/src/main/java/com/hbm/entity/logic/EntityPlaneBase.java @@ -0,0 +1,151 @@ +package com.hbm.entity.logic; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.lib.ModDamageSource; +import com.hbm.main.MainRegistry; +import com.hbm.particle.helper.ExplosionSmallCreator; +import com.hbm.util.ParticleUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.Entity; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MathHelper; +import net.minecraft.world.ChunkCoordIntPair; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeChunkManager; +import net.minecraftforge.common.ForgeChunkManager.Ticket; +import net.minecraftforge.common.ForgeChunkManager.Type; + +public abstract class EntityPlaneBase extends Entity implements IChunkLoader { + + private Ticket loaderTicket; + private List loadedChunks = new ArrayList(); + + public float health = getMaxHealth(); + public int timer = getLifetime(); + + public EntityPlaneBase(World world) { super(world); } + + public float getMaxHealth() { return 50F; } + public int getLifetime() { return 200; } + + @Override public boolean canBeCollidedWith() { return this.health > 0; } + + @Override + public boolean attackEntityFrom(DamageSource source, float amount) { + if(source == ModDamageSource.nuclearBlast) return false; + if(this.isEntityInvulnerable()) return false; + if(!this.isDead && !this.worldObj.isRemote && this.health > 0) { + health -= amount; + if(this.health <= 0) this.killPlane(); + } + return true; + } + + protected void killPlane() { + ExplosionSmallCreator.composeEffect(worldObj, posX, posY, posZ, 25, 3.5F, 2F); + worldObj.playSoundEffect(posX, posY, posZ, "hbm:entity.planeShotDown", 25.0F, 1.0F); + } + + @Override + protected void entityInit() { + init(ForgeChunkManager.requestTicket(MainRegistry.instance, worldObj, Type.ENTITY)); + this.dataWatcher.addObject(17, new Float(50F)); + } + + @Override + public void init(Ticket ticket) { + if(!worldObj.isRemote && ticket != null) { + if(loaderTicket == null) { + loaderTicket = ticket; + loaderTicket.bindEntity(this); + loaderTicket.getModData(); + } + ForgeChunkManager.forceChunk(loaderTicket, new ChunkCoordIntPair(chunkCoordX, chunkCoordZ)); + } + } + + @Override + public void onUpdate() { + + this.lastTickPosX = this.prevPosX = posX; + this.lastTickPosY = this.prevPosY = posY; + this.lastTickPosZ = this.prevPosZ = posZ; + this.setPosition(posX + motionX, posY + motionY, posZ + motionZ); + + if(!worldObj.isRemote) { + this.dataWatcher.updateObject(17, health); + } else { + health = this.dataWatcher.getWatchableObjectFloat(17); + } + + this.rotation(); + + if(this.health <= 0) { + motionY -= 0.025; + + for(int i = 0; i < 10; i++) ParticleUtil.spawnGasFlame(this.worldObj, this.posX + rand.nextGaussian() * 0.5 - motionX * 2, this.posY + rand.nextGaussian() * 0.5 - motionY * 2, this.posZ + rand.nextGaussian() * 0.5 - motionZ * 2, 0.0, 0.1, 0.0); + + if((!worldObj.getBlock((int) posX, (int) posY, (int) posZ).isAir(worldObj, (int) posX, (int) posY, (int) posZ) || posY < 0) && !worldObj.isRemote) { + this.setDead(); + new ExplosionVNT(worldObj, posX, posY, posZ, 15F).makeStandard().explode(); + worldObj.playSoundEffect(posX, posY, posZ, "hbm:entity.planeCrash", 25.0F, 1.0F); + return; + } + } else { + this.motionY = 0F; + } + + if(this.ticksExisted > timer) this.setDead(); + if(!worldObj.isRemote) loadNeighboringChunks((int)Math.floor(posX / 16D), (int)Math.floor(posZ / 16D)); + } + + protected void rotation() { + float motionHorizontal = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); + this.rotationYaw = (float) (Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); + for(this.rotationPitch = (float) (Math.atan2(this.motionY, motionHorizontal) * 180.0D / Math.PI) - 90; this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F); + while(this.rotationPitch - this.prevRotationPitch >= 180.0F) this.prevRotationPitch += 360.0F; + while(this.rotationYaw - this.prevRotationYaw < -180.0F) this.prevRotationYaw -= 360.0F; + while(this.rotationYaw - this.prevRotationYaw >= 180.0F) this.prevRotationYaw += 360.0F; + } + + @Override + public void setDead() { + super.setDead(); + this.clearChunkLoader(); + } + + @Override + protected void readEntityFromNBT(NBTTagCompound nbt) { + ticksExisted = nbt.getInteger("ticksExisted"); + this.getDataWatcher().updateObject(17, nbt.getFloat("health")); + } + + @Override + protected void writeEntityToNBT(NBTTagCompound nbt) { + nbt.setInteger("ticksExisted", ticksExisted); + nbt.setFloat("health", this.getDataWatcher().getWatchableObjectFloat(17)); + } + + public void clearChunkLoader() { + if(!worldObj.isRemote && loaderTicket != null) { + for(ChunkCoordIntPair chunk : loadedChunks) ForgeChunkManager.unforceChunk(loaderTicket, chunk); + } + } + + public void loadNeighboringChunks(int newChunkX, int newChunkZ) { + if(!worldObj.isRemote && loaderTicket != null) { + clearChunkLoader(); + loadedChunks.clear(); + loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ)); + for(ChunkCoordIntPair chunk : loadedChunks) ForgeChunkManager.forceChunk(loaderTicket, chunk); + } + } + + @Override @SideOnly(Side.CLIENT) public boolean isInRangeToRenderDist(double distance) { return true; } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityDummy.java b/src/main/java/com/hbm/entity/mob/EntityDummy.java new file mode 100644 index 000000000..cd64ff427 --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityDummy.java @@ -0,0 +1,34 @@ +package com.hbm.entity.mob; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.passive.IAnimals; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemArmor; +import net.minecraft.world.World; + +public class EntityDummy extends EntityLiving implements IAnimals { + + public EntityDummy(World world) { + super(world); + } + + @Override + public boolean interact(EntityPlayer player) { + + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemArmor) { + ItemArmor armor = (ItemArmor) player.getHeldItem().getItem(); + this.setCurrentItemOrArmor(4 - armor.armorType, player.getHeldItem().copy()); + } + + return super.interact(player); + } + + @Override @SideOnly(Side.CLIENT) public boolean getAlwaysRenderNameTagForRender() { return true; } + @Override public String getCommandSenderName() { + return (int) (this.getHealth() * 10) / 10F + " / " + (int) (this.getMaxHealth() * 10) / 10F; } + //return (int) this.rotationYaw + " " + (int) this.renderYawOffset + " " + (int) this.rotationYawHead + " " + (int) this.newRotationYaw; } + + @Override protected void dropEquipment(boolean b, int i) { } +} diff --git a/src/main/java/com/hbm/entity/projectile/EntityBulletBaseMK4.java b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseMK4.java index bd228c2e0..0d9161b98 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityBulletBaseMK4.java +++ b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseMK4.java @@ -5,6 +5,8 @@ import com.hbm.util.BobMathUtil; import com.hbm.util.TrackerUtil; import com.hbm.util.Vec3NT; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityTrackerEntry; @@ -29,6 +31,7 @@ public class EntityBulletBaseMK4 extends EntityThrowableInterp { super(world); this.renderDistanceWeight = 10.0D; this.setSize(0.5F, 0.5F); + this.isImmuneToFire = true; } public EntityBulletBaseMK4(EntityLivingBase entity, BulletConfig config, float baseDamage, float gunSpread, double sideOffset, double heightOffset, double frontOffset) { @@ -61,6 +64,22 @@ public class EntityBulletBaseMK4 extends EntityThrowableInterp { this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, 1.0F, this.config.spread + gunSpread); } + + /** For turrets - angles are in radians, andp itch is negative! */ + public EntityBulletBaseMK4(World world, BulletConfig config, float baseDamage, float gunSpread, float yaw, float pitch) { + this(world); + + this.setBulletConfig(config); + this.damage = baseDamage * this.config.damageMult; + + this.prevRotationYaw = this.rotationYaw = yaw * 180F / (float) Math.PI; + this.prevRotationPitch = this.rotationPitch = -pitch * 180F / (float) Math.PI; + + this.motionX = -MathHelper.sin(this.rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI); + this.motionZ = MathHelper.cos(this.rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI); + this.motionY = (-MathHelper.sin(this.rotationPitch / 180.0F * (float) Math.PI)); + this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, 1.0F, this.config.spread + gunSpread); + } @Override protected void entityInit() { @@ -165,4 +184,6 @@ public class EntityBulletBaseMK4 extends EntityThrowableInterp { @Override public boolean doesPenetrate() { return this.config.doesPenetrate; } @Override public boolean isSpectral() { return this.config.isSpectral; } @Override public int selfDamageDelay() { return this.config.selfDamageDelay; } + + @Override @SideOnly(Side.CLIENT) public boolean canRenderOnFire() { return false; } } diff --git a/src/main/java/com/hbm/entity/projectile/EntityBulletBaseMK4CL.java b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseMK4CL.java new file mode 100644 index 000000000..42591af80 --- /dev/null +++ b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseMK4CL.java @@ -0,0 +1,81 @@ +package com.hbm.entity.projectile; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.entity.logic.IChunkLoader; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.main.MainRegistry; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.world.ChunkCoordIntPair; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeChunkManager; +import net.minecraftforge.common.ForgeChunkManager.Ticket; +import net.minecraftforge.common.ForgeChunkManager.Type; + +public class EntityBulletBaseMK4CL extends EntityBulletBaseMK4 implements IChunkLoader { + + private Ticket loaderTicket; + private List loadedChunks = new ArrayList(); + + public EntityBulletBaseMK4CL(World world) { + super(world); + } + + public EntityBulletBaseMK4CL(EntityLivingBase entity, BulletConfig config, float damage, float spread, double sideOffset, double heightOffset, double forwardOffset) { + super(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset); + } + + @Override + protected void entityInit() { + super.entityInit(); + init(ForgeChunkManager.requestTicket(MainRegistry.instance, worldObj, Type.ENTITY)); + } + + @Override + public void init(Ticket ticket) { + if(!worldObj.isRemote && ticket != null) { + if(loaderTicket == null) { + loaderTicket = ticket; + loaderTicket.bindEntity(this); + loaderTicket.getModData(); + } + ForgeChunkManager.forceChunk(loaderTicket, new ChunkCoordIntPair(chunkCoordX, chunkCoordZ)); + } + } + + @Override + public void onUpdate() { + super.onUpdate(); + + if(!worldObj.isRemote) loadNeighboringChunks((int)Math.floor(posX / 16D), (int)Math.floor(posZ / 16D)); + } + + @Override + public void setDead() { + super.setDead(); + clearChunkLoader(); + } + + public void clearChunkLoader() { + if(!worldObj.isRemote && loaderTicket != null) { + for(ChunkCoordIntPair chunk : loadedChunks) { + ForgeChunkManager.unforceChunk(loaderTicket, chunk); + } + } + } + + public void loadNeighboringChunks(int newChunkX, int newChunkZ) { + if(!worldObj.isRemote && loaderTicket != null) { + + clearChunkLoader(); + loadedChunks.clear(); + loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ)); + + for(ChunkCoordIntPair chunk : loadedChunks) { + ForgeChunkManager.forceChunk(loaderTicket, chunk); + } + } + } +} diff --git a/src/main/java/com/hbm/entity/projectile/EntityBulletBeamBase.java b/src/main/java/com/hbm/entity/projectile/EntityBulletBeamBase.java index aeee12735..aaa65b397 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityBulletBeamBase.java +++ b/src/main/java/com/hbm/entity/projectile/EntityBulletBeamBase.java @@ -33,6 +33,7 @@ public class EntityBulletBeamBase extends Entity implements IEntityAdditionalSpa this.ignoreFrustumCheck = true; this.renderDistanceWeight = 10.0D; this.setSize(0.5F, 0.5F); + this.isImmuneToFire = true; } public EntityLivingBase getThrower() { return this.thrower; } @@ -61,7 +62,7 @@ public class EntityBulletBeamBase extends Entity implements IEntityAdditionalSpa this.headingZ = (double) (MathHelper.cos(this.rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI)); this.headingY = (double) (-MathHelper.sin((this.rotationPitch) / 180.0F * (float) Math.PI)); - double range = 150D; + double range = 250D; this.headingX *= range; this.headingY *= range; this.headingZ *= range; @@ -95,6 +96,8 @@ public class EntityBulletBeamBase extends Entity implements IEntityAdditionalSpa return; } + if(config.onUpdate != null) config.onUpdate.accept(this); + super.onUpdate(); if(!worldObj.isRemote && this.ticksExisted > config.expires) this.setDead(); @@ -196,4 +199,6 @@ public class EntityBulletBeamBase extends Entity implements IEntityAdditionalSpa this.rotationYaw = buf.readFloat(); this.rotationPitch = buf.readFloat(); } + + @Override @SideOnly(Side.CLIENT) public boolean canRenderOnFire() { return false; } } diff --git a/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java b/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java index f3b70f6a6..31a3c2392 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java +++ b/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java @@ -193,7 +193,7 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile { for(int j = 0; j < list.size(); ++j) { Entity entity = (Entity) list.get(j); - if(entity.canBeCollidedWith() && (entity != thrower || this.ticksInAir >= this.selfDamageDelay())) { + if(entity.canBeCollidedWith() && (entity != thrower || this.ticksInAir >= this.selfDamageDelay()) && entity.isEntityAlive()) { double hitbox = 0.3F; AxisAlignedBB aabb = entity.boundingBox.expand(hitbox, hitbox, hitbox); MovingObjectPosition hitMop = aabb.calculateIntercept(pos, nextPos); diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCross.java b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCross.java index 3bc9f6870..27bd3d7f4 100644 --- a/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCross.java +++ b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCross.java @@ -4,6 +4,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map.Entry; +import com.hbm.entity.projectile.EntityBulletBaseMK4; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.interfaces.ICustomDamageHandler; import com.hbm.explosion.vanillant.interfaces.IEntityProcessor; @@ -96,9 +97,11 @@ public class EntityProcessorCross implements IEntityProcessor { if(!damageMap.containsKey(entity) || damageMap.get(entity) < dmg) damageMap.put(entity, dmg); double enchKnockback = EnchantmentProtection.func_92092_a(entity, knockback); - entity.motionX += deltaX * enchKnockback; - entity.motionY += deltaY * enchKnockback; - entity.motionZ += deltaZ * enchKnockback; + if(!(entity instanceof EntityBulletBaseMK4)) { + entity.motionX += deltaX * enchKnockback; + entity.motionY += deltaY * enchKnockback; + entity.motionZ += deltaZ * enchKnockback; + } if(entity instanceof EntityPlayer) { affectedPlayers.put((EntityPlayer) entity, Vec3.createVectorHelper(deltaX * knockback, deltaY * knockback, deltaZ * knockback)); @@ -110,7 +113,7 @@ public class EntityProcessorCross implements IEntityProcessor { for(Entry entry : damageMap.entrySet()) { Entity entity = entry.getKey(); - entity.attackEntityFrom(setExplosionSource(explosion.compat), entry.getValue()); + attackEntity(entity, explosion, entry.getValue()); if(damage != null) { double distanceScaled = entity.getDistance(x, y, z) / size; @@ -121,6 +124,10 @@ public class EntityProcessorCross implements IEntityProcessor { return affectedPlayers; } + public void attackEntity(Entity entity, ExplosionVNT source, float amount) { + entity.attackEntityFrom(setExplosionSource(source.compat), amount); + } + public float calculateDamage(double distanceScaled, double density, double knockback, float size) { return (float) ((int) ((knockback * knockback + knockback) / 2.0D * 8.0D * size + 1.0D)); } diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCrossSmooth.java b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCrossSmooth.java index 725b9fc92..48d25e4a2 100644 --- a/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCrossSmooth.java +++ b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCrossSmooth.java @@ -1,14 +1,51 @@ package com.hbm.explosion.vanillant.standard; +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.factory.ConfettiUtil; +import com.hbm.util.EntityDamageUtil; +import com.hbm.util.DamageResistanceHandler.DamageClass; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.DamageSource; + public class EntityProcessorCrossSmooth extends EntityProcessorCross { protected float fixedDamage; + protected float pierceDT = 0; + protected float pierceDR = 0; + protected DamageClass clazz = DamageClass.EXPLOSIVE; public EntityProcessorCrossSmooth(double nodeDist, float fixedDamage) { super(nodeDist); this.fixedDamage = fixedDamage; } + public EntityProcessorCrossSmooth setupPiercing(float pierceDT, float pierceDR) { + this.pierceDT = pierceDT; + this.pierceDR = pierceDR; + return this; + } + + public EntityProcessorCrossSmooth setDamageClass(DamageClass clazz) { + this.clazz = clazz; + return this; + } + + @Override + public void attackEntity(Entity entity, ExplosionVNT source, float amount) { + if(!entity.isEntityAlive()) return; + DamageSource dmg = BulletConfig.getDamage(null, source.exploder instanceof EntityLivingBase ? (EntityLivingBase) source.exploder : null, clazz); + if(!(entity instanceof EntityLivingBase)) { + entity.attackEntityFrom(dmg, amount); + } else { + EntityDamageUtil.attackEntityFromNT((EntityLivingBase) entity, dmg, amount, true, false, 0F, pierceDT, pierceDR); + if(!entity.isEntityAlive()) ConfettiUtil.decideConfetti((EntityLivingBase) entity, dmg); + } + } + + @Override public float calculateDamage(double distanceScaled, double density, double knockback, float size) { return (float) (fixedDamage * (1 - distanceScaled)); } diff --git a/src/main/java/com/hbm/extprop/HbmLivingProps.java b/src/main/java/com/hbm/extprop/HbmLivingProps.java index fa16e127d..b09d20d52 100644 --- a/src/main/java/com/hbm/extprop/HbmLivingProps.java +++ b/src/main/java/com/hbm/extprop/HbmLivingProps.java @@ -48,6 +48,7 @@ public class HbmLivingProps implements IExtendedEntityProperties { private int contagion; private int oil; public int fire; + public int phosphorus; public int balefire; private List contamination = new ArrayList(); @@ -316,6 +317,7 @@ public class HbmLivingProps implements IExtendedEntityProperties { props.setInteger("hfr_blacklung", blacklung); props.setInteger("hfr_oil", oil); props.setInteger("hfr_fire", fire); + props.setInteger("hfr_phosphorus", phosphorus); props.setInteger("hfr_balefire", balefire); props.setInteger("hfr_cont_count", this.contamination.size()); @@ -342,6 +344,7 @@ public class HbmLivingProps implements IExtendedEntityProperties { blacklung = props.getInteger("hfr_blacklung"); oil = props.getInteger("hfr_oil"); fire = props.getInteger("hfr_fire"); + phosphorus = props.getInteger("hfr_phosphorus"); balefire = props.getInteger("hfr_balefire"); int cont = props.getInteger("hfr_cont_count"); diff --git a/src/main/java/com/hbm/handler/EntityEffectHandler.java b/src/main/java/com/hbm/handler/EntityEffectHandler.java index 2ad4807c3..399af77cf 100644 --- a/src/main/java/com/hbm/handler/EntityEffectHandler.java +++ b/src/main/java/com/hbm/handler/EntityEffectHandler.java @@ -18,6 +18,7 @@ import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.interfaces.IArmorModDash; import com.hbm.items.armor.ArmorFSB; +import com.hbm.items.weapon.sedna.factory.ConfettiUtil; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; import com.hbm.packet.PacketDispatcher; @@ -574,7 +575,12 @@ public class EntityEffectHandler { HbmLivingProps props = HbmLivingProps.getData(living); Random rand = living.getRNG(); - if(living.isImmuneToFire()) props.fire = 0; + if(!entity.isEntityAlive()) return; + + if(living.isImmuneToFire()) { + props.fire = 0; + props.phosphorus = 0; + } double x = living.posX; double y = living.posY; @@ -589,6 +595,13 @@ public class EntityEffectHandler { FlameCreator.composeEffect(entity.worldObj, x - living.width / 2 + living.width * rand.nextDouble(), y + rand.nextDouble() * living.height, z - living.width / 2 + living.width * rand.nextDouble(), FlameCreator.META_FIRE); } + if(props.phosphorus > 0) { + props.phosphorus--; + if((living.ticksExisted + living.getEntityId()) % 15 == 0) living.worldObj.playSoundEffect(living.posX, living.posY + living.height / 2, living.posZ, "random.fizz", 1F, 1.5F + rand.nextFloat() * 0.5F); + if((living.ticksExisted + living.getEntityId()) % 40 == 0) living.attackEntityFrom(DamageSource.onFire, 5F); + FlameCreator.composeEffect(entity.worldObj, x - living.width / 2 + living.width * rand.nextDouble(), y + rand.nextDouble() * living.height, z - living.width / 2 + living.width * rand.nextDouble(), FlameCreator.META_FIRE); + } + if(props.balefire > 0) { props.balefire--; if((living.ticksExisted + living.getEntityId()) % 15 == 0) living.worldObj.playSoundEffect(living.posX, living.posY + living.height / 2, living.posZ, "random.fizz", 1F, 1.5F + rand.nextFloat() * 0.5F); @@ -596,6 +609,8 @@ public class EntityEffectHandler { if((living.ticksExisted + living.getEntityId()) % 20 == 0) living.attackEntityFrom(DamageSource.onFire, 5F); FlameCreator.composeEffect(entity.worldObj, x - living.width / 2 + living.width * rand.nextDouble(), y + rand.nextDouble() * living.height, z - living.width / 2 + living.width * rand.nextDouble(), FlameCreator.META_BALEFIRE); } + + if(props.fire > 0 || props.phosphorus > 0 || props.balefire > 0) if(!entity.isEntityAlive()) ConfettiUtil.decideConfetti(living, DamageSource.onFire); } private static void handleDashing(Entity entity) { diff --git a/src/main/java/com/hbm/handler/guncfg/GunDartFactory.java b/src/main/java/com/hbm/handler/guncfg/GunDartFactory.java index 287022576..62c48b7d9 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunDartFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunDartFactory.java @@ -9,13 +9,11 @@ import com.hbm.handler.GunConfiguration; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ItemAmmoEnums.AmmoDart; import com.hbm.items.ModItems; -import com.hbm.items.weapon.ItemGunDart; import com.hbm.items.weapon.sedna.Crosshair; import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.main.MainRegistry; import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; @@ -100,28 +98,6 @@ public class GunDartFactory { bullet.effects = new ArrayList(); bullet.effects.add(new PotionEffect(Potion.wither.id, 60 * 20, 2)); - bullet.bntHurt = (bulletnt, hit) -> { - - if(bulletnt.worldObj.isRemote) - return; - - if(hit instanceof EntityPlayer) { - - if(((EntityPlayer) hit).inventory.hasItem(ModItems.ingot_meteorite_forged)) - return; - - if(bulletnt.getThrower() instanceof EntityPlayer) { - - EntityPlayer shooter = (EntityPlayer) bulletnt.getThrower(); - - if(shooter.getHeldItem() != null && shooter.getHeldItem().getItem() == ModItems.gun_darter) { - ItemGunDart.writePlayer(shooter.getHeldItem(), (EntityPlayer) hit); - shooter.playSound("random.orb", 1.0F, 1.0F); - } - } - } - }; - return bullet; } diff --git a/src/main/java/com/hbm/handler/nei/AmmoPressHandler.java b/src/main/java/com/hbm/handler/nei/AmmoPressHandler.java new file mode 100644 index 000000000..3f1ba26b8 --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/AmmoPressHandler.java @@ -0,0 +1,16 @@ +package com.hbm.handler.nei; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.recipes.AmmoPressRecipes; + +public class AmmoPressHandler extends NEIUniversalHandler { + + public AmmoPressHandler() { + super(ModBlocks.machine_ammo_press.getLocalizedName(), ModBlocks.machine_ammo_press, AmmoPressRecipes.getRecipes()); + } + + @Override + public String getKey() { + return "ntmAmmoPress"; + } +} diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index ef6fb0d36..b918c1480 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -546,15 +546,15 @@ public class OreDictManager { for(NTMMaterial mat : Mats.orderedList) { if(mat.smeltable == SmeltingBehavior.SMELTABLE) { - if(mat.autogen.contains(MaterialShapes.BOLT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.BOLT.name() + name, new ItemStack(ModItems.bolt, 1, mat.id)); - if(mat.autogen.contains(MaterialShapes.INGOT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.INGOT.name() + name, new ItemStack(ModItems.ingot_raw, 1, mat.id)); if(mat.autogen.contains(MaterialShapes.CASTPLATE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.CASTPLATE.name() + name, new ItemStack(ModItems.plate_cast, 1, mat.id)); if(mat.autogen.contains(MaterialShapes.WELDEDPLATE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.WELDEDPLATE.name() + name, new ItemStack(ModItems.plate_welded, 1, mat.id)); if(mat.autogen.contains(MaterialShapes.HEAVY_COMPONENT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.HEAVY_COMPONENT.name() + name, new ItemStack(ModItems.heavy_component, 1, mat.id)); if(mat.autogen.contains(MaterialShapes.DENSEWIRE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.DENSEWIRE.name() + name, new ItemStack(ModItems.wire_dense, 1, mat.id)); - if(mat.autogen.contains(MaterialShapes.SHELL)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.SHELL.name() + name, new ItemStack(ModItems.shell, 1, mat.id)); - if(mat.autogen.contains(MaterialShapes.PIPE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.PIPE.name() + name, new ItemStack(ModItems.pipe, 1, mat.id)); } + if(mat.autogen.contains(MaterialShapes.BOLT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.BOLT.name() + name, new ItemStack(ModItems.bolt, 1, mat.id)); + if(mat.autogen.contains(MaterialShapes.INGOT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.INGOT.name() + name, new ItemStack(ModItems.ingot_raw, 1, mat.id)); + if(mat.autogen.contains(MaterialShapes.SHELL)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.SHELL.name() + name, new ItemStack(ModItems.shell, 1, mat.id)); + if(mat.autogen.contains(MaterialShapes.PIPE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.PIPE.name() + name, new ItemStack(ModItems.pipe, 1, mat.id)); if(mat.autogen.contains(MaterialShapes.FRAGMENT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.FRAGMENT.name() + name, new ItemStack(ModItems.bedrock_ore_fragment, 1, mat.id)); if(mat.autogen.contains(MaterialShapes.WIRE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.WIRE.name() + name, new ItemStack(ModItems.wire_fine, 1, mat.id)); @@ -674,10 +674,11 @@ public class OreDictManager { public static void registerGroups() { ANY_RUBBER.addPrefix(INGOT, true); - ANY_PLASTIC.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(BLOCK, true); - ANY_HARDPLASTIC.addPrefix(INGOT, true); - ANY_RESISTANTALLOY.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(CASTPLATE, true).addPrefix(WELDEDPLATE, true).addPrefix(HEAVY_COMPONENT, true).addPrefix(BLOCK, true); - ANY_BISMOIDBRONZE.addPrefix(INGOT, true).addPrefix(CASTPLATE, true); + ANY_PLASTIC.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(BLOCK, true).addPrefix(GRIP, true).addPrefix(STOCK, true); + ANY_HARDPLASTIC.addPrefix(INGOT, true).addPrefix(STOCK, true).addPrefix(GRIP, true); + ANY_RESISTANTALLOY.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(CASTPLATE, true).addPrefix(WELDEDPLATE, true).addPrefix(HEAVY_COMPONENT, true).addPrefix(BLOCK, true) + .addPrefix(LIGHTBARREL, true).addPrefix(HEAVYBARREL, true).addPrefix(LIGHTRECEIVER, true).addPrefix(HEAVYRECEIVER, true); + ANY_BISMOIDBRONZE.addPrefix(INGOT, true).addPrefix(CASTPLATE, true).addPrefix(LIGHTBARREL, true).addPrefix(HEAVYBARREL, true).addPrefix(LIGHTRECEIVER, true).addPrefix(HEAVYRECEIVER, true); ANY_TAR.addPrefix(ANY, false); } @@ -685,9 +686,7 @@ public class OreDictManager { @SubscribeEvent public void onRegisterOre(OreRegisterEvent event) { - - if(recursionBrake) - return; + if(recursionBrake) return; recursionBrake = true; @@ -1016,6 +1015,13 @@ public class OreDictManager { public String billet() { return BILLET.name() + groupName; } public String block() { return BLOCK.name() + groupName; } public String ore() { return ORE.name() + groupName; } + public String lightBarrel() { return LIGHTBARREL.name() + groupName; } + public String heavyBarrel() { return HEAVYBARREL.name() + groupName; } + public String lightReceiver() { return LIGHTRECEIVER.name() + groupName; } + public String heavyReceiver() { return HEAVYRECEIVER.name() + groupName; } + public String mechanism() { return MECHANISM.name() + groupName; } + public String stock() { return STOCK.name() + groupName; } + public String grip() { return GRIP.name() + groupName; } } private static void addReRegistration(String original, String additional) { diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index d0f21d3cd..3c6f3b283 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -307,8 +307,8 @@ public class Fluids { NAPHTHA_CRACK = new FluidType("NAPHTHA_CRACK", 0x595744, 2, 1, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x5F6D44)).addTraits(new FT_Flammable(125_000), new FT_Combustible(FuelGrade.MEDIUM, 200_000), LIQUID, VISCOUS, P_FUEL); LIGHTOIL_CRACK = new FluidType("LIGHTOIL_CRACK", 0x8c7451, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0xB46B52)).addTraits(new FT_Flammable(200_000), new FT_Combustible(FuelGrade.MEDIUM, 500_000), LIQUID, P_FUEL); DIESEL_CRACK = new FluidType("DIESEL_CRACK", 0xf2eed5, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0xFF2C2C)).addTraits(new FT_Flammable(200_000), new FT_Combustible(FuelGrade.HIGH, 450_000), LIQUID, P_FUEL); - AROMATICS = new FluidType("AROMATICS", 0x68A09A, 1, 4, 1, EnumSymbol.NONE).addTraits(new FT_Flammable(25_000), LIQUID, VISCOUS, P_GAS); - UNSATURATEDS = new FluidType("UNSATURATEDS", 0x628FAE, 1, 4, 1, EnumSymbol.NONE).addTraits(new FT_Flammable(1_000_000), GASEOUS, P_GAS); //acetylene burns as hot as satan's asshole + AROMATICS = new FluidType("AROMATICS", 0x68A09A, 1, 4, 1, EnumSymbol.NONE).addContainers(new CD_Gastank(0x68A09A, 0xEDCF27)).addTraits(new FT_Flammable(25_000), LIQUID, VISCOUS, P_GAS); + UNSATURATEDS = new FluidType("UNSATURATEDS", 0x628FAE, 1, 4, 1, EnumSymbol.NONE).addContainers(new CD_Gastank(0x628FAE, 0xEDCF27)).addTraits(new FT_Flammable(1_000_000), GASEOUS, P_GAS); //acetylene burns as hot as satan's asshole SALIENT = new FluidType("SALIENT", 0x457F2D, 0, 0, 0, EnumSymbol.NONE).addTraits(DELICIOUS, LIQUID, VISCOUS); XPJUICE = new FluidType("XPJUICE", 0xBBFF09, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); ENDERJUICE = new FluidType("ENDERJUICE", 0x127766, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineAmmoPress.java b/src/main/java/com/hbm/inventory/gui/GUIMachineAmmoPress.java index 8f304b80f..94c5499c9 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineAmmoPress.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineAmmoPress.java @@ -282,7 +282,9 @@ public class GUIMachineAmmoPress extends GuiInfoContainer { GL11.glDisable(GL11.GL_BLEND); } } - + + RenderHelper.disableStandardItemLighting(); + GL11.glColor4f(1F, 1F, 1F, 1F); this.search.drawTextBox(); } diff --git a/src/main/java/com/hbm/inventory/material/Mats.java b/src/main/java/com/hbm/inventory/material/Mats.java index adfa898fb..122b660cb 100644 --- a/src/main/java/com/hbm/inventory/material/Mats.java +++ b/src/main/java/com/hbm/inventory/material/Mats.java @@ -137,13 +137,13 @@ public class Mats { public static final NTMMaterial MAT_MINGRADE = makeSmeltable(_AS + 1, MINGRADE, 0xFFBA7D, 0xAF1700, 0xE44C0F).setAutogen(WIRE, DUST, BLOCK).m(); public static final NTMMaterial MAT_ALLOY = makeSmeltable(_AS + 2, ALLOY, 0xFF8330, 0x700000, 0xFF7318).setAutogen(WIRE, DUST, DENSEWIRE, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT).m(); public static final NTMMaterial MAT_DURA = makeSmeltable(_AS + 3, DURA, 0x183039, 0x030B0B, 0x376373).setAutogen(BOLT, DUST, PIPE, BLOCK, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER, GRIP).m(); - public static final NTMMaterial MAT_DESH = makeSmeltable(_AS + 12, DESH, 0xFF6D6D, 0x720000, 0xF22929).setAutogen(DUST, CASTPLATE, BLOCK, HEAVY_COMPONENT).m(); + public static final NTMMaterial MAT_DESH = makeSmeltable(_AS + 12, DESH, 0xFF6D6D, 0x720000, 0xF22929).setAutogen(DUST, CASTPLATE, BLOCK, HEAVY_COMPONENT, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, STOCK, GRIP).m(); public static final NTMMaterial MAT_STAR = makeSmeltable(_AS + 5, STAR, 0xCCCCEA, 0x11111A, 0xA5A5D3).setAutogen(DUST, DENSEWIRE, BLOCK).m(); - public static final NTMMaterial MAT_FERRO = makeSmeltable(_AS + 7, FERRO, 0xB7B7C9, 0x101022, 0x6B6B8B).m(); - public static final NTMMaterial MAT_TCALLOY = makeSmeltable(_AS + 6, TCALLOY, 0xD4D6D6, 0x323D3D, 0x9CA6A6).setAutogen(DUST, CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT).m(); - public static final NTMMaterial MAT_CDALLOY = makeSmeltable(_AS + 13, CDALLOY, 0xF7DF8F, 0x604308, 0xFBD368).setAutogen(CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT).m(); - public static final NTMMaterial MAT_BBRONZE = makeSmeltable(_AS + 16, BBRONZE, 0xE19A69, 0x485353, 0x987D65).setAutogen(CASTPLATE).m(); - public static final NTMMaterial MAT_ABRONZE = makeSmeltable(_AS + 17, ABRONZE, 0xDB9462, 0x203331, 0x77644D).setAutogen(CASTPLATE).m(); + public static final NTMMaterial MAT_FERRO = makeSmeltable(_AS + 7, FERRO, 0xB7B7C9, 0x101022, 0x6B6B8B).setAutogen(HEAVYBARREL, HEAVYRECEIVER).m(); + public static final NTMMaterial MAT_TCALLOY = makeSmeltable(_AS + 6, TCALLOY, 0xD4D6D6, 0x323D3D, 0x9CA6A6).setAutogen(DUST, CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER).m(); + public static final NTMMaterial MAT_CDALLOY = makeSmeltable(_AS + 13, CDALLOY, 0xF7DF8F, 0x604308, 0xFBD368).setAutogen(CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER).m(); + public static final NTMMaterial MAT_BBRONZE = makeSmeltable(_AS + 16, BBRONZE, 0xE19A69, 0x485353, 0x987D65).setAutogen(CASTPLATE, LIGHTBARREL, LIGHTRECEIVER).m(); + public static final NTMMaterial MAT_ABRONZE = makeSmeltable(_AS + 17, ABRONZE, 0xDB9462, 0x203331, 0x77644D).setAutogen(CASTPLATE, LIGHTBARREL, LIGHTRECEIVER).m(); public static final NTMMaterial MAT_BSCCO = makeSmeltable(_AS + 18, BSCCO, 0x767BF1, 0x000000, 0x5E62C0).setAutogen(DENSEWIRE).m(); public static final NTMMaterial MAT_MAGTUNG = makeSmeltable(_AS + 8, MAGTUNG, 0x22A2A2, 0x0F0F0F, 0x22A2A2).setAutogen(WIRE, DUST, DENSEWIRE, BLOCK).m(); public static final NTMMaterial MAT_CMB = makeSmeltable(_AS + 9, CMB, 0x6F6FB4, 0x000011, 0x6F6FB4).setAutogen(DUST, PLATE, CASTPLATE, WELDEDPLATE, BLOCK).m(); @@ -152,11 +152,16 @@ public class Mats { public static final NTMMaterial MAT_SLAG = makeSmeltable(_AS + 11, SLAG, 0x554940, 0x34281F, 0x6C6562).setAutogen(BLOCK).n(); public static final NTMMaterial MAT_MUD = makeSmeltable(_AS + 14, MUD, 0xBCB5A9, 0x481213, 0x96783B).n(); public static final NTMMaterial MAT_GUNMETAL = makeSmeltable(_AS + 19, GUNMETAL, 0xFFEF3F, 0xAD3600, 0xF9C62C).setAutogen(LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER, MECHANISM, STOCK, GRIP).n(); - public static final NTMMaterial MAT_WEAPONSTEEL = makeSmeltable(_AS + 20, WEAPONSTEEL, 0xA0A0A0, 0x000000, 0x808080).setAutogen(LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER, MECHANISM, STOCK, GRIP).n(); - public static final NTMMaterial MAT_SATURN = makeSmeltable(_AS + 4, BIGMT, 0x3AC4DA, 0x09282C, 0x30A4B7).setAutogen(PLATE, CASTPLATE, BLOCK, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER, MECHANISM, STOCK, GRIP).m(); + public static final NTMMaterial MAT_WEAPONSTEEL = makeSmeltable(_AS + 20, WEAPONSTEEL, 0xA0A0A0, 0x000000, 0x808080).setAutogen(SHELL, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER, MECHANISM, STOCK, GRIP).n(); + public static final NTMMaterial MAT_SATURN = makeSmeltable(_AS + 4, BIGMT, 0x3AC4DA, 0x09282C, 0x30A4B7).setAutogen(PLATE, CASTPLATE, SHELL, BLOCK, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER, MECHANISM, STOCK, GRIP).m(); //Extension public static final NTMMaterial MAT_RAREEARTH = makeNonSmeltable(_ES + 00, RAREEARTH, 0xC1BDBD, 0x384646, 0x7B7F7F).setAutogen(FRAGMENT).n(); + public static final NTMMaterial MAT_POLYMER = makeNonSmeltable(_ES + 01, POLYMER, 0x363636, 0x040404, 0x272727).setAutogen(STOCK, GRIP).n(); + public static final NTMMaterial MAT_BAKELITE = makeNonSmeltable(_ES + 02, BAKELITE, 0xF28086, 0x2B0608, 0xC93940).setAutogen(STOCK, GRIP).n(); + public static final NTMMaterial MAT_RUBBER = makeNonSmeltable(_ES + 03, RUBBER, 0x817F75, 0x0F0D03, 0x4B4A3F).setAutogen(PIPE, GRIP).n(); + public static final NTMMaterial MAT_HARDPLASTIC = makeNonSmeltable(_ES + 04, PC, 0xEDE7C4, 0x908A67, 0xE1DBB8).setAutogen(STOCK, GRIP).n(); + public static final NTMMaterial MAT_PVC = makeNonSmeltable(_ES + 05, PVC, 0xFCFCFC, 0x9F9F9F, 0xF0F0F0).setAutogen(STOCK, GRIP).n(); public static NTMMaterial makeSmeltable(int id, DictFrame dict, int color) { return makeSmeltable(id, dict, color, color, color); } diff --git a/src/main/java/com/hbm/inventory/recipes/AmmoPressRecipes.java b/src/main/java/com/hbm/inventory/recipes/AmmoPressRecipes.java index af8c71dbd..eca9aac34 100644 --- a/src/main/java/com/hbm/inventory/recipes/AmmoPressRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AmmoPressRecipes.java @@ -2,6 +2,7 @@ package com.hbm.inventory.recipes; import java.io.IOException; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import static com.hbm.inventory.OreDictManager.*; @@ -14,6 +15,7 @@ import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ItemEnums.EnumCasingType; import com.hbm.items.ModItems; @@ -41,6 +43,7 @@ public class AmmoPressRecipes extends SerializableRecipe { OreDictStack smokeless = new OreDictStack(ANY_SMOKELESS.dust()); OreDictStack he = new OreDictStack(ANY_HIGHEXPLOSIVE.ingot()); OreDictStack wp = new OreDictStack(P_WHITE.ingot()); + OreDictStack rp = new OreDictStack(P_RED.dust()); ComparableStack cSmall = new ComparableStack(ModItems.casing, 1, EnumCasingType.SMALL); ComparableStack cBig = new ComparableStack(ModItems.casing, 1, EnumCasingType.LARGE); ComparableStack sSmall = new ComparableStack(ModItems.casing, 1, EnumCasingType.SMALL_STEEL); @@ -229,6 +232,144 @@ public class AmmoPressRecipes extends SerializableRecipe { null, wp, null, null, smokeless, null, null, sShell, null)); + + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G26_FLARE, 4), + null, rp, null, + null, smokeless, null, + null, cBig, null)); + + ComparableStack dyn = new ComparableStack(ModItems.ball_dynamite); + OreDictStack coplate = new OreDictStack(CU.plate()); + OreDictStack diesel = new OreDictStack(Fluids.DIESEL.getDict(1_000)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G40_HE, 4), + null, dyn, null, + null, smokeless, null, + null, cBig, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G40_HEAT, 4), + coplate, he, null, + null, smokeless, null, + null, cBig, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G40_DEMO, 4), + null, he.copy(2), null, + null, smokeless, null, + null, cBig, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G40_INC, 4), + diesel, dyn, null, + null, smokeless, null, + null, cBig, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G40_PHOSPHORUS, 4), + wp, he, null, + null, smokeless, null, + null, cBig, null)); + + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.ROCKET_HE, 2), + null, dyn, null, + null, cBig, null, + null, smokeless.copy(2), null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.ROCKET_HEAT, 2), + coplate, he, null, + null, cBig, null, + null, smokeless.copy(2), null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.ROCKET_DEMO, 2), + null, he.copy(2), null, + null, cBig, null, + null, smokeless.copy(2), null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.ROCKET_INC, 2), + diesel, dyn, null, + null, cBig, null, + null, smokeless.copy(2), null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.ROCKET_PHOSPHORUS, 2), + wp, he, null, + null, cBig, null, + null, smokeless.copy(2), null)); + + OreDictStack sPlate = new OreDictStack(STEEL.plate()); + ComparableStack napalm = new ComparableStack(ModItems.canister_napalm); + OreDictStack gas = new OreDictStack(Fluids.GAS.getDict(1000)); + OreDictStack bf = new OreDictStack(Fluids.BALEFIRE.getDict(1000)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.FLAME_DIESEL, 1), + null, sPlate, null, + null, diesel, null, + null, sPlate, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.FLAME_NAPALM, 1), + null, sPlate, null, + null, napalm, null, + null, sPlate, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.FLAME_GAS, 1), + null, sPlate, null, + null, gas, null, + null, sPlate, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.FLAME_BALEFIRE, 1), + null, sPlate, null, + null, bf, null, + null, sPlate, null)); + + OreDictStack silicon = new OreDictStack(SI.billet()); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.CAPACITOR, 4), + null, plastic, null, + null, silicon.copy(4), null, + null, plastic, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.CAPACITOR_OVERCHARGE, 4), + null, plastic, null, + null, silicon.copy(6), null, + null, plastic, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.CAPACITOR_IR, 4), + null, plastic, null, + null, silicon.copy(4), null, + null, plastic, null)); + + OreDictStack lPlate = new OreDictStack(PB.plate()); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.TAU_URANIUM, 16), + null, lPlate, null, + null, uranium, null, + null, lPlate , null)); + + OreDictStack tungsten = new OreDictStack(W.ingot()); + OreDictStack ferro = new OreDictStack(FERRO.ingot()); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.COIL_TUNGSTEN, 4), + null, null, null, + null, tungsten, null, + null, null , null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.COIL_FERROURANIUM, 4), + null, null, null, + null, ferro, null, + null, null , null)); + + ComparableStack shell = new ComparableStack(ModItems.assembly_nuke); + ComparableStack tatb = new ComparableStack(ModItems.ball_tatb); + OreDictStack plutonium = new OreDictStack(PU239.nugget()); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.NUKE_STANDARD, 1), + null, plutonium, null, + null, shell, null, + null, null , null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.NUKE_DEMO, 1), + null, plutonium.copy(2), null, + null, shell, null, + null, null , null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.NUKE_HIGH, 1), + null, plutonium.copy(4), null, + null, shell, null, + null, null , null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.NUKE_TOTS, 1), + null, plutonium.copy(2), null, + null, tatb.copy(2), null, + null, sPlate.copy(4) , null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.NUKE_HIVE, 1), + null, he.copy(8), null, + null, sBig.copy(2), null, + null, sPlate.copy(4), null)); + } + + public static HashMap getRecipes() { + HashMap recipes = new HashMap(); + + for(AmmoPressRecipe recipe : AmmoPressRecipes.recipes) { + List inputs = new ArrayList(); + for(AStack stack : recipe.input) if(stack != null) inputs.add(stack); + recipes.put(inputs.toArray(new AStack[0]), recipe.output.copy()); + } + + return recipes; } @Override diff --git a/src/main/java/com/hbm/inventory/recipes/PressRecipes.java b/src/main/java/com/hbm/inventory/recipes/PressRecipes.java index d9ccaf232..dcfa350d2 100644 --- a/src/main/java/com/hbm/inventory/recipes/PressRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/PressRecipes.java @@ -20,9 +20,6 @@ import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ItemEnums.EnumBriquetteType; import com.hbm.items.ItemEnums.EnumCasingType; import com.hbm.items.ItemEnums.EnumPages; -import com.hbm.items.ItemAmmoEnums.Ammo357Magnum; -import com.hbm.items.ItemAmmoEnums.Ammo556mm; -import com.hbm.items.ItemAmmoEnums.AmmoLunaticSniper; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemStamp; import com.hbm.items.machine.ItemCircuit.EnumCircuitType; @@ -102,29 +99,6 @@ public class PressRecipes extends SerializableRecipe { makeRecipe(StampType.CIRCUIT, new OreDictStack(SI.billet()), DictFrame.fromOne(ModItems.circuit, EnumCircuitType.SILICON)); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_iron), ModItems.ammo_357.stackFromEnum(24, Ammo357Magnum.IRON)); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_steel), ModItems.ammo_357.stackFromEnum(24, Ammo357Magnum.LEAD)); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_lead), ModItems.ammo_357.stackFromEnum(24, Ammo357Magnum.NUCLEAR)); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_gold), ModItems.ammo_357.stackFromEnum(24, Ammo357Magnum.GOLD)); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_schrabidium), ModItems.ammo_357.stackFromEnum(6, Ammo357Magnum.SCHRABIDIUM)); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_nightmare), ModItems.ammo_357.stackFromEnum(24, Ammo357Magnum.NIGHTMARE1)); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_desh), ModItems.ammo_357.stackFromEnum(24, Ammo357Magnum.DESH)); - makeRecipe(StampType.C357, new OreDictStack(STEEL.ingot()), ModItems.ammo_357.stackFromEnum(24, Ammo357Magnum.STEEL)); - - makeRecipe(StampType.C44, new ComparableStack(ModItems.assembly_nopip), new ItemStack(ModItems.ammo_44, 24)); - makeRecipe(StampType.C44, new ComparableStack(ModItems.assembly_45), new ItemStack(ModItems.ammo_45, 32)); - - makeRecipe(StampType.C9, new ComparableStack(ModItems.assembly_smg), new ItemStack(ModItems.ammo_9mm, 32)); - makeRecipe(StampType.C9, new ComparableStack(ModItems.assembly_uzi), new ItemStack(ModItems.ammo_22lr, 32)); - makeRecipe(StampType.C9, new OreDictStack(GOLD.ingot()), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.GOLD)); - makeRecipe(StampType.C9, new ComparableStack(ModItems.assembly_lacunae), new ItemStack(ModItems.ammo_5mm, 64)); - makeRecipe(StampType.C9, new ComparableStack(ModItems.assembly_556), new ItemStack(ModItems.ammo_556, 32)); - - makeRecipe(StampType.C50, new ComparableStack(ModItems.assembly_calamity), new ItemStack(ModItems.ammo_50bmg, 12)); - makeRecipe(StampType.C50, new ComparableStack(ModItems.assembly_actionexpress), new ItemStack(ModItems.ammo_50ae, 12)); - makeRecipe(StampType.C50, new ComparableStack(ModItems.assembly_luna), ModItems.ammo_luna_sniper.stackFromEnum(4, AmmoLunaticSniper.SABOT)); - makeRecipe(StampType.C50, new ComparableStack(ModItems.assembly_762), new ItemStack(ModItems.ammo_762, 32)); - makeRecipe(StampType.PRINTING1, new ComparableStack(Items.paper), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE1)); makeRecipe(StampType.PRINTING2, new ComparableStack(Items.paper), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE2)); makeRecipe(StampType.PRINTING3, new ComparableStack(Items.paper), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE3)); diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 767950bd8..3134e4d8c 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -18,7 +18,6 @@ import com.hbm.inventory.material.Mats; import com.hbm.inventory.material.NTMMaterial; import com.hbm.inventory.recipes.AssemblerRecipes; import com.hbm.inventory.recipes.AssemblerRecipes.AssemblerRecipe; -import com.hbm.items.ItemAmmoEnums.*; import com.hbm.items.ItemEnums.EnumChunkType; import com.hbm.items.ModItems; import com.hbm.items.food.ItemFlask.EnumInfusion; @@ -27,7 +26,6 @@ import com.hbm.items.machine.ItemCircuit.EnumCircuitType; import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.init.Items; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.OreDictionary; @@ -83,10 +81,11 @@ public class AnvilRecipes { smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.cobalt_decorated_shovel, 1), new ComparableStack(ModItems.cobalt_shovel), new ComparableStack(ModItems.ingot_meteorite))); smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.cobalt_decorated_hoe, 1), new ComparableStack(ModItems.cobalt_hoe), new ComparableStack(ModItems.ingot_meteorite))); - smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModItems.gun_ar15, 1), new ComparableStack(ModItems.gun_thompson), new ComparableStack(ModItems.pipe_lead))); smithingRecipes.add(new AnvilSmithingRecipe(1916169, new ItemStack(ModItems.wings_murk, 1), new ComparableStack(ModItems.wings_limp), new ComparableStack(ModItems.particle_tachyon))); smithingRecipes.add(new AnvilSmithingRecipe(4, new ItemStack(ModItems.flask_infusion, 1, EnumInfusion.SHIELD.ordinal()), new ComparableStack(ModItems.gem_alexandrite), new ComparableStack(ModItems.bottle_nuka))); + smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModItems.ingot_gunmetal, 1), new OreDictStack(CU.ingot()), new OreDictStack(AL.ingot()))); + smithingRecipes.add(new AnvilSmithingMold(0, new OreDictStack(GOLD.nugget()), new OreDictStack("nugget"))); smithingRecipes.add(new AnvilSmithingMold(1, new OreDictStack(U.billet()), new OreDictStack("billet"))); smithingRecipes.add(new AnvilSmithingMold(2, new OreDictStack(IRON.ingot()), new OreDictStack("ingot"))); @@ -184,9 +183,13 @@ public class AnvilRecipes { for(NTMMaterial mat : Mats.orderedList) if(mat.autogen.contains(MaterialShapes.SHELL)) constructionRecipes.add(new AnvilConstructionRecipe( new OreDictStack(MaterialShapes.PLATE.name() + mat.names[0], 4), new AnvilOutput(new ItemStack(ModItems.shell, 1, mat.id))).setTier(1)); - for(NTMMaterial mat : Mats.orderedList) if(mat.autogen.contains(MaterialShapes.PIPE)) constructionRecipes.add(new AnvilConstructionRecipe( - new OreDictStack(MaterialShapes.PLATE.name() + mat.names[0], 3), - new AnvilOutput(new ItemStack(ModItems.pipe, 1, mat.id))).setTier(1)); + for(NTMMaterial mat : Mats.orderedList) if(mat.autogen.contains(MaterialShapes.PIPE)) { + String key = (OreDictionary.doesOreNameExist(MaterialShapes.PLATE.name() + mat.names[0]) ? + MaterialShapes.PLATE.name() + mat.names[0] : MaterialShapes.INGOT.name() + mat.names[0]); + constructionRecipes.add(new AnvilConstructionRecipe( + new OreDictStack(key, 3), + new AnvilOutput(new ItemStack(ModItems.pipe, 1, mat.id))).setTier(1)); + } constructionRecipes.add(new AnvilConstructionRecipe( new ComparableStack(ModItems.coil_copper, 2), @@ -570,6 +573,11 @@ public class AnvilRecipes { public static void registerConstructionAmmo() { + constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.stamp_iron_flat), new OreDictStack(GUNMETAL.ingot(), 2)}, new AnvilOutput(new ItemStack(ModItems.stamp_9))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.stamp_iron_flat), new OreDictStack(GUNMETAL.ingot(), 2)}, new AnvilOutput(new ItemStack(ModItems.stamp_50))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.stamp_desh_flat), new OreDictStack(WEAPONSTEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.stamp_desh_9))).setTier(4)); + constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.stamp_desh_flat), new OreDictStack(WEAPONSTEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.stamp_desh_50))).setTier(4)); + constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 22))).setTier(2)); constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 23))).setTier(2)); constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 24))).setTier(2)); @@ -578,112 +586,8 @@ public class AnvilRecipes { constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 27))).setTier(2)); constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 28))).setTier(2)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CU.plate()), new AnvilOutput(new ItemStack(ModItems.casing_357))).setTier(1)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CU.plate()), new AnvilOutput(new ItemStack(ModItems.casing_44))).setTier(1)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CU.plate()), new AnvilOutput(new ItemStack(ModItems.casing_9))).setTier(1)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CU.plate()), new AnvilOutput(new ItemStack(ModItems.casing_50))).setTier(1)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CU.plate()), new AnvilOutput(new ItemStack(ModItems.casing_buckshot))).setTier(1)); - pullFromAssembler(new ComparableStack(ModItems.pellet_buckshot), 1); pullFromAssembler(new ComparableStack(ModItems.pellet_canister), 1); - - constructionRecipes.add(new AnvilConstructionRecipe( new AStack[]{ - new ComparableStack(ModItems.powder_chlorophyte, 1), - new OreDictStack(PB.nugget(), 12),}, - new AnvilOutput(new ItemStack(ModItems.pellet_chlorophyte, 2))).setTier(1)); - - Object[][] recs = new Object[][] { - {ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.STOCK), P_RED.dust(), ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.INCENDIARY), 2}, - {ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.STOCK), Item.getItemFromBlock(ModBlocks.gravel_obsidian), ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.SHRAPNEL), 2}, - {ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.STOCK), U238.ingot(), ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.DU), 3}, - {ModItems.ammo_12gauge.stackFromEnum(120, Ammo12Gauge.STOCK), ModItems.coin_maskman, ModItems.ammo_12gauge.stackFromEnum(120, Ammo12Gauge.SLEEK), 4}, - - {ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), P_RED.dust(), ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.INCENDIARY), 2}, - {ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), Item.getItemFromBlock(ModBlocks.gravel_obsidian), ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.SHRAPNEL), 2}, - {ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), ModItems.powder_poison, ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.CAUSTIC), 2}, - {ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), DIAMOND.dust(), ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.SHOCK), 2}, - {ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), Item.getItemFromBlock(Blocks.soul_sand), ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.WITHER), 3}, - {ModItems.ammo_20gauge.stackFromEnum(120, Ammo20Gauge.STOCK), ModItems.coin_maskman, ModItems.ammo_20gauge.stackFromEnum(120, Ammo20Gauge.SLEEK), 4}, - - {ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.FLECHETTE), P_WHITE.ingot(), ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.FLECHETTE_PHOSPHORUS), 2}, - {ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.EXPLOSIVE), ModItems.egg_balefire_shard, ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.BALEFIRE), 4}, - {ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.EXPLOSIVE), ModItems.ammo_rocket, ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.KAMPF), 2}, - {ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.KAMPF), ModItems.pellet_canister, ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.CANISTER), 3}, - {ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.STOCK), ModItems.pellet_claws, ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.CLAW), 5}, - {ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.STOCK), ModItems.toothpicks, ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.VAMPIRE), 5}, - {ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.STOCK), ModItems.pellet_charged, ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.VOID), 5}, - {ModItems.ammo_4gauge.stackFromEnum(120, Ammo4Gauge.STOCK), ModItems.coin_maskman, ModItems.ammo_4gauge.stackFromEnum(120, Ammo4Gauge.SLEEK), 4}, - - {ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.STOCK), DURA.ingot(), ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.AP), 2}, - {ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.STOCK), U238.ingot(), ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.DU), 2}, - {ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.STOCK), P_WHITE.ingot(), ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.PHOSPHORUS), 2}, - {ModItems.ammo_44.stackFromEnum(12, Ammo44Magnum.DU), STAR.ingot(), ModItems.ammo_44.stackFromEnum(12, Ammo44Magnum.STAR), 3}, - {ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.CHLOROPHYTE), 3}, - - {ModItems.ammo_45.stackFromEnum(32, Ammo45ACP.STOCK), DURA.ingot(), ModItems.ammo_45.stackFromEnum(32, Ammo45ACP.AP), 3}, - {ModItems.ammo_45.stackFromEnum(32, Ammo45ACP.STOCK), U238.ingot(), ModItems.ammo_45.stackFromEnum(32, Ammo45ACP.DU), 3}, - - {ModItems.ammo_5mm.stackFromEnum(128, Ammo5mm.STOCK), ModItems.ingot_semtex, ModItems.ammo_5mm.stackFromEnum(128, Ammo5mm.EXPLOSIVE), 2}, - {ModItems.ammo_5mm.stackFromEnum(128, Ammo5mm.STOCK), U238.ingot(), ModItems.ammo_5mm.stackFromEnum(128, Ammo5mm.DU), 2}, - {ModItems.ammo_5mm.stackFromEnum(32, Ammo5mm.DU), STAR.ingot(), ModItems.ammo_5mm.stackFromEnum(32, Ammo5mm.STAR), 3}, - {ModItems.ammo_5mm.stackFromEnum(128, Ammo5mm.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_5mm.stackFromEnum(128, Ammo5mm.CHLOROPHYTE), 3}, - - {ModItems.ammo_9mm.stackFromEnum(32, Ammo9mm.STOCK), DURA.ingot(), ModItems.ammo_9mm.stackFromEnum(32, Ammo9mm.AP), 2}, - {ModItems.ammo_9mm.stackFromEnum(32, Ammo9mm.STOCK), U238.ingot(), ModItems.ammo_9mm.stackFromEnum(32, Ammo9mm.DU), 2}, - {ModItems.ammo_9mm.stackFromEnum(32, Ammo9mm.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_9mm.stackFromEnum(32, Ammo9mm.CHLOROPHYTE), 3}, - - {ModItems.ammo_22lr.stackFromEnum(32, Ammo22LR.STOCK), DURA.ingot(), ModItems.ammo_22lr.stackFromEnum(32, Ammo22LR.AP), 2}, - {ModItems.ammo_22lr.stackFromEnum(32, Ammo22LR.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_22lr.stackFromEnum(32, Ammo22LR.CHLOROPHYTE), 3}, - - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), P_RED.dust(), ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.INCENDIARY), 2}, - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), P_WHITE.ingot(), ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.PHOSPHORUS), 2}, - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), ModItems.ingot_semtex, ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.EXPLOSIVE), 2}, - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), DURA.ingot(), ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.AP), 2}, - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), U238.ingot(), ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.DU), 2}, - {ModItems.ammo_50bmg.stackFromEnum(8, Ammo50BMG.DU), STAR.ingot(), ModItems.ammo_50bmg.stackFromEnum(8, Ammo50BMG.STAR), 3}, - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.CHLOROPHYTE), 3}, - {ModItems.ammo_50bmg.stackFromEnum(128, Ammo50BMG.STOCK), ModItems.coin_maskman, ModItems.ammo_50bmg.stackFromEnum(128, Ammo50BMG.SLEEK), 4}, - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), ModItems.pellet_flechette, ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.FLECHETTE), 2}, - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.FLECHETTE), ModItems.nugget_am_mix, ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.FLECHETTE_AM), 3}, - {ModItems.ammo_50bmg.stackFromEnum(32, Ammo50BMG.FLECHETTE), ModItems.powder_polonium, ModItems.ammo_50bmg.stackFromEnum(32, Ammo50BMG.FLECHETTE_PO), 3}, - - {ModItems.ammo_50ae.stackFromEnum(32, Ammo50AE.STOCK), DURA.ingot(), ModItems.ammo_50ae.stackFromEnum(32, Ammo50AE.AP), 2}, - {ModItems.ammo_50ae.stackFromEnum(32, Ammo50AE.STOCK), U238.ingot(), ModItems.ammo_50ae.stackFromEnum(32, Ammo50AE.DU), 2}, - {ModItems.ammo_50ae.stackFromEnum(16, Ammo50AE.DU), STAR.ingot(), ModItems.ammo_50ae.stackFromEnum(16, Ammo50AE.STAR), 3}, - {ModItems.ammo_50ae.stackFromEnum(32, Ammo50AE.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_50ae.stackFromEnum(32, Ammo50AE.CHLOROPHYTE), 3}, - - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.STOCK), P_WHITE.ingot(), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.PHOSPHORUS), 2}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.STOCK), DURA.ingot(), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.AP), 2}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.STOCK), U238.ingot(), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.DU), 2}, - {ModItems.ammo_556.stackFromEnum(16, Ammo556mm.DU), STAR.ingot(), ModItems.ammo_556.stackFromEnum(16, Ammo556mm.STAR), 3}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_556.stackFromEnum(32, Ammo556mm.CHLOROPHYTE), 3}, - {ModItems.ammo_556.stackFromEnum(128, Ammo556mm.STOCK), ModItems.coin_maskman, ModItems.ammo_556.stackFromEnum(128, Ammo556mm.SLEEK), 4}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.STOCK), Items.redstone, ModItems.ammo_556.stackFromEnum(32, Ammo556mm.TRACER), 2}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.STOCK), ModItems.pellet_flechette, ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE), 2}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE), P_RED.dust(), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE_INCENDIARY), 2}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE), P_WHITE.ingot(), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE_PHOSPHORUS), 2}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE), U238.ingot(), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE_DU), 2}, - {ModItems.ammo_556.stackFromEnum(100, Ammo556mm.FLECHETTE), ModItems.coin_maskman, ModItems.ammo_556.stackFromEnum(128, Ammo556mm.FLECHETTE_SLEEK), 4}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE), ModItems.pellet_chlorophyte, ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE_CHLOROPHYTE), 3}, - - {ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.STOCK), Items.redstone, ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.TRACER), 2}, - {ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.STOCK), DURA.ingot(), ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.AP), 2}, - {ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.STOCK), P_WHITE.ingot(), ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.PHOSPHORUS), 2}, - {ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.STOCK), U238.ingot(), ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.DU), 2} - }; - - for(Object[] objs : recs) { - - ComparableStack ammoIn = new ComparableStack((ItemStack) objs[0]); - ItemStack out = (ItemStack) objs[2]; - - if(objs[1] instanceof Item) { - constructionRecipes.add(new AnvilConstructionRecipe(new AStack[] { ammoIn, new ComparableStack((Item)objs[1], 1) }, new AnvilOutput(out)).setTier((int)objs[3])); - - } else if(objs[1] instanceof String) { - constructionRecipes.add(new AnvilConstructionRecipe(new AStack[] { ammoIn, new OreDictStack((String)objs[1], 1) }, new AnvilOutput(out)).setTier((int)objs[3])); - } - } } public static void registerConstructionUpgrades() { diff --git a/src/main/java/com/hbm/itempool/ItemPool.java b/src/main/java/com/hbm/itempool/ItemPool.java index a112f92a5..b9b537d43 100644 --- a/src/main/java/com/hbm/itempool/ItemPool.java +++ b/src/main/java/com/hbm/itempool/ItemPool.java @@ -25,6 +25,7 @@ public class ItemPool { ItemPoolsRedRoom.init(); ItemPoolsSatellite.init(); ItemPoolsPile.init(); + ItemPoolsC130.init(); } public static HashMap pools = new HashMap(); diff --git a/src/main/java/com/hbm/itempool/ItemPoolsC130.java b/src/main/java/com/hbm/itempool/ItemPoolsC130.java new file mode 100644 index 000000000..63e3fb695 --- /dev/null +++ b/src/main/java/com/hbm/itempool/ItemPoolsC130.java @@ -0,0 +1,60 @@ +package com.hbm.itempool; + +import static com.hbm.lib.HbmChestContents.weighted; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; + +import net.minecraft.util.WeightedRandomChestContent; + +public class ItemPoolsC130 { + + public static final String POOL_SUPPLIES = "POOL_SUPPLIES"; + public static final String POOL_WEAPONS = "POOL_WEAPONS"; + public static final String POOL_AMMO = "POOL_AMMO"; + + + public static void init() { + + new ItemPool(POOL_SUPPLIES) {{ + this.pool = new WeightedRandomChestContent[] { + weighted(ModItems.definitelyfood, 0, 3, 10, 25), + weighted(ModItems.syringe_metal_stimpak, 0, 1, 3, 10), + weighted(ModItems.pill_iodine, 0, 1, 2, 2), + weighted(ModItems.canister_full, Fluids.DIESEL.getID(), 1, 4, 5), + weighted(ModBlocks.machine_diesel, 0, 1, 1, 1), + weighted(ModItems.geiger_counter, 0, 1, 1, 2), + weighted(ModItems.med_bag, 0, 1, 1, 3), + weighted(ModItems.radaway, 0, 1, 5, 10), + }; + }}; + + new ItemPool(POOL_WEAPONS) {{ + this.pool = new WeightedRandomChestContent[] { + weighted(ModItems.gun_light_revolver, 0, 1, 1, 10), + weighted(ModItems.gun_henry, 0, 1, 1, 10), + weighted(ModItems.gun_maresleg, 0, 1, 1, 10), + weighted(ModItems.gun_greasegun, 0, 1, 1, 10), + weighted(ModItems.gun_carbine, 0, 1, 1, 5), + weighted(ModItems.gun_heavy_revolver, 0, 1, 1, 5), + weighted(ModItems.gun_panzerschreck, 0, 1, 1, 2), + }; + }}; + + new ItemPool(POOL_AMMO) {{ + this.pool = new WeightedRandomChestContent[] { + weighted(ModItems.ammo_standard, EnumAmmo.M357_SP.ordinal(), 12, 12, 10), + weighted(ModItems.ammo_standard, EnumAmmo.M357_FMJ.ordinal(), 6, 6, 10), + weighted(ModItems.ammo_standard, EnumAmmo.M44_SP.ordinal(), 12, 12, 5), + weighted(ModItems.ammo_standard, EnumAmmo.M44_FMJ.ordinal(), 6, 6, 5), + weighted(ModItems.ammo_standard, EnumAmmo.P9_SP.ordinal(), 12, 12, 10), + weighted(ModItems.ammo_standard, EnumAmmo.P9_FMJ.ordinal(), 6, 6, 10), + weighted(ModItems.ammo_standard, EnumAmmo.R762_SP.ordinal(), 6, 6, 5), + weighted(ModItems.ammo_standard, EnumAmmo.G12_BP.ordinal(), 6, 6, 10), + weighted(ModItems.ammo_standard, EnumAmmo.ROCKET_HE.ordinal(), 1, 1, 3), + }; + }}; + } +} diff --git a/src/main/java/com/hbm/itempool/ItemPoolsComponent.java b/src/main/java/com/hbm/itempool/ItemPoolsComponent.java index 05bfdeb52..02d14641c 100644 --- a/src/main/java/com/hbm/itempool/ItemPoolsComponent.java +++ b/src/main/java/com/hbm/itempool/ItemPoolsComponent.java @@ -77,7 +77,6 @@ public class ItemPoolsComponent { weighted(ModItems.gas_mask_m65, 0, 1, 1, 5), weighted(ModItems.battery_advanced, 0, 1, 1, 5), weighted(ModItems.designator, 0, 1, 1, 5), - weighted(ModItems.crate_caller, 0, 1, 1, 1), weighted(ModItems.thruster_small, 0, 1, 1, 5), weighted(ModItems.thruster_medium, 0, 1, 1, 4), weighted(ModItems.fuel_tank_small, 0, 1, 1, 5), diff --git a/src/main/java/com/hbm/itempool/ItemPoolsLegacy.java b/src/main/java/com/hbm/itempool/ItemPoolsLegacy.java index e1e19bd3d..184745765 100644 --- a/src/main/java/com/hbm/itempool/ItemPoolsLegacy.java +++ b/src/main/java/com/hbm/itempool/ItemPoolsLegacy.java @@ -119,7 +119,6 @@ public class ItemPoolsLegacy { weighted(ModItems.battery_advanced_cell, 0, 1, 1, 2), weighted(ModItems.battery_schrabidium, 0, 1, 1, 1), weighted(ModItems.syringe_awesome, 0, 1, 1, 1), - weighted(ModItems.crate_caller, 0, 1, 1, 3), weighted(ModItems.fusion_core, 0, 1, 1, 4), weighted(ModItems.bottle_nuka, 0, 1, 3, 6), weighted(ModItems.bottle_quantum, 0, 1, 1, 3), @@ -205,7 +204,6 @@ public class ItemPoolsLegacy { weighted(ModItems.bottle_nuka, 0, 1, 3, 6), weighted(ModItems.bottle_quantum, 0, 1, 1, 3), weighted(ModItems.stealth_boy, 0, 1, 1, 7), - weighted(ModItems.crate_caller, 0, 1, 1, 3), weighted(ModItems.gas_mask_m65, 0, 1, 1, 5), weighted(ModItems.gas_mask_filter, 0, 1, 1, 5), weighted(ModItems.grenade_nuclear, 0, 1, 2, 2), diff --git a/src/main/java/com/hbm/itempool/ItemPoolsSingle.java b/src/main/java/com/hbm/itempool/ItemPoolsSingle.java index f4c1105db..10519c924 100644 --- a/src/main/java/com/hbm/itempool/ItemPoolsSingle.java +++ b/src/main/java/com/hbm/itempool/ItemPoolsSingle.java @@ -70,7 +70,6 @@ public class ItemPoolsSingle { weighted(ModItems.powder_yellowcake, 0, 16, 24, 1), weighted(ModItems.gun_uzi, 0, 1, 1, 1), weighted(ModItems.gun_uzi_silencer, 0, 1, 1, 1), - weighted(ModItems.clip_uzi, 0, 1, 3, 1), weighted(ModItems.circuit, EnumCircuitType.VACUUM_TUBE.ordinal(), 12, 16, 1), weighted(ModItems.circuit, EnumCircuitType.CHIP.ordinal(), 2, 6, 1) }; @@ -91,7 +90,6 @@ public class ItemPoolsSingle { weighted(ModItems.powder_yellowcake, 0, 26, 42, 1), weighted(ModItems.ingot_u235, 0, 3, 6, 1), weighted(ModItems.gun_revolver_pip, 0, 1, 1, 1), - weighted(ModItems.clip_revolver_pip, 0, 2, 4, 1), weighted(ModItems.circuit, EnumCircuitType.CHIP.ordinal(), 18, 32, 1), weighted(ModItems.circuit, EnumCircuitType.BASIC.ordinal(), 6, 12, 1) }; @@ -100,7 +98,6 @@ public class ItemPoolsSingle { new ItemPool(POOL_VAULT_UNBREAKABLE) {{ this.pool = new WeightedRandomChestContent[] { weighted(ModItems.ammo_container, 0, 3, 6, 1), - weighted(ModItems.clip_fatman, 0, 2, 3, 1), weighted(ModItems.ammo_nuke, AmmoFatman.MIRV.ordinal(), 2, 3, 1), weighted(ModItems.gun_mirv, 0, 1, 1, 1), weighted(ModItems.gun_proto, 0, 1, 1, 1), diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index ae8fc6cd0..fbae51941 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -622,11 +622,6 @@ public class ModItems { public static Item casing; - public static Item folly_shell; - public static Item folly_bullet; - public static Item folly_bullet_nuclear; - public static Item folly_bullet_du; - public static Item wiring_red_copper; public static Item shell; public static Item pipe; @@ -786,7 +781,6 @@ public class ModItems { public static Item pellet_rtg_actinium; public static Item pellet_rtg_polonium; public static Item pellet_rtg_americium; - public static Item pellet_rtg_berkelium; public static Item pellet_rtg_gold; public static Item pellet_rtg_lead; @@ -1497,9 +1491,6 @@ public class ModItems { public static Item ammo_cell; - public static Item ammo_folly; - public static Item ammo_folly_nuclear; - public static Item ammo_folly_du; public static Item ammo_dgk; public static Item ammo_arty; public static Item ammo_himars; @@ -1526,7 +1517,6 @@ public class ModItems { public static Item gun_ar15; public static Item gun_calamity; public static Item gun_lacunae; - public static Item gun_folly; public static Item gun_proto; public static Item gun_mirv; public static Item gun_bf; @@ -1592,6 +1582,7 @@ public class ModItems { public static Item gun_pepperbox; public static Item gun_light_revolver; + public static Item gun_light_revolver_atlas; public static Item gun_light_revolver_dani; public static Item gun_henry; public static Item gun_greasegun; @@ -1606,7 +1597,10 @@ public class ModItems { public static Item gun_liberator; public static Item gun_congolake; public static Item gun_flamer; + public static Item gun_flamer_topaz; + public static Item gun_flamer_daybreaker; public static Item gun_uzi; + public static Item gun_uzi_akimbo; public static Item gun_spas12; public static Item gun_panzerschreck; public static Item gun_g3; @@ -1618,6 +1612,7 @@ public class ModItems { public static Item gun_quadro; public static Item gun_lag; public static Item gun_minigun; + public static Item gun_minigun_lacunae; public static Item gun_missile_launcher; public static Item gun_tesla_cannon; public static Item gun_stg77; @@ -1627,8 +1622,10 @@ public class ModItems { public static Item gun_coilgun; public static Item gun_hangman; public static Item gun_bolter; - + public static Item gun_folly; + public static Item ammo_standard; + public static Item ammo_secret; public static Item crucible; @@ -2261,38 +2258,6 @@ public class ModItems { public static Item loot_10; public static Item loot_15; public static Item loot_misc; - - public static Item clip_revolver_iron; - public static Item clip_revolver; - public static Item clip_revolver_gold; - public static Item clip_revolver_lead; - public static Item clip_revolver_schrabidium; - public static Item clip_revolver_cursed; - public static Item clip_revolver_nightmare; - public static Item clip_revolver_nightmare2; - public static Item clip_revolver_pip; - public static Item clip_revolver_nopip; - public static Item clip_rpg; - public static Item clip_stinger; - public static Item clip_fatman; - public static Item clip_mirv; - public static Item clip_bf; - public static Item clip_mp40; - public static Item clip_uzi; - public static Item clip_uboinik; - public static Item clip_lever_action; - public static Item clip_bolt_action; - public static Item clip_osipr; - public static Item clip_immolator; - public static Item clip_cryolator; - public static Item clip_mp; - public static Item clip_xvl1456; - public static Item clip_emp; - public static Item clip_jack; - public static Item clip_spark; - public static Item clip_hp; - public static Item clip_euthanasia; - public static Item clip_defabricator; public static Item ammo_container; @@ -2302,7 +2267,6 @@ public class ModItems { public static Item detonator_laser; public static Item detonator_deadman; public static Item detonator_de; - public static Item crate_caller; public static Item bomb_caller; public static Item meteor_remote; public static Item anchor_remote; @@ -3030,10 +2994,6 @@ public class ModItems { assembly_lacunae = new Item().setUnlocalizedName("assembly_lacunae").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_lacunae"); assembly_nuke = new Item().setUnlocalizedName("assembly_nuke").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_nuke"); assembly_luna = new Item().setUnlocalizedName("assembly_luna").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_luna"); - folly_shell = new Item().setUnlocalizedName("folly_shell").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":folly_shell"); - folly_bullet = new Item().setUnlocalizedName("folly_bullet").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":folly_bullet"); - folly_bullet_nuclear = new Item().setUnlocalizedName("folly_bullet_nuclear").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":folly_bullet_nuclear"); - folly_bullet_du = new Item().setUnlocalizedName("folly_bullet_du").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":folly_bullet_du"); casing = new ItemEnumMulti(ItemEnums.EnumCasingType.class, true, true).setUnlocalizedName("casing").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":casing"); wiring_red_copper = new ItemWiring().setUnlocalizedName("wiring_red_copper").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wiring_red_copper"); @@ -3047,7 +3007,6 @@ public class ModItems { pellet_rtg_cobalt = new ItemRTGPellet(15).setDecays(DepletedRTGMaterial.NICKEL, (long) (RTGUtil.getLifespan(5.3F, HalfLifeType.MEDIUM, false) * 1.5)).setUnlocalizedName("pellet_rtg_cobalt").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pellet_rtg_cobalt"); pellet_rtg_actinium = new ItemRTGPellet(20).setDecays(DepletedRTGMaterial.LEAD, (long) (RTGUtil.getLifespan(21.8F, HalfLifeType.MEDIUM, false) * 1.5)).setUnlocalizedName("pellet_rtg_actinium").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pellet_rtg_actinium"); pellet_rtg_americium = new ItemRTGPellet(20).setDecays(DepletedRTGMaterial.NEPTUNIUM, (long) (RTGUtil.getLifespan(4.7F, HalfLifeType.LONG, false) * 1.5)).setUnlocalizedName("pellet_rtg_americium").setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":pellet_rtg_americium"); - pellet_rtg_berkelium = new ItemRTGPellet(20).setUnlocalizedName("pellet_rtg_berkelium").setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":pellet_rtg_berkelium"); pellet_rtg_polonium = new ItemRTGPellet(50).setDecays(DepletedRTGMaterial.LEAD, (long) (RTGUtil.getLifespan(138.0F, HalfLifeType.SHORT, false) * 1.5)).setUnlocalizedName("pellet_rtg_polonium").setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":pellet_rtg_polonium"); pellet_rtg_gold = new ItemRTGPellet(VersatileConfig.rtgDecay() ? 200 : 100).setDecays(DepletedRTGMaterial.MERCURY, (long) (RTGUtil.getLifespan(2.7F, HalfLifeType.SHORT, false) * 1.5)).setUnlocalizedName("pellet_rtg_gold").setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":pellet_rtg_gold"); pellet_rtg_lead = new ItemRTGPellet(VersatileConfig.rtgDecay() ? 600 : 200).setDecays(DepletedRTGMaterial.BISMUTH, (long) (RTGUtil.getLifespan(0.3F, HalfLifeType.SHORT, false) * 1.5)).setUnlocalizedName("pellet_rtg_lead").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pellet_rtg_lead"); @@ -4049,95 +4008,89 @@ public class ModItems { ammo_stinger_rocket = new ItemAmmo(AmmoStinger.class).setUnlocalizedName("ammo_stinger_rocket"); ammo_luna_sniper = new ItemAmmo(AmmoLunaticSniper.class).setUnlocalizedName("ammo_luna_sniper"); ammo_misc = new ItemAmmo(AmmoMisc.class).setUnlocalizedName("ammo_misc"); - ammo_folly = new ItemCustomLore().setUnlocalizedName("ammo_folly"); - ammo_folly_nuclear = new ItemCustomLore().setUnlocalizedName("ammo_folly_nuclear"); - ammo_folly_du = new ItemCustomLore().setUnlocalizedName("ammo_folly_du"); ammo_arty = new ItemAmmoArty().setUnlocalizedName("ammo_arty"); ammo_himars = new ItemAmmoHIMARS().setUnlocalizedName("ammo_himars"); - gun_rpg = new ItemGunBase(GunRocketFactory.getGustavConfig()).setUnlocalizedName("gun_rpg").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_rpg"); - gun_karl = new ItemGunBase(GunRocketFactory.getKarlConfig()).setUnlocalizedName("gun_karl").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_karl"); - gun_panzerschreck = new ItemGunBase(GunRocketFactory.getPanzConfig()).setUnlocalizedName("gun_panzerschreck").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_panzerschreck"); - gun_hk69 = new ItemGunBase(GunGrenadeFactory.getHK69Config()).setUnlocalizedName("gun_hk69").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_hk69"); - //gun_congolake = new ItemGunBase(GunGrenadeFactory.getCongoConfig()).setUnlocalizedName("gun_congolake").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_congolake"); - gun_skystinger = new ItemGunBase(GunRocketHomingFactory.getSkyStingerConfig()).setUnlocalizedName("gun_skystinger").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_skystinger"); - gun_revolver = new ItemGunBase(Gun357MagnumFactory.getRevolverConfig()).setUnlocalizedName("gun_revolver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver"); - gun_revolver_saturnite = new ItemGunBase(Gun357MagnumFactory.getRevolverSaturniteConfig()).setUnlocalizedName("gun_revolver_saturnite").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_saturnite"); - gun_revolver_gold = new ItemGunBase(Gun357MagnumFactory.getRevolverGoldConfig()).setUnlocalizedName("gun_revolver_gold").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_gold"); - gun_revolver_schrabidium = new ItemGunBase(Gun357MagnumFactory.getRevolverSchrabidiumConfig()).setUnlocalizedName("gun_revolver_schrabidium").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_schrabidium"); - gun_revolver_cursed = new ItemGunBase(Gun357MagnumFactory.getRevolverCursedConfig()).setUnlocalizedName("gun_revolver_cursed").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_cursed"); - gun_revolver_nightmare = new ItemGunBase(Gun357MagnumFactory.getRevolverNightmareConfig()).setUnlocalizedName("gun_revolver_nightmare").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nightmare"); - gun_revolver_nightmare2 = new ItemGunBase(Gun357MagnumFactory.getRevolverNightmare2Config()).setUnlocalizedName("gun_revolver_nightmare2").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nightmare2"); - gun_revolver_pip = new ItemGunPip(Gun44MagnumFactory.getMacintoshConfig()).setUnlocalizedName("gun_revolver_pip").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_pip"); - gun_revolver_nopip = new ItemGunBase(Gun44MagnumFactory.getNovacConfig()).setUnlocalizedName("gun_revolver_nopip").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nopip"); - gun_revolver_blackjack = new ItemGunBase(Gun44MagnumFactory.getBlackjackConfig()).setUnlocalizedName("gun_revolver_blackjack").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_blackjack"); - gun_revolver_silver = new ItemGunBase(Gun44MagnumFactory.getSilverConfig()).setUnlocalizedName("gun_revolver_silver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_silver"); - gun_revolver_red = new ItemGunBase(Gun44MagnumFactory.getRedConfig()).setUnlocalizedName("gun_revolver_red").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_red"); - gun_deagle = new ItemGunBase(Gun50AEFactory.getDeagleConfig()).setUnlocalizedName("gun_deagle").setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_deagle"); - gun_bio_revolver = new ItemGunBio(Gun357MagnumFactory.getRevolverBioConfig()).setUnlocalizedName("gun_bio_revolver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bio_revolver"); - gun_flechette = new ItemGunBase(Gun556mmFactory.getSPIWConfig(), Gun556mmFactory.getGLauncherConfig()).setUnlocalizedName("gun_flechette").setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_flechette"); - gun_ar15 = new ItemGunBase(Gun50BMGFactory.getAR15Config(), Gun50BMGFactory.getAR15BurstConfig()).setUnlocalizedName("gun_ar15").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_ar15"); - gun_calamity = new ItemGunBase(Gun762mmFactory.getCalamityConfig()).setUnlocalizedName("gun_calamity").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_calamity"); - gun_lacunae = new ItemGunLacunae(Gun5mmFactory.getLacunaeConfig()).setUnlocalizedName("gun_lacunae").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lacunae"); - gun_folly = new GunFolly().setUnlocalizedName("gun_folly").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_folly"); - gun_proto = new ItemGunBase(GunFatmanFactory.getProtoConfig()).setUnlocalizedName("gun_proto").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fatman"); - gun_mirv = new ItemGunBase(GunFatmanFactory.getMIRVConfig()).setUnlocalizedName("gun_mirv").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mirv"); - gun_bf = new ItemGunBase(GunFatmanFactory.getBELConfig()).setUnlocalizedName("gun_bf").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_bf"); - gun_mp40 = new ItemGunBase(Gun9mmFactory.getMP40Config()).setUnlocalizedName("gun_mp40").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mp40"); - gun_thompson = new ItemGunBase(Gun45ACPFactory.getThompsonConfig()).setUnlocalizedName("gun_thompson").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_thompson"); - gun_uzi_silencer = new ItemGunBase(Gun22LRFactory.getUziConfig().silenced()).setUnlocalizedName("gun_uzi_silencer").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uzi_silencer"); - 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_benelli = new ItemGunBase(Gun12GaugeFactory.getBenelliModConfig()).setUnlocalizedName("gun_benelli").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_spas12"); - gun_supershotgun = new ItemGunShotty(Gun12GaugeFactory.getShottyConfig()).setUnlocalizedName("gun_supershotgun").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); - gun_ks23 = new ItemGunBase(Gun4GaugeFactory.getKS23Config()).setUnlocalizedName("gun_ks23").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); - gun_sauer = new ItemGunBase(Gun4GaugeFactory.getSauerConfig()).setUnlocalizedName("gun_sauer").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); - gun_lever_action = new ItemGunBase(Gun20GaugeFactory.getMareConfig()).setUnlocalizedName("gun_lever_action").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lever_action"); - gun_lever_action_dark = new ItemGunBase(Gun20GaugeFactory.getMareDarkConfig()).setUnlocalizedName("gun_lever_action_dark").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lever_action_dark"); - gun_lever_action_sonata = new GunLeverActionS().setUnlocalizedName("gun_lever_action_sonata").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lever_action_sonata"); - gun_bolt_action = new ItemGunBase(Gun762mmFactory.getBoltConfig()).setUnlocalizedName("gun_bolt_action").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action"); - gun_bolt_action_green = new ItemGunBase(Gun762mmFactory.getBoltGreenConfig()).setUnlocalizedName("gun_bolt_action_green").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action_green"); - gun_bolt_action_saturnite = new ItemGunBase(Gun762mmFactory.getBoltSaturniteConfig()).setUnlocalizedName("gun_bolt_action_saturnite").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action_saturnite"); - gun_mymy = new ItemGunBase(GunDartFactory.getMymyConfig()).setUnlocalizedName("gun_mymy").setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mymy"); + gun_rpg = new Item().setUnlocalizedName("gun_rpg").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_rpg"); + gun_karl = new Item().setUnlocalizedName("gun_karl").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_karl"); + gun_hk69 = new Item().setUnlocalizedName("gun_hk69").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_hk69"); + gun_skystinger = new Item().setUnlocalizedName("gun_skystinger").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_skystinger"); + gun_revolver = new Item().setUnlocalizedName("gun_revolver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver"); + gun_revolver_saturnite = new Item().setUnlocalizedName("gun_revolver_saturnite").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_saturnite"); + gun_revolver_gold = new Item().setUnlocalizedName("gun_revolver_gold").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_gold"); + gun_revolver_schrabidium = new Item().setUnlocalizedName("gun_revolver_schrabidium").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_schrabidium"); + gun_revolver_cursed = new Item().setUnlocalizedName("gun_revolver_cursed").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_cursed"); + gun_revolver_nightmare = new Item().setUnlocalizedName("gun_revolver_nightmare").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nightmare"); + gun_revolver_nightmare2 = new Item().setUnlocalizedName("gun_revolver_nightmare2").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nightmare2"); + gun_revolver_pip = new Item().setUnlocalizedName("gun_revolver_pip").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_pip"); + gun_revolver_nopip = new Item().setUnlocalizedName("gun_revolver_nopip").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nopip"); + gun_revolver_blackjack = new Item().setUnlocalizedName("gun_revolver_blackjack").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_blackjack"); + gun_revolver_silver = new Item().setUnlocalizedName("gun_revolver_silver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_silver"); + gun_revolver_red = new Item().setUnlocalizedName("gun_revolver_red").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_red"); + gun_deagle = new Item().setUnlocalizedName("gun_deagle").setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_deagle"); + gun_bio_revolver = new Item().setUnlocalizedName("gun_bio_revolver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bio_revolver"); + gun_flechette = new Item().setUnlocalizedName("gun_flechette").setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_flechette"); + gun_ar15 = new Item().setUnlocalizedName("gun_ar15").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_ar15"); + gun_calamity = new Item().setUnlocalizedName("gun_calamity").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_calamity"); + gun_lacunae = new Item().setUnlocalizedName("gun_lacunae").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lacunae"); + gun_proto = new Item().setUnlocalizedName("gun_proto").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fatman"); + gun_mirv = new Item().setUnlocalizedName("gun_mirv").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mirv"); + gun_bf = new Item().setUnlocalizedName("gun_bf").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_bf"); + gun_mp40 = new Item().setUnlocalizedName("gun_mp40").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mp40"); + gun_thompson = new Item().setUnlocalizedName("gun_thompson").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_thompson"); + gun_uzi_silencer = new Item().setUnlocalizedName("gun_uzi_silencer").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uzi_silencer"); + gun_uzi_saturnite = new Item().setUnlocalizedName("gun_uzi_saturnite").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uzi_saturnite"); + gun_uzi_saturnite_silencer = new Item().setUnlocalizedName("gun_uzi_saturnite_silencer").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uzi_saturnite_silencer"); + gun_uboinik = new Item().setUnlocalizedName("gun_uboinik").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); + gun_remington = new Item().setUnlocalizedName("gun_remington").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_spas12"); + gun_benelli = new Item().setUnlocalizedName("gun_benelli").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_spas12"); + gun_supershotgun = new Item().setUnlocalizedName("gun_supershotgun").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); + gun_ks23 = new Item().setUnlocalizedName("gun_ks23").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); + gun_sauer = new Item().setUnlocalizedName("gun_sauer").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); + gun_lever_action = new Item().setUnlocalizedName("gun_lever_action").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lever_action"); + gun_lever_action_dark = new Item().setUnlocalizedName("gun_lever_action_dark").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lever_action_dark"); + gun_lever_action_sonata = new Item().setUnlocalizedName("gun_lever_action_sonata").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lever_action_sonata"); + gun_bolt_action = new Item().setUnlocalizedName("gun_bolt_action").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action"); + gun_bolt_action_green = new Item().setUnlocalizedName("gun_bolt_action_green").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action_green"); + gun_bolt_action_saturnite = new Item().setUnlocalizedName("gun_bolt_action_saturnite").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action_saturnite"); + gun_mymy = new Item().setUnlocalizedName("gun_mymy").setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mymy"); gun_b92_ammo = new GunB92Cell().setUnlocalizedName("gun_b92_ammo").setMaxStackSize(1).setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_b92_ammo_alt"); gun_b92 = new GunB92().setUnlocalizedName("gun_b92").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_b92"); - gun_b93 = new GunB93().setUnlocalizedName("gun_b93").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_b93"); + gun_b93 = new Item().setUnlocalizedName("gun_b93").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_b93"); gun_xvl1456_ammo = new Item().setUnlocalizedName("gun_xvl1456_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_xvl1456_ammo"); - gun_xvl1456 = new ItemGunGauss(GunGaussFactory.getXVLConfig(), GunGaussFactory.getChargedConfig()).setUnlocalizedName("gun_xvl1456").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_xvl1456"); + gun_xvl1456 = new Item().setUnlocalizedName("gun_xvl1456").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_xvl1456"); gun_osipr_ammo = new Item().setUnlocalizedName("gun_osipr_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_osipr_ammo"); gun_osipr_ammo2 = new Item().setUnlocalizedName("gun_osipr_ammo2").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_osipr_ammo2"); - gun_osipr = new ItemGunOSIPR(GunOSIPRFactory.getOSIPRConfig(), GunOSIPRFactory.getAltConfig()).setUnlocalizedName("gun_osipr").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_osipr"); + gun_osipr = new Item().setUnlocalizedName("gun_osipr").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_osipr"); gun_immolator_ammo = new Item().setUnlocalizedName("gun_immolator_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_immolator_ammo"); gun_immolator = new Item().setUnlocalizedName("gun_immolator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_immolator"); gun_cryolator_ammo = new Item().setUnlocalizedName("gun_cryolator_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_cryolator_ammo"); - gun_cryolator = new GunCryolator().setUnlocalizedName("gun_cryolator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_cryolator"); + gun_cryolator = new Item().setUnlocalizedName("gun_cryolator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_cryolator"); gun_cryocannon = new ItemCryoCannon(GunEnergyFactory.getCryoCannonConfig()).setUnlocalizedName("gun_cryocannon").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_cryocannon"); gun_fireext = new ItemGunBase(GunEnergyFactory.getExtConfig()).setUnlocalizedName("gun_fireext").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fireext"); - gun_mp = new ItemGunBase(Gun556mmFactory.getEuphieConfig()).setUnlocalizedName("gun_mp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_pm"); - gun_bolter_digamma = new ItemGunBase(Gun75BoltFactory.getBolterConfig()).setUnlocalizedName("gun_bolter_digamma").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolter_digamma"); - gun_zomg = new ItemGunBase(GunEnergyFactory.getZOMGConfig()).setUnlocalizedName("gun_zomg").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_zomg"); - gun_revolver_inverted = new GunSuicide().setUnlocalizedName("gun_revolver_inverted").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_inverted"); + gun_mp = new Item().setUnlocalizedName("gun_mp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_pm"); + gun_bolter_digamma = new Item().setUnlocalizedName("gun_bolter_digamma").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolter_digamma"); + gun_zomg = new Item().setUnlocalizedName("gun_zomg").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_zomg"); + gun_revolver_inverted = new Item().setUnlocalizedName("gun_revolver_inverted").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_inverted"); gun_emp_ammo = new Item().setUnlocalizedName("gun_emp_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_emp_ammo"); - gun_emp = new ItemGunBase(GunEnergyFactory.getEMPConfig()).setUnlocalizedName("gun_emp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_emp"); + gun_emp = new Item().setUnlocalizedName("gun_emp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_emp"); gun_jack_ammo = new Item().setUnlocalizedName("gun_jack_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_jack_ammo"); - gun_jack = new GunJack().setUnlocalizedName("gun_jack").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_jack"); + gun_jack = new Item().setUnlocalizedName("gun_jack").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_jack"); gun_spark_ammo = new Item().setUnlocalizedName("gun_spark_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_spark_ammo"); - gun_spark = new GunSpark().setUnlocalizedName("gun_spark").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_spark"); + gun_spark = new Item().setUnlocalizedName("gun_spark").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_spark"); gun_hp_ammo = new Item().setUnlocalizedName("gun_hp_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_hp_ammo"); - gun_hp = new GunHP().setUnlocalizedName("gun_hp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_hp"); + gun_hp = new Item().setUnlocalizedName("gun_hp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_hp"); gun_euthanasia_ammo = new Item().setUnlocalizedName("gun_euthanasia_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_euthanasia_ammo"); - gun_euthanasia = new GunEuthanasia().setUnlocalizedName("gun_euthanasia").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_euthanasia"); + gun_euthanasia = new Item().setUnlocalizedName("gun_euthanasia").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_euthanasia"); gun_defabricator_ammo = new Item().setUnlocalizedName("gun_defabricator_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_defabricator_ammo"); - gun_defabricator = new GunDefabricator().setUnlocalizedName("gun_defabricator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_defabricator"); - gun_vortex = new ItemGunBase(Gun556mmFactory.getEuphieConfig()).setUnlocalizedName("gun_vortex").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_vortex"); - gun_super_shotgun = new ItemCustomLore().setUnlocalizedName("gun_super_shotgun").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_super_shotgun"); - gun_moist_nugget = new ItemNugget(3, false).setUnlocalizedName("gun_moist_nugget").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_moist_nugget"); - gun_darter = new ItemGunDart(GunDartFactory.getDarterConfig()).setFull3D().setUnlocalizedName("gun_darter").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_darter"); - gun_glass_cannon = new ItemEnergyGunBase(GunPoweredFactory.getGlassCannonConfig()).setFull3D().setUnlocalizedName("gun_glass_cannon").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_darter"); - gun_lunatic_marksman = new ItemGunBase(Gun50BMGFactory.getLunaticMarksman()).setFull3D().setUnlocalizedName("gun_lunatic_marksman").setCreativeTab(MainRegistry.weaponTab); - gun_uac_pistol = new ItemGunBase(Gun45ACPFactory.getUACPistolConfig(), Gun45ACPFactory.getUACPistolBurstConfig()).setFull3D().setUnlocalizedName("gun_uac_pistol").setCreativeTab(MainRegistry.weaponTab); + gun_defabricator = new Item().setUnlocalizedName("gun_defabricator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_defabricator"); + gun_vortex = new Item().setUnlocalizedName("gun_vortex").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_vortex"); + gun_super_shotgun = new Item().setUnlocalizedName("gun_super_shotgun").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_super_shotgun"); + gun_moist_nugget = new Item().setUnlocalizedName("gun_moist_nugget").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_moist_nugget"); + gun_darter = new Item().setFull3D().setUnlocalizedName("gun_darter").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_darter"); + gun_glass_cannon = new Item().setFull3D().setUnlocalizedName("gun_glass_cannon").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_darter"); + gun_lunatic_marksman = new Item().setFull3D().setUnlocalizedName("gun_lunatic_marksman").setCreativeTab(MainRegistry.weaponTab); + gun_uac_pistol = new Item().setFull3D().setUnlocalizedName("gun_uac_pistol").setCreativeTab(MainRegistry.weaponTab); ToolMaterial matCrucible = EnumHelper.addToolMaterial("CRUCIBLE", 10, 3, 50.0F, 100.0F, 0); crucible = new ItemCrucible(5000, 1F, matCrucible).setUnlocalizedName("crucible").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":crucible"); @@ -4434,38 +4387,6 @@ public class ModItems { loot_10 = new ItemLootCrate().setUnlocalizedName("loot_10").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":loot_10"); loot_15 = new ItemLootCrate().setUnlocalizedName("loot_15").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":loot_15"); loot_misc = new ItemLootCrate().setUnlocalizedName("loot_misc").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":loot_misc"); - - clip_revolver_iron = new ItemClip(ammo_357.stackFromEnum(20, Ammo357Magnum.IRON)).setUnlocalizedName("clip_revolver_iron").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_iron"); - clip_revolver = new ItemClip(ammo_357.stackFromEnum(12, Ammo357Magnum.LEAD)).setUnlocalizedName("clip_revolver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver"); - clip_revolver_gold = new ItemClip(ammo_357.stackFromEnum(6, Ammo357Magnum.GOLD)).setUnlocalizedName("clip_revolver_gold").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_gold"); - clip_revolver_lead = new ItemClip(ammo_357.stackFromEnum(6, Ammo357Magnum.NUCLEAR)).setUnlocalizedName("clip_revolver_lead").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_lead"); - clip_revolver_schrabidium = new ItemClip(ammo_357.stackFromEnum(2, Ammo357Magnum.SCHRABIDIUM)).setUnlocalizedName("clip_revolver_schrabidium").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_schrabidium"); - clip_revolver_cursed = new ItemClip(ammo_357.stackFromEnum(17, Ammo357Magnum.STEEL)).setUnlocalizedName("clip_revolver_cursed").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_cursed"); - clip_revolver_nightmare = new ItemClip(ammo_357.stackFromEnum(6, Ammo357Magnum.NIGHTMARE1)).setUnlocalizedName("clip_revolver_nightmare").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_nightmare"); - clip_revolver_nightmare2 = new ItemClip(ammo_357.stackFromEnum(6, Ammo357Magnum.NIGHTMARE2)).setUnlocalizedName("clip_revolver_nightmare2").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_nightmare2"); - clip_revolver_pip = new ItemClip(ammo_44.stackFromEnum(6, Ammo44Magnum.PIP)).setUnlocalizedName("clip_revolver_pip").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_pip"); - clip_revolver_nopip = new ItemClip(ammo_44.stackFromEnum(6, Ammo44Magnum.STOCK)).setUnlocalizedName("clip_revolver_nopip").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_nopip"); - clip_rpg = new ItemClip(ammo_rocket.stackFromEnum(4, AmmoRocket.STOCK)).setUnlocalizedName("clip_rpg").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_rpg_alt"); - clip_stinger = new ItemClip(ammo_stinger_rocket.stackFromEnum(4, AmmoStinger.STOCK)).setUnlocalizedName("clip_stinger").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_stinger"); - clip_fatman = new ItemClip(ammo_nuke.stackFromEnum(6, AmmoFatman.STOCK)).setUnlocalizedName("clip_fatman").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_fatman"); - clip_mirv = new ItemClip(ammo_nuke.stackFromEnum(3, AmmoFatman.MIRV)).setUnlocalizedName("clip_mirv").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_mirv"); - clip_bf = new ItemClip(ammo_nuke.stackFromEnum(2, AmmoFatman.BALEFIRE)).setUnlocalizedName("clip_bf").setCreativeTab(null).setTextureName(RefStrings.MODID + ":clip_bf"); - clip_mp40 = new ItemClip(ammo_9mm.stackFromEnum(32, Ammo9mm.STOCK)).setUnlocalizedName("clip_mp40").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_mp40"); - clip_uzi = new ItemClip(ammo_22lr.stackFromEnum(32, Ammo22LR.STOCK)).setUnlocalizedName("clip_uzi").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_uzi"); - clip_uboinik = new ItemClip(ammo_12gauge.stackFromEnum(12, Ammo12Gauge.STOCK)).setUnlocalizedName("clip_uboinik").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_uboinik"); - clip_lever_action = new ItemClip(ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK)).setUnlocalizedName("clip_lever_action").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_lever_action"); - clip_bolt_action = new ItemClip(ammo_20gauge.stackFromEnum(12, Ammo20Gauge.SLUG)).setUnlocalizedName("clip_bolt_action").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_bolt_action"); - clip_osipr = new ItemClip(new ItemStack(gun_osipr_ammo, 3)).setUnlocalizedName("clip_osipr").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_osipr"); - clip_immolator = new ItemClip(new ItemStack(gun_immolator_ammo, 60)).setUnlocalizedName("clip_immolator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_immolator"); - clip_cryolator = new ItemClip(new ItemStack(gun_cryolator_ammo, 60)).setUnlocalizedName("clip_cryolator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_cryolator"); - clip_mp = new ItemClip(ammo_556.stackFromEnum(2, Ammo556mm.GOLD)).setUnlocalizedName("clip_mp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_mp"); - clip_xvl1456 = new ItemClip(new ItemStack(gun_xvl1456_ammo, 50)).setUnlocalizedName("clip_xvl1456").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_xvl1456"); - clip_emp = new ItemClip(new ItemStack(gun_emp_ammo, 12)).setUnlocalizedName("clip_emp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_emp"); - clip_jack = new ItemClip(new ItemStack(gun_jack_ammo, 12)).setUnlocalizedName("clip_jack").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_jack"); - clip_spark = new ItemClip(new ItemStack(gun_spark_ammo, 12)).setUnlocalizedName("clip_spark").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_spark"); - clip_hp = new ItemClip(new ItemStack(gun_hp_ammo, 24)).setUnlocalizedName("clip_hp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_hp"); - clip_euthanasia = new ItemClip(new ItemStack(gun_euthanasia_ammo, 32)).setUnlocalizedName("clip_euthanasia").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_euthanasia"); - clip_defabricator = new ItemClip(new ItemStack(gun_defabricator_ammo, 50)).setUnlocalizedName("clip_defabricator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_defabricator"); ammo_container = new ItemAmmoContainer().setUnlocalizedName("ammo_container").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_container"); @@ -4480,7 +4401,6 @@ public class ModItems { detonator_laser = new ItemLaserDetonator().setUnlocalizedName("detonator_laser").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":detonator_laser"); detonator_deadman = new ItemDrop().setUnlocalizedName("detonator_deadman").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":detonator_deadman"); detonator_de = new ItemDrop().setUnlocalizedName("detonator_de").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":detonator_de"); - crate_caller = new ItemCrateCaller().setUnlocalizedName("crate_caller").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":crate_caller"); bomb_caller = new ItemBombCaller().setUnlocalizedName("bomb_caller").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":bomb_caller"); meteor_remote = new ItemMeteorRemote().setUnlocalizedName("meteor_remote").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":meteor_remote"); anchor_remote = new ItemAnchorRemote().setUnlocalizedName("anchor_remote").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":anchor_remote"); @@ -4588,69 +4508,68 @@ public class ModItems { beta = new ItemDrop().setUnlocalizedName("beta").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":beta"); //oxy_mask = new ArmorModel(ArmorMaterial.IRON, 7, 0).setUnlocalizedName("oxy_mask").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":oxy_mask"); - schrabidium_helmet = new ArmorFSB(MainRegistry.aMatSchrab, 0, RefStrings.MODID + ":textures/armor/schrabidium_1.png").setCap(4F).setMod(0.1F) + schrabidium_helmet = new ArmorFSB(MainRegistry.aMatSchrab, 0, RefStrings.MODID + ":textures/armor/schrabidium_1.png") .addEffect(new PotionEffect(Potion.digSpeed.id, 20, 2)) .addEffect(new PotionEffect(Potion.damageBoost.id, 20, 2)) .addEffect(new PotionEffect(Potion.jump.id, 20, 1)) .addEffect(new PotionEffect(Potion.moveSpeed.id, 20, 2)) - .setFireproof(true).setUnlocalizedName("schrabidium_helmet").setTextureName(RefStrings.MODID + ":schrabidium_helmet"); + .setUnlocalizedName("schrabidium_helmet").setTextureName(RefStrings.MODID + ":schrabidium_helmet"); schrabidium_plate = new ArmorFSB(MainRegistry.aMatSchrab, 1, RefStrings.MODID + ":textures/armor/schrabidium_1.png").cloneStats((ArmorFSB) schrabidium_helmet).setUnlocalizedName("schrabidium_plate").setTextureName(RefStrings.MODID + ":schrabidium_plate"); - schrabidium_legs = new ArmorFSB(MainRegistry.aMatSchrab, 2, RefStrings.MODID + ":textures/armor/schrabidium_2.png").cloneStats((ArmorFSB) schrabidium_helmet).setCap(4F).setMod(0.1F).setUnlocalizedName("schrabidium_legs").setTextureName(RefStrings.MODID + ":schrabidium_legs"); - schrabidium_boots = new ArmorFSB(MainRegistry.aMatSchrab, 3, RefStrings.MODID + ":textures/armor/schrabidium_1.png").cloneStats((ArmorFSB) schrabidium_helmet).setCap(4F).setMod(0.1F).setUnlocalizedName("schrabidium_boots").setTextureName(RefStrings.MODID + ":schrabidium_boots"); - bismuth_helmet = new ArmorBismuth(MainRegistry.aMatBismuth, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png").setCap(8F).setMod(0.3F) - .addResistance("fall", 0) + schrabidium_legs = new ArmorFSB(MainRegistry.aMatSchrab, 2, RefStrings.MODID + ":textures/armor/schrabidium_2.png").cloneStats((ArmorFSB) schrabidium_helmet).setUnlocalizedName("schrabidium_legs").setTextureName(RefStrings.MODID + ":schrabidium_legs"); + schrabidium_boots = new ArmorFSB(MainRegistry.aMatSchrab, 3, RefStrings.MODID + ":textures/armor/schrabidium_1.png").cloneStats((ArmorFSB) schrabidium_helmet).setUnlocalizedName("schrabidium_boots").setTextureName(RefStrings.MODID + ":schrabidium_boots"); + bismuth_helmet = new ArmorBismuth(MainRegistry.aMatBismuth, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png") .addEffect(new PotionEffect(Potion.jump.id, 20, 6)) .addEffect(new PotionEffect(Potion.moveSpeed.id, 20, 6)) .addEffect(new PotionEffect(Potion.regeneration.id, 20, 1)) .addEffect(new PotionEffect(Potion.nightVision.id, 15 * 20, 0)) .setDashCount(3) .setUnlocalizedName("bismuth_helmet").setTextureName(RefStrings.MODID + ":bismuth_helmet"); - bismuth_plate = new ArmorBismuth(MainRegistry.aMatBismuth, 1, RefStrings.MODID + ":textures/armor/starmetal_2.png").cloneStats((ArmorFSB) bismuth_helmet).setCap(8F).setMod(0.3F).setUnlocalizedName("bismuth_plate").setTextureName(RefStrings.MODID + ":bismuth_plate"); - bismuth_legs = new ArmorBismuth(MainRegistry.aMatBismuth, 2, RefStrings.MODID + ":textures/armor/starmetal_1.png").cloneStats((ArmorFSB) bismuth_helmet).setCap(8F).setMod(0.3F).setUnlocalizedName("bismuth_legs").setTextureName(RefStrings.MODID + ":bismuth_legs"); - bismuth_boots = new ArmorBismuth(MainRegistry.aMatBismuth, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png").cloneStats((ArmorFSB) bismuth_helmet).setCap(8F).setMod(0.3F).setUnlocalizedName("bismuth_boots").setTextureName(RefStrings.MODID + ":bismuth_boots"); - titanium_helmet = new ArmorFSB(MainRegistry.aMatTitan, 0, RefStrings.MODID + ":textures/armor/titanium_1.png").setMod(0.85F).setUnlocalizedName("titanium_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":titanium_helmet"); + bismuth_plate = new ArmorBismuth(MainRegistry.aMatBismuth, 1, RefStrings.MODID + ":textures/armor/starmetal_2.png").cloneStats((ArmorFSB) bismuth_helmet).setUnlocalizedName("bismuth_plate").setTextureName(RefStrings.MODID + ":bismuth_plate"); + bismuth_legs = new ArmorBismuth(MainRegistry.aMatBismuth, 2, RefStrings.MODID + ":textures/armor/starmetal_1.png").cloneStats((ArmorFSB) bismuth_helmet).setUnlocalizedName("bismuth_legs").setTextureName(RefStrings.MODID + ":bismuth_legs"); + bismuth_boots = new ArmorBismuth(MainRegistry.aMatBismuth, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png").cloneStats((ArmorFSB) bismuth_helmet).setUnlocalizedName("bismuth_boots").setTextureName(RefStrings.MODID + ":bismuth_boots"); + titanium_helmet = new ArmorFSB(MainRegistry.aMatTitan, 0, RefStrings.MODID + ":textures/armor/titanium_1.png").setUnlocalizedName("titanium_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":titanium_helmet"); titanium_plate = new ArmorFSB(MainRegistry.aMatTitan, 1, RefStrings.MODID + ":textures/armor/titanium_1.png").cloneStats((ArmorFSB) titanium_helmet).setUnlocalizedName("titanium_plate").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":titanium_plate"); titanium_legs = new ArmorFSB(MainRegistry.aMatTitan, 2, RefStrings.MODID + ":textures/armor/titanium_2.png").cloneStats((ArmorFSB) titanium_helmet).setUnlocalizedName("titanium_legs").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":titanium_legs"); titanium_boots = new ArmorFSB(MainRegistry.aMatTitan, 3, RefStrings.MODID + ":textures/armor/titanium_1.png").cloneStats((ArmorFSB) titanium_helmet).setUnlocalizedName("titanium_boots").setTextureName(RefStrings.MODID + ":titanium_boots"); - steel_helmet = new ArmorFSB(MainRegistry.aMatSteel, 0, RefStrings.MODID + ":textures/armor/steel_1.png").setMod(0.9F).setUnlocalizedName("steel_helmet").setTextureName(RefStrings.MODID + ":steel_helmet"); + steel_helmet = new ArmorFSB(MainRegistry.aMatSteel, 0, RefStrings.MODID + ":textures/armor/steel_1.png").setUnlocalizedName("steel_helmet").setTextureName(RefStrings.MODID + ":steel_helmet"); steel_plate = new ArmorFSB(MainRegistry.aMatSteel, 1, RefStrings.MODID + ":textures/armor/steel_1.png").cloneStats((ArmorFSB) steel_helmet).setUnlocalizedName("steel_plate").setTextureName(RefStrings.MODID + ":steel_plate"); steel_legs = new ArmorFSB(MainRegistry.aMatSteel, 2, RefStrings.MODID + ":textures/armor/steel_2.png").cloneStats((ArmorFSB) steel_helmet).setUnlocalizedName("steel_legs").setTextureName(RefStrings.MODID + ":steel_legs"); steel_boots = new ArmorFSB(MainRegistry.aMatSteel, 3, RefStrings.MODID + ":textures/armor/steel_1.png").cloneStats((ArmorFSB) steel_helmet).setUnlocalizedName("steel_boots").setTextureName(RefStrings.MODID + ":steel_boots"); - alloy_helmet = new ArmorFSB(MainRegistry.aMatAlloy, 0, RefStrings.MODID + ":textures/armor/alloy_1.png").setMod(0.75F).setUnlocalizedName("alloy_helmet").setTextureName(RefStrings.MODID + ":alloy_helmet"); + alloy_helmet = new ArmorFSB(MainRegistry.aMatAlloy, 0, RefStrings.MODID + ":textures/armor/alloy_1.png").setUnlocalizedName("alloy_helmet").setTextureName(RefStrings.MODID + ":alloy_helmet"); alloy_plate = new ArmorFSB(MainRegistry.aMatAlloy, 1, RefStrings.MODID + ":textures/armor/alloy_1.png").cloneStats((ArmorFSB) alloy_helmet).setUnlocalizedName("alloy_plate").setTextureName(RefStrings.MODID + ":alloy_plate"); alloy_legs = new ArmorFSB(MainRegistry.aMatAlloy, 2, RefStrings.MODID + ":textures/armor/alloy_2.png").cloneStats((ArmorFSB) alloy_helmet).setUnlocalizedName("alloy_legs").setTextureName(RefStrings.MODID + ":alloy_legs"); alloy_boots = new ArmorFSB(MainRegistry.aMatAlloy, 3, RefStrings.MODID + ":textures/armor/alloy_1.png").cloneStats((ArmorFSB) alloy_helmet).setUnlocalizedName("alloy_boots").setTextureName(RefStrings.MODID + ":alloy_boots"); - cmb_helmet = new ArmorFSB(MainRegistry.aMatCMB, 0, RefStrings.MODID + ":textures/armor/cmb_1.png").setCap(2F).setThreshold(2F).setMod(0.05F) + cmb_helmet = new ArmorFSB(MainRegistry.aMatCMB, 0, RefStrings.MODID + ":textures/armor/cmb_1.png") .addEffect(new PotionEffect(Potion.moveSpeed.id, 20, 2)) .addEffect(new PotionEffect(Potion.digSpeed.id, 20, 2)) .addEffect(new PotionEffect(Potion.damageBoost.id, 20, 4)) - .setFireproof(true).setUnlocalizedName("cmb_helmet").setTextureName(RefStrings.MODID + ":cmb_helmet"); + .setUnlocalizedName("cmb_helmet").setTextureName(RefStrings.MODID + ":cmb_helmet"); cmb_plate = new ArmorFSB(MainRegistry.aMatCMB, 1, RefStrings.MODID + ":textures/armor/cmb_1.png").cloneStats((ArmorFSB) cmb_helmet).setUnlocalizedName("cmb_plate").setTextureName(RefStrings.MODID + ":cmb_plate"); cmb_legs = new ArmorFSB(MainRegistry.aMatCMB, 2, RefStrings.MODID + ":textures/armor/cmb_2.png").cloneStats((ArmorFSB) cmb_helmet).setUnlocalizedName("cmb_legs").setTextureName(RefStrings.MODID + ":cmb_legs"); cmb_boots = new ArmorFSB(MainRegistry.aMatCMB, 3, RefStrings.MODID + ":textures/armor/cmb_1.png").cloneStats((ArmorFSB) cmb_helmet).setUnlocalizedName("cmb_boots").setTextureName(RefStrings.MODID + ":cmb_boots"); - paa_plate = new ArmorFSB(MainRegistry.aMatPaa, 1, RefStrings.MODID + ":textures/armor/paa_1.png").setCap(6F).setMod(0.3F).setNoHelmet(true) + paa_plate = new ArmorFSB(MainRegistry.aMatPaa, 1, RefStrings.MODID + ":textures/armor/paa_1.png").setNoHelmet(true) .addEffect(new PotionEffect(Potion.digSpeed.id, 20, 0)).setUnlocalizedName("paa_plate").setTextureName(RefStrings.MODID + ":paa_plate"); paa_legs = new ArmorFSB(MainRegistry.aMatPaa, 2, RefStrings.MODID + ":textures/armor/paa_2.png").cloneStats((ArmorFSB) paa_plate).setUnlocalizedName("paa_legs").setTextureName(RefStrings.MODID + ":paa_legs"); paa_boots = new ArmorFSB(MainRegistry.aMatPaa, 3, RefStrings.MODID + ":textures/armor/paa_1.png").cloneStats((ArmorFSB) paa_plate).setUnlocalizedName("paa_boots").setTextureName(RefStrings.MODID + ":paa_boots"); - asbestos_helmet = new ArmorFSB(MainRegistry.aMatAsbestos, 0, RefStrings.MODID + ":textures/armor/asbestos_1.png").setFireproof(true).setOverlay(RefStrings.MODID + ":textures/misc/overlay_asbestos.png").setUnlocalizedName("asbestos_helmet").setTextureName(RefStrings.MODID + ":asbestos_helmet"); - asbestos_plate = new ArmorFSB(MainRegistry.aMatAsbestos, 1, RefStrings.MODID + ":textures/armor/asbestos_1.png").setFireproof(true).setUnlocalizedName("asbestos_plate").setTextureName(RefStrings.MODID + ":asbestos_plate"); - asbestos_legs = new ArmorFSB(MainRegistry.aMatAsbestos, 2, RefStrings.MODID + ":textures/armor/asbestos_2.png").setFireproof(true).setUnlocalizedName("asbestos_legs").setTextureName(RefStrings.MODID + ":asbestos_legs"); - asbestos_boots = new ArmorFSB(MainRegistry.aMatAsbestos, 3, RefStrings.MODID + ":textures/armor/asbestos_1.png").setFireproof(true).setUnlocalizedName("asbestos_boots").setTextureName(RefStrings.MODID + ":asbestos_boots"); - security_helmet = new ArmorFSB(MainRegistry.aMatSecurity, 0, RefStrings.MODID + ":textures/armor/security_1.png").setMod(0.65F).setProjectileProtection(0.5F).setUnlocalizedName("security_helmet").setTextureName(RefStrings.MODID + ":security_helmet"); + asbestos_helmet = new ArmorFSB(MainRegistry.aMatAsbestos, 0, RefStrings.MODID + ":textures/armor/asbestos_1.png").setOverlay(RefStrings.MODID + ":textures/misc/overlay_asbestos.png").setUnlocalizedName("asbestos_helmet").setTextureName(RefStrings.MODID + ":asbestos_helmet"); + asbestos_plate = new ArmorFSB(MainRegistry.aMatAsbestos, 1, RefStrings.MODID + ":textures/armor/asbestos_1.png").setUnlocalizedName("asbestos_plate").setTextureName(RefStrings.MODID + ":asbestos_plate"); + asbestos_legs = new ArmorFSB(MainRegistry.aMatAsbestos, 2, RefStrings.MODID + ":textures/armor/asbestos_2.png").setUnlocalizedName("asbestos_legs").setTextureName(RefStrings.MODID + ":asbestos_legs"); + asbestos_boots = new ArmorFSB(MainRegistry.aMatAsbestos, 3, RefStrings.MODID + ":textures/armor/asbestos_1.png").setUnlocalizedName("asbestos_boots").setTextureName(RefStrings.MODID + ":asbestos_boots"); + security_helmet = new ArmorFSB(MainRegistry.aMatSecurity, 0, RefStrings.MODID + ":textures/armor/security_1.png").setUnlocalizedName("security_helmet").setTextureName(RefStrings.MODID + ":security_helmet"); security_plate = new ArmorFSB(MainRegistry.aMatSecurity, 1, RefStrings.MODID + ":textures/armor/security_1.png").cloneStats((ArmorFSB) security_helmet).setUnlocalizedName("security_plate").setTextureName(RefStrings.MODID + ":security_plate"); security_legs = new ArmorFSB(MainRegistry.aMatSecurity, 2, RefStrings.MODID + ":textures/armor/security_2.png").cloneStats((ArmorFSB) security_helmet).setUnlocalizedName("security_legs").setTextureName(RefStrings.MODID + ":security_legs"); security_boots = new ArmorFSB(MainRegistry.aMatSecurity, 3, RefStrings.MODID + ":textures/armor/security_1.png").cloneStats((ArmorFSB) security_helmet).setUnlocalizedName("security_boots").setTextureName(RefStrings.MODID + ":security_boots"); - cobalt_helmet = new ArmorFSB(MainRegistry.aMatCobalt, 0, RefStrings.MODID + ":textures/armor/cobalt_1.png").setMod(0.7F).setUnlocalizedName("cobalt_helmet").setTextureName(RefStrings.MODID + ":cobalt_helmet"); + cobalt_helmet = new ArmorFSB(MainRegistry.aMatCobalt, 0, RefStrings.MODID + ":textures/armor/cobalt_1.png").setUnlocalizedName("cobalt_helmet").setTextureName(RefStrings.MODID + ":cobalt_helmet"); cobalt_plate = new ArmorFSB(MainRegistry.aMatCobalt, 1, RefStrings.MODID + ":textures/armor/cobalt_1.png").cloneStats((ArmorFSB) cobalt_helmet).setUnlocalizedName("cobalt_plate").setTextureName(RefStrings.MODID + ":cobalt_plate"); cobalt_legs = new ArmorFSB(MainRegistry.aMatCobalt, 2, RefStrings.MODID + ":textures/armor/cobalt_2.png").cloneStats((ArmorFSB) cobalt_helmet).setUnlocalizedName("cobalt_legs").setTextureName(RefStrings.MODID + ":cobalt_legs"); cobalt_boots = new ArmorFSB(MainRegistry.aMatCobalt, 3, RefStrings.MODID + ":textures/armor/cobalt_1.png").cloneStats((ArmorFSB) cobalt_helmet).setUnlocalizedName("cobalt_boots").setTextureName(RefStrings.MODID + ":cobalt_boots"); - starmetal_helmet = new ArmorFSB(MainRegistry.aMatStarmetal, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png").setMod(0.5F).setCap(15F) - .setFireproof(true).setUnlocalizedName("starmetal_helmet").setTextureName(RefStrings.MODID + ":starmetal_helmet"); + starmetal_helmet = new ArmorFSB(MainRegistry.aMatStarmetal, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png") + .setUnlocalizedName("starmetal_helmet").setTextureName(RefStrings.MODID + ":starmetal_helmet"); starmetal_plate = new ArmorFSB(MainRegistry.aMatStarmetal, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png").cloneStats((ArmorFSB) starmetal_helmet).setUnlocalizedName("starmetal_plate").setTextureName(RefStrings.MODID + ":starmetal_plate"); starmetal_legs = new ArmorFSB(MainRegistry.aMatStarmetal, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png").cloneStats((ArmorFSB) starmetal_helmet).setUnlocalizedName("starmetal_legs").setTextureName(RefStrings.MODID + ":starmetal_legs"); starmetal_boots = new ArmorFSB(MainRegistry.aMatStarmetal, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png").cloneStats((ArmorFSB) starmetal_helmet).setUnlocalizedName("starmetal_boots").setTextureName(RefStrings.MODID + ":starmetal_boots"); - robes_helmet = new ArmorFSB(ArmorMaterial.CHAIN, 0, RefStrings.MODID + ":textures/armor/robes_1.png").setThreshold(1.0F).setUnlocalizedName("robes_helmet").setTextureName(RefStrings.MODID + ":robes_helmet"); + robes_helmet = new ArmorFSB(ArmorMaterial.CHAIN, 0, RefStrings.MODID + ":textures/armor/robes_1.png").setUnlocalizedName("robes_helmet").setTextureName(RefStrings.MODID + ":robes_helmet"); robes_plate = new ArmorFSB(ArmorMaterial.CHAIN, 1, RefStrings.MODID + ":textures/armor/robes_1.png").cloneStats((ArmorFSB) robes_helmet).setUnlocalizedName("robes_plate").setTextureName(RefStrings.MODID + ":robes_plate"); robes_legs = new ArmorFSB(ArmorMaterial.CHAIN, 2, RefStrings.MODID + ":textures/armor/robes_2.png").cloneStats((ArmorFSB) robes_helmet).setUnlocalizedName("robes_legs").setTextureName(RefStrings.MODID + ":robes_legs"); robes_boots = new ArmorFSB(ArmorMaterial.CHAIN, 3, RefStrings.MODID + ":textures/armor/robes_1.png").cloneStats((ArmorFSB) robes_helmet).setUnlocalizedName("robes_boots").setTextureName(RefStrings.MODID + ":robes_boots"); @@ -4662,27 +4581,23 @@ public class ModItems { ArmorMaterial aMatZirconium = EnumHelper.addArmorMaterial("HBM_ZIRCONIUM", 1000, new int[] { 2, 5, 3, 1 }, 100); aMatZirconium.customCraftingMaterial = ModItems.ingot_zirconium; - zirconium_legs = new ArmorFSB(aMatZirconium, 2, RefStrings.MODID + ":textures/armor/zirconium_2.png").setMod(0.0F).setUnlocalizedName("zirconium_legs").setTextureName(RefStrings.MODID + ":zirconium_legs"); + zirconium_legs = new ArmorFSB(aMatZirconium, 2, RefStrings.MODID + ":textures/armor/zirconium_2.png").setUnlocalizedName("zirconium_legs").setTextureName(RefStrings.MODID + ":zirconium_legs"); ArmorMaterial aMatDNT = EnumHelper.addArmorMaterial("HBM_DNT_LOLOLOL", 3, new int[] { 1, 1, 1, 1 }, 0); aMatDNT.customCraftingMaterial = ModItems.ingot_dineutronium; dnt_helmet = new ArmorFSB(aMatDNT, 0, RefStrings.MODID + ":textures/armor/dnt_1.png") - .setMod(5F).setUnlocalizedName("dnt_helmet").setTextureName(RefStrings.MODID + ":dnt_helmet"); + .setUnlocalizedName("dnt_helmet").setTextureName(RefStrings.MODID + ":dnt_helmet"); dnt_plate = new ArmorFSB(aMatDNT, 1, RefStrings.MODID + ":textures/armor/dnt_1.png").cloneStats((ArmorFSB) dnt_helmet).setUnlocalizedName("dnt_plate").setTextureName(RefStrings.MODID + ":dnt_plate"); dnt_legs = new ArmorFSB(aMatDNT, 2, RefStrings.MODID + ":textures/armor/dnt_2.png").cloneStats((ArmorFSB) dnt_helmet).setUnlocalizedName("dnt_legs").setTextureName(RefStrings.MODID + ":dnt_legs"); dnt_boots = new ArmorFSB(aMatDNT, 3, RefStrings.MODID + ":textures/armor/dnt_1.png").cloneStats((ArmorFSB) dnt_helmet).setUnlocalizedName("dnt_boots").setTextureName(RefStrings.MODID + ":dnt_boots"); ArmorMaterial aMatT45 = EnumHelper.addArmorMaterial("HBM_T45", 150, new int[] { 3, 8, 6, 3 }, 0); aMatT45.customCraftingMaterial = ModItems.plate_armor_titanium; - t45_helmet = new ArmorT45(aMatT45, 0, 1000000, 10000, 1000, 5).setCap(10F).setMod(0.5F) - .setFireproof(true) + t45_helmet = new ArmorT45(aMatT45, 0, 1000000, 10000, 1000, 5) .enableVATS(true) .setHasGeigerSound(true) .setHasHardLanding(true) .addEffect(new PotionEffect(Potion.damageBoost.id, 20, 0)) - .setBlastProtection(0.5F) - .addResistance("monoxide", 0F) - .addResistance("fall", 0) .hides(EnumPlayerPart.HAT) .setUnlocalizedName("t45_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t45_helmet"); t45_plate = new ArmorT45(aMatT45, 1, 1000000, 10000, 1000, 5).cloneStats((ArmorFSB) t45_helmet).setUnlocalizedName("t45_plate").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t45_plate"); @@ -4691,13 +4606,9 @@ public class ModItems { ArmorMaterial aMatDesh = EnumHelper.addArmorMaterial("HBM_DESH", 150, new int[] { 3, 8, 6, 3 }, 0); aMatDesh.customCraftingMaterial = ModItems.ingot_desh; - steamsuit_helmet = new ArmorDesh(aMatDesh, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", Fluids.STEAM, 64_000, 500, 50, 1).setThreshold(5F).setMod(0.8F) - .setFireproof(true) + steamsuit_helmet = new ArmorDesh(aMatDesh, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", Fluids.STEAM, 64_000, 500, 50, 1) .setHasHardLanding(true) .addEffect(new PotionEffect(Potion.digSpeed.id, 20, 4)) - .setBlastProtection(0.5F) - .addResistance("monoxide", 0F) - .addResistance("fall", 0) .hides(EnumPlayerPart.HAT) .setUnlocalizedName("steamsuit_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":steamsuit_helmet"); steamsuit_plate = new ArmorDesh(aMatDesh, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", Fluids.STEAM, 64_000, 500, 50, 1).cloneStats((ArmorFSB) steamsuit_helmet).setUnlocalizedName("steamsuit_plate").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":steamsuit_plate"); @@ -4706,12 +4617,11 @@ public class ModItems { ArmorMaterial aMatDiesel = EnumHelper.addArmorMaterial("HBM_BNUUY", 150, new int[] { 3, 8, 6, 3 }, 0); aMatDiesel.customCraftingMaterial = ModItems.plate_copper; - dieselsuit_helmet = new ArmorDiesel(aMatDiesel, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", Fluids.DIESEL, 64_000, 500, 50, 1).setThreshold(2F).setMod(0.7F) + dieselsuit_helmet = new ArmorDiesel(aMatDiesel, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", Fluids.DIESEL, 64_000, 500, 50, 1) .addEffect(new PotionEffect(Potion.moveSpeed.id, 20, 2)) .addEffect(new PotionEffect(Potion.jump.id, 20, 2)) .enableThermalSight(true) .enableVATS(true) - .addResistance("fall", 0) .setUnlocalizedName("dieselsuit_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":dieselsuit_helmet"); dieselsuit_plate = new ArmorDiesel(aMatDiesel, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", Fluids.DIESEL, 64_000, 500, 50, 1).cloneStats((ArmorFSB) dieselsuit_helmet).setUnlocalizedName("dieselsuit_plate").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":dieselsuit_plate"); dieselsuit_legs = new ArmorDiesel(aMatDiesel, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", Fluids.DIESEL, 64_000, 500, 50, 1).cloneStats((ArmorFSB) dieselsuit_helmet).setUnlocalizedName("dieselsuit_legs").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":dieselsuit_legs"); @@ -4719,57 +4629,40 @@ public class ModItems { ArmorMaterial aMatAJR = EnumHelper.addArmorMaterial("HBM_T45AJR", 150, new int[] { 3, 8, 6, 3 }, 100); aMatAJR.customCraftingMaterial = ModItems.plate_armor_ajr; - ajr_helmet = new ArmorAJR(aMatAJR, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).setMod(0.25F).setCap(6.0F).setThreshold(4F) - .setFireproof(true) + ajr_helmet = new ArmorAJR(aMatAJR, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25) .enableVATS(true) .setHasGeigerSound(true) .setHasHardLanding(true) .addEffect(new PotionEffect(Potion.jump.id, 20, 0)) .addEffect(new PotionEffect(Potion.damageBoost.id, 20, 0)) - .setBlastProtection(0.25F) - .setStep("hbm:step.metal") - .setJump("hbm:step.iron_jump") - .setFall("hbm:step.iron_land") - .addResistance("monoxide", 0F) - .addResistance("fall", 0) + .setStep("hbm:step.metal").setJump("hbm:step.iron_jump").setFall("hbm:step.iron_land") .hides(EnumPlayerPart.HAT) .setUnlocalizedName("ajr_helmet").setTextureName(RefStrings.MODID + ":ajr_helmet"); ajr_plate = new ArmorAJR(aMatAJR, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) ajr_helmet).setUnlocalizedName("ajr_plate").setTextureName(RefStrings.MODID + ":ajr_plate"); ajr_legs = new ArmorAJR(aMatAJR, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) ajr_helmet).setUnlocalizedName("ajr_legs").setTextureName(RefStrings.MODID + ":ajr_legs"); ajr_boots = new ArmorAJR(aMatAJR, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) ajr_helmet).setUnlocalizedName("ajr_boots").setTextureName(RefStrings.MODID + ":ajr_boots"); - ajro_helmet = new ArmorAJRO(aMatAJR, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).setMod(0.25F).setCap(6.0F).setThreshold(4F) - .setFireproof(true) + ajro_helmet = new ArmorAJRO(aMatAJR, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25) .enableVATS(true) .setHasGeigerSound(true) .setHasHardLanding(true) .addEffect(new PotionEffect(Potion.jump.id, 20, 0)) .addEffect(new PotionEffect(Potion.damageBoost.id, 20, 0)) - .setBlastProtection(0.25F) - .setStep("hbm:step.metal") - .setJump("hbm:step.iron_jump") - .setFall("hbm:step.iron_land") - .addResistance("monoxide", 0F) - .addResistance("fall", 0) + .setStep("hbm:step.metal").setJump("hbm:step.iron_jump").setFall("hbm:step.iron_land") .hides(EnumPlayerPart.HAT) .setUnlocalizedName("ajro_helmet").setTextureName(RefStrings.MODID + ":ajro_helmet"); ajro_plate = new ArmorAJRO(aMatAJR, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) ajro_helmet).setUnlocalizedName("ajro_plate").setTextureName(RefStrings.MODID + ":ajro_plate"); ajro_legs = new ArmorAJRO(aMatAJR, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) ajro_helmet).setUnlocalizedName("ajro_legs").setTextureName(RefStrings.MODID + ":ajro_legs"); ajro_boots = new ArmorAJRO(aMatAJR, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) ajro_helmet).setUnlocalizedName("ajro_boots").setTextureName(RefStrings.MODID + ":ajro_boots"); - rpa_helmet = new ArmorRPA(aMatAJR, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).setMod(0.1F).setCap(6.0F).setThreshold(20F) - .setFireproof(true) + rpa_helmet = new ArmorRPA(aMatAJR, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25) .enableVATS(true) .setHasGeigerSound(true) .setHasHardLanding(true) .addEffect(new PotionEffect(Potion.damageBoost.id, 20, 3)) - .setBlastProtection(0.25F) - .setProjectileProtection(0.25F) - .setProtectionLevel(1500) .setStep("hbm:step.powered") .setJump("hbm:step.powered") .setFall("hbm:step.powered") - .addResistance("fall", 0) .hides(EnumPlayerPart.HAT) .setUnlocalizedName("rpa_helmet").setTextureName(RefStrings.MODID + ":rpa_helmet"); rpa_plate = new ArmorRPA(aMatAJR, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) rpa_helmet).setUnlocalizedName("rpa_plate").setTextureName(RefStrings.MODID + ":rpa_plate"); @@ -4778,8 +4671,7 @@ public class ModItems { ArmorMaterial aMatBJ = EnumHelper.addArmorMaterial("HBM_BLACKJACK", 150, new int[] { 3, 8, 6, 3 }, 100); aMatBJ.customCraftingMaterial = ModItems.plate_armor_lunar; - bj_helmet = new ArmorBJ(aMatBJ, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 1000, 100).setMod(0.25F).setCap(4.0F).setThreshold(4F) - .setFireproof(true) + bj_helmet = new ArmorBJ(aMatBJ, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 1000, 100) .enableVATS(true) .enableThermalSight(true) .setHasGeigerSound(true) @@ -4788,12 +4680,9 @@ public class ModItems { .addEffect(new PotionEffect(Potion.jump.id, 20, 0)) .addEffect(new PotionEffect(Potion.field_76443_y.id, 20, 0)) .addEffect(new PotionEffect(HbmPotion.radx.id, 20, 0)) - .setBlastProtection(0.5F) - .setProtectionLevel(500F) .setStep("hbm:step.metal") .setJump("hbm:step.iron_jump") - .setFall("hbm:step.iron_land") - .addResistance("fall", 0).setUnlocalizedName("bj_helmet").setTextureName(RefStrings.MODID + ":bj_helmet"); + .setFall("hbm:step.iron_land").setUnlocalizedName("bj_helmet").setTextureName(RefStrings.MODID + ":bj_helmet"); bj_plate = new ArmorBJ(aMatBJ, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 1000, 100).cloneStats((ArmorFSB) bj_helmet).setUnlocalizedName("bj_plate").setTextureName(RefStrings.MODID + ":bj_plate"); bj_plate_jetpack = new ArmorBJJetpack(aMatBJ, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 1000, 100).cloneStats((ArmorFSB) bj_helmet).setUnlocalizedName("bj_plate_jetpack").setTextureName(RefStrings.MODID + ":bj_plate_jetpack"); bj_legs = new ArmorBJ(aMatBJ, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 10000000, 10000, 1000, 100).cloneStats((ArmorFSB) bj_helmet).setUnlocalizedName("bj_legs").setTextureName(RefStrings.MODID + ":bj_legs"); @@ -4801,12 +4690,9 @@ public class ModItems { ArmorMaterial aMatEnv = EnumHelper.addArmorMaterial("HBM_ENV", 150, new int[] { 3, 8, 6, 3 }, 100); aMatEnv.customCraftingMaterial = ModItems.plate_armor_hev; - envsuit_helmet = new ArmorEnvsuit(aMatEnv, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 100_000, 1_000, 250, 0).setMod(0.5F).setThreshold(2.0F) + envsuit_helmet = new ArmorEnvsuit(aMatEnv, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 100_000, 1_000, 250, 0) .addEffect(new PotionEffect(Potion.moveSpeed.id, 20, 1)) .addEffect(new PotionEffect(Potion.jump.id, 20, 0)) - .addResistance("fall", 0.25F) - .addResistance("monoxide", 0F) - .addResistance("onFire", 0F) .hides(EnumPlayerPart.HAT) .setUnlocalizedName("envsuit_helmet").setTextureName(RefStrings.MODID + ":envsuit_helmet"); envsuit_plate = new ArmorEnvsuit(aMatEnv, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 100_000, 1_000, 250, 0).cloneStats((ArmorFSB) envsuit_helmet).setUnlocalizedName("envsuit_plate").setTextureName(RefStrings.MODID + ":envsuit_plate"); @@ -4815,16 +4701,11 @@ public class ModItems { ArmorMaterial aMatHEV = EnumHelper.addArmorMaterial("HBM_HEV", 150, new int[] { 3, 8, 6, 3 }, 100); aMatHEV.customCraftingMaterial = ModItems.plate_armor_hev; - hev_helmet = new ArmorHEV(aMatHEV, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 2500, 0).setMod(0.20F).setCap(4.0F).setThreshold(2.0F) + hev_helmet = new ArmorHEV(aMatHEV, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 2500, 0) .addEffect(new PotionEffect(Potion.moveSpeed.id, 20, 1)) .addEffect(new PotionEffect(Potion.jump.id, 20, 0)) - .setBlastProtection(0.25F) - .setProtectionLevel(500F) .setHasGeigerSound(true) .setHasCustomGeiger(true) - .addResistance("fall", 0.5F) - .addResistance("monoxide", 0F) - .addResistance("onFire", 0F) .hides(EnumPlayerPart.HAT) .setUnlocalizedName("hev_helmet").setTextureName(RefStrings.MODID + ":hev_helmet"); hev_plate = new ArmorHEV(aMatHEV, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 2500, 0).cloneStats((ArmorFSB) hev_helmet).setUnlocalizedName("hev_plate").setTextureName(RefStrings.MODID + ":hev_plate"); @@ -4836,20 +4717,14 @@ public class ModItems { ArmorMaterial aMatFau = EnumHelper.addArmorMaterial("HBM_DIGAMMA", 150, new int[] { 3, 8, 6, 3 }, 100); aMatFau.customCraftingMaterial = ModItems.plate_armor_fau; - fau_helmet = new ArmorDigamma(aMatFau, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 2500, 0).setMod(0.25F).setCap(4.0F).setThreshold(2.0F) + fau_helmet = new ArmorDigamma(aMatFau, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 2500, 0) .addEffect(new PotionEffect(Potion.jump.id, 20, 1)) - .setBlastProtection(0.05F) - .setMod(0.05F) .setHasGeigerSound(true) .enableThermalSight(true) .setHasHardLanding(true) .setStep("hbm:step.metal") .setJump("hbm:step.iron_jump") .setFall("hbm:step.iron_land") - .setProtectionLevel(1000F) - .addResistance("fall", 0F) - .addResistance("monoxide", 0F) - .setFireproof(true) .hides(EnumPlayerPart.HAT) .setUnlocalizedName("fau_helmet").setTextureName(RefStrings.MODID + ":fau_helmet"); fau_plate = new ArmorDigamma(aMatFau, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 2500, 0).cloneStats((ArmorFSB) fau_helmet).setFullSetForHide().setUnlocalizedName("fau_plate").setTextureName(RefStrings.MODID + ":fau_plate"); @@ -4869,7 +4744,6 @@ public class ModItems { .setStep("hbm:step.metal") .setJump("hbm:step.iron_jump") .setFall("hbm:step.iron_land") - .setFireproof(true) .hides(EnumPlayerPart.HAT) .setUnlocalizedName("dns_helmet").setTextureName(RefStrings.MODID + ":dns_helmet"); dns_plate = new ArmorDNT(aMatDNS, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000000, 1000000, 100000, 115).cloneStats((ArmorFSB) dns_helmet).setUnlocalizedName("dns_plate").setTextureName(RefStrings.MODID + ":dns_plate"); @@ -4878,14 +4752,12 @@ public class ModItems { ArmorMaterial aMatTrench = EnumHelper.addArmorMaterial("HBM_TRENCH", 150, new int[] { 3, 8, 6, 3 }, 100); aMatTrench.customCraftingMaterial = ModItems.plate_iron; - trenchmaster_helmet = new ArmorTrenchmaster(aMatTrench, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png").setMod(0.125F).setThreshold(5.0F) + trenchmaster_helmet = new ArmorTrenchmaster(aMatTrench, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png") .addEffect(new PotionEffect(Potion.damageBoost.id, 20, 2)) .addEffect(new PotionEffect(Potion.digSpeed.id, 20, 1)) .addEffect(new PotionEffect(Potion.jump.id, 20, 1)) .addEffect(new PotionEffect(Potion.moveSpeed.id, 20, 0)) .enableVATS(true) - .addResistance("fall", 0F) - .setFireproof(true) .setStepSize(1) .hides(EnumPlayerPart.HAT) .setUnlocalizedName("trenchmaster_helmet").setTextureName(RefStrings.MODID + ":trenchmaster_helmet"); @@ -4903,7 +4775,7 @@ public class ModItems { .addHitAbility(new WeaponAbility.ChainsawAbility(10)) .addHitAbility(new WeaponAbility.BeheaderAbility()).setShears().setUnlocalizedName("chainsaw").setTextureName(RefStrings.MODID + ":chainsaw"); - schrabidium_sword = new ItemSwordAbility(150, 0, MainRegistry.tMatSchrab) + schrabidium_sword = new ItemSwordAbility(75, 0, MainRegistry.tMatSchrab) .addHitAbility(new WeaponAbility.RadiationAbility(50F)) .addHitAbility(new WeaponAbility.VampireAbility(2F)) .setRarity(EnumRarity.rare).setUnlocalizedName("schrabidium_sword").setTextureName(RefStrings.MODID + ":schrabidium_sword"); @@ -4954,22 +4826,22 @@ public class ModItems { steel_shovel = new ItemToolAbility(3F, 0, MainRegistry.tMatSteel, EnumToolType.SHOVEL).setUnlocalizedName("steel_shovel").setTextureName(RefStrings.MODID + ":steel_shovel"); steel_hoe = new ModHoe(MainRegistry.tMatSteel).setUnlocalizedName("steel_hoe").setTextureName(RefStrings.MODID + ":steel_hoe"); - alloy_sword = new ItemSwordAbility(9F, 0, MainRegistry.tMatAlloy) + alloy_sword = new ItemSwordAbility(8F, 0, MainRegistry.tMatAlloy) .addHitAbility(new WeaponAbility.StunAbility(2)).setUnlocalizedName("alloy_sword").setTextureName(RefStrings.MODID + ":alloy_sword"); - alloy_pickaxe = new ItemToolAbility(6F, 0, MainRegistry.tMatAlloy, EnumToolType.PICKAXE) + alloy_pickaxe = new ItemToolAbility(5F, 0, MainRegistry.tMatAlloy, EnumToolType.PICKAXE) .addBreakAbility(new ToolAbility.RecursionAbility(3)).setUnlocalizedName("alloy_pickaxe").setTextureName(RefStrings.MODID + ":alloy_pickaxe"); alloy_axe = new ItemToolAbility(7F, 0, MainRegistry.tMatAlloy, EnumToolType.AXE) .addBreakAbility(new ToolAbility.RecursionAbility(3)) .addHitAbility(new WeaponAbility.BeheaderAbility()).setUnlocalizedName("alloy_axe").setTextureName(RefStrings.MODID + ":alloy_axe"); - alloy_shovel = new ItemToolAbility(5F, 0, MainRegistry.tMatAlloy, EnumToolType.SHOVEL) + alloy_shovel = new ItemToolAbility(4F, 0, MainRegistry.tMatAlloy, EnumToolType.SHOVEL) .addBreakAbility(new ToolAbility.RecursionAbility(3)).setUnlocalizedName("alloy_shovel").setTextureName(RefStrings.MODID + ":alloy_shovel"); alloy_hoe = new ModHoe(MainRegistry.tMatAlloy).setUnlocalizedName("alloy_hoe").setTextureName(RefStrings.MODID + ":alloy_hoe"); - cmb_sword = new ItemSwordAbility(50F, 0, MainRegistry.tMatCMB) + cmb_sword = new ItemSwordAbility(35F, 0, MainRegistry.tMatCMB) .addHitAbility(new WeaponAbility.StunAbility(2)) .addHitAbility(new WeaponAbility.VampireAbility(2F)).setUnlocalizedName("cmb_sword").setTextureName(RefStrings.MODID + ":cmb_sword"); @@ -4979,7 +4851,7 @@ public class ModItems { .addBreakAbility(new ToolAbility.SilkAbility()) .addBreakAbility(new LuckAbility(3)).setUnlocalizedName("cmb_pickaxe").setTextureName(RefStrings.MODID + ":cmb_pickaxe"); - cmb_axe = new ItemToolAbility(12.5F, 0, MainRegistry.tMatCMB, EnumToolType.AXE) + cmb_axe = new ItemToolAbility(30F, 0, MainRegistry.tMatCMB, EnumToolType.AXE) .addBreakAbility(new ToolAbility.RecursionAbility(5)) .addBreakAbility(new ToolAbility.SmelterAbility()) .addBreakAbility(new ToolAbility.SilkAbility()) @@ -4994,16 +4866,16 @@ public class ModItems { cmb_hoe = new ModHoe(MainRegistry.tMatCMB).setUnlocalizedName("cmb_hoe").setTextureName(RefStrings.MODID + ":cmb_hoe"); - elec_sword = new ItemSwordAbilityPower(15F, 0, MainRegistry.tMatElec, 500000, 1000, 100) + elec_sword = new ItemSwordAbilityPower(12.5F, 0, MainRegistry.tMatElec, 500000, 1000, 100) .addHitAbility(new WeaponAbility.StunAbility(5)).setUnlocalizedName("elec_sword").setTextureName(RefStrings.MODID + ":elec_sword_anim"); - elec_pickaxe = new ItemToolAbilityPower(10F, 0, MainRegistry.tMatElec, EnumToolType.PICKAXE, 500000, 1000, 100) + elec_pickaxe = new ItemToolAbilityPower(6F, 0, MainRegistry.tMatElec, EnumToolType.PICKAXE, 500000, 1000, 100) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(5)) .addBreakAbility(new ToolAbility.SilkAbility()) .addBreakAbility(new LuckAbility(2)).setUnlocalizedName("elec_pickaxe").setTextureName(RefStrings.MODID + ":elec_drill_anim"); - elec_axe = new ItemToolAbilityPower(12.5F, 0, MainRegistry.tMatElec, EnumToolType.AXE, 500000, 1000, 100) + elec_axe = new ItemToolAbilityPower(10F, 0, MainRegistry.tMatElec, EnumToolType.AXE, 500000, 1000, 100) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(5)) .addBreakAbility(new ToolAbility.SilkAbility()) @@ -5011,13 +4883,13 @@ public class ModItems { .addHitAbility(new WeaponAbility.ChainsawAbility(15)) .addHitAbility(new WeaponAbility.BeheaderAbility()).setShears().setUnlocalizedName("elec_axe").setTextureName(RefStrings.MODID + ":elec_chainsaw_anim"); - elec_shovel = new ItemToolAbilityPower(7.5F, 0, MainRegistry.tMatElec, EnumToolType.SHOVEL, 500000, 1000, 100) + elec_shovel = new ItemToolAbilityPower(5F, 0, MainRegistry.tMatElec, EnumToolType.SHOVEL, 500000, 1000, 100) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(5)) .addBreakAbility(new ToolAbility.SilkAbility()) .addBreakAbility(new LuckAbility(2)).setUnlocalizedName("elec_shovel").setTextureName(RefStrings.MODID + ":elec_shovel_anim"); - desh_sword = new ItemSwordAbility(15F, 0, MainRegistry.tMatDesh) + desh_sword = new ItemSwordAbility(12.5F, 0, MainRegistry.tMatDesh) .addHitAbility(new WeaponAbility.StunAbility(2)).setUnlocalizedName("desh_sword").setTextureName(RefStrings.MODID + ":desh_sword"); desh_pickaxe = new ItemToolAbility(5F, -0.05, MainRegistry.tMatDesh, EnumToolType.PICKAXE) @@ -5026,7 +4898,7 @@ public class ModItems { .addBreakAbility(new ToolAbility.SilkAbility()) .addBreakAbility(new LuckAbility(2)).setUnlocalizedName("desh_pickaxe").setTextureName(RefStrings.MODID + ":desh_pickaxe"); - desh_axe = new ItemToolAbility(6.5F, -0.05, MainRegistry.tMatDesh, EnumToolType.AXE) + desh_axe = new ItemToolAbility(7.5F, -0.05, MainRegistry.tMatDesh, EnumToolType.AXE) .addBreakAbility(new ToolAbility.HammerAbility(1)) .addBreakAbility(new ToolAbility.RecursionAbility(3)) .addBreakAbility(new ToolAbility.SilkAbility()) @@ -5108,14 +4980,14 @@ public class ModItems { .addBreakAbility(new ToolAbility.CentrifugeAbility()).setMaxDamage(50).setUnlocalizedName("centri_stick").setTextureName(RefStrings.MODID + ":centri_stick"); smashing_hammer = new ItemToolAbility(12F, -0.1, MainRegistry.tMatSteel, EnumToolType.MINER) .addBreakAbility(new ToolAbility.ShredderAbility()).setMaxDamage(2500).setUnlocalizedName("smashing_hammer").setTextureName(RefStrings.MODID + ":smashing_hammer"); - drax = new ItemToolAbilityPower(15F, -0.05, MainRegistry.tMatElec, EnumToolType.MINER, 500000000, 100000, 5000) + drax = new ItemToolAbilityPower(10F, -0.05, MainRegistry.tMatElec, EnumToolType.MINER, 500000000, 100000, 5000) .addBreakAbility(new ToolAbility.SmelterAbility()) .addBreakAbility(new ToolAbility.ShredderAbility()) .addBreakAbility(new ToolAbility.LuckAbility(2)) .addBreakAbility(new ToolAbility.HammerAbility(1)) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(5)).setUnlocalizedName("drax").setTextureName(RefStrings.MODID + ":drax"); - drax_mk2 = new ItemToolAbilityPower(20F, -0.05, MainRegistry.tMatElec, EnumToolType.MINER, 1000000000, 250000, 7500) + drax_mk2 = new ItemToolAbilityPower(15F, -0.05, MainRegistry.tMatElec, EnumToolType.MINER, 1000000000, 250000, 7500) .addBreakAbility(new ToolAbility.SmelterAbility()) .addBreakAbility(new ToolAbility.ShredderAbility()) .addBreakAbility(new ToolAbility.CentrifugeAbility()) @@ -5148,7 +5020,7 @@ public class ModItems { .addHitAbility(new WeaponAbility.VampireAbility(2F)) .addHitAbility(new WeaponAbility.BeheaderAbility()) .setDepthRockBreaker().setUnlocalizedName("bismuth_pickaxe").setTextureName(RefStrings.MODID + ":bismuth_pickaxe"); - bismuth_axe = new ItemToolAbility(125F, 0, matBismuth, EnumToolType.AXE) + bismuth_axe = new ItemToolAbility(25F, 0, matBismuth, EnumToolType.AXE) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(4)) .addBreakAbility(new ToolAbility.ShredderAbility()) @@ -5170,7 +5042,7 @@ public class ModItems { .addHitAbility(new WeaponAbility.VampireAbility(2F)) .addHitAbility(new WeaponAbility.BeheaderAbility()) .setDepthRockBreaker().setUnlocalizedName("volcanic_pickaxe").setTextureName(RefStrings.MODID + ":volcanic_pickaxe"); - volcanic_axe = new ItemToolAbility(125F, 0, matVolcano, EnumToolType.AXE) + volcanic_axe = new ItemToolAbility(25F, 0, matVolcano, EnumToolType.AXE) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(4)) .addBreakAbility(new ToolAbility.SmelterAbility()) @@ -5191,7 +5063,7 @@ public class ModItems { .addHitAbility(new WeaponAbility.VampireAbility(5F)) .addHitAbility(new WeaponAbility.BeheaderAbility()) .setDepthRockBreaker().setUnlocalizedName("chlorophyte_pickaxe").setTextureName(RefStrings.MODID + ":chlorophyte_pickaxe"); - chlorophyte_axe = new ItemToolAbility(175F, 0, matChlorophyte, EnumToolType.AXE) + chlorophyte_axe = new ItemToolAbility(50F, 0, matChlorophyte, EnumToolType.AXE) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(4)) .addBreakAbility(new ToolAbility.LuckAbility(4)) @@ -5214,7 +5086,7 @@ public class ModItems { .addHitAbility(new WeaponAbility.PhosphorusAbility(60)) .addHitAbility(new WeaponAbility.BeheaderAbility()) .setDepthRockBreaker().setUnlocalizedName("mese_pickaxe").setTextureName(RefStrings.MODID + ":mese_pickaxe"); - mese_axe = new ItemToolAbility(250F, 0, matMese, EnumToolType.AXE) + mese_axe = new ItemToolAbility(75F, 0, matMese, EnumToolType.AXE) .addBreakAbility(new ToolAbility.HammerAbility(3)) .addBreakAbility(new ToolAbility.RecursionAbility(5)) .addBreakAbility(new ToolAbility.SilkAbility()) @@ -5234,18 +5106,18 @@ public class ModItems { .addBreakAbility(new ToolAbility.HammerAbility(1)).setUnlocalizedName("dwarven_pickaxe").setMaxDamage(250).setTextureName(RefStrings.MODID + ":dwarven_pickaxe"); ToolMaterial matMeteorite = EnumHelper.addToolMaterial("HBM_METEORITE", 4, 0, 50F, 0.0F, 200).setRepairItem(new ItemStack(ModItems.plate_paa)); - meteorite_sword = new ItemSwordMeteorite(10F, 0, matMeteorite).setUnlocalizedName("meteorite_sword").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_seared = new ItemSwordMeteorite(15F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_seared").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_reforged = new ItemSwordMeteorite(25F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_reforged").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_hardened = new ItemSwordMeteorite(35F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_hardened").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_alloyed = new ItemSwordMeteorite(50F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_alloyed").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_machined = new ItemSwordMeteorite(65F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_machined").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_treated = new ItemSwordMeteorite(80F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_treated").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_etched = new ItemSwordMeteorite(100F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_etched").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_bred = new ItemSwordMeteorite(125F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_bred").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_irradiated = new ItemSwordMeteorite(175F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_irradiated").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_fused = new ItemSwordMeteorite(250F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_fused").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_baleful = new ItemSwordMeteorite(500F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_baleful").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword = new ItemSwordMeteorite(9F, 0, matMeteorite).setUnlocalizedName("meteorite_sword").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_seared = new ItemSwordMeteorite(10F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_seared").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_reforged = new ItemSwordMeteorite(12.5F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_reforged").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_hardened = new ItemSwordMeteorite(15F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_hardened").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_alloyed = new ItemSwordMeteorite(17.5F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_alloyed").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_machined = new ItemSwordMeteorite(20F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_machined").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_treated = new ItemSwordMeteorite(22.5F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_treated").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_etched = new ItemSwordMeteorite(25F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_etched").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_bred = new ItemSwordMeteorite(30F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_bred").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_irradiated = new ItemSwordMeteorite(35F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_irradiated").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_fused = new ItemSwordMeteorite(50F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_fused").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_baleful = new ItemSwordMeteorite(75F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_baleful").setTextureName(RefStrings.MODID + ":meteorite_sword"); mask_of_infamy = new MaskOfInfamy(ArmorMaterial.IRON, 0).setUnlocalizedName("mask_of_infamy").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":mask_of_infamy"); @@ -5258,12 +5130,12 @@ public class ModItems { hazmat_legs_red = new ArmorHazmat(MainRegistry.aMatHaz2, 2, RefStrings.MODID + ":textures/armor/hazmat_2_red.png").setUnlocalizedName("hazmat_legs_red").setTextureName(RefStrings.MODID + ":hazmat_legs_red"); hazmat_boots_red = new ArmorHazmat(MainRegistry.aMatHaz2, 3, RefStrings.MODID + ":textures/armor/hazmat_1_red.png").setUnlocalizedName("hazmat_boots_red").setTextureName(RefStrings.MODID + ":hazmat_boots_red"); hazmat_helmet_grey = new ArmorHazmatMask(MainRegistry.aMatHaz3, 0, "hbm:textures/models/ModelHazGrey.png") - .setFireproof(true).setUnlocalizedName("hazmat_helmet_grey").setTextureName(RefStrings.MODID + ":hazmat_helmet_grey"); + .setUnlocalizedName("hazmat_helmet_grey").setTextureName(RefStrings.MODID + ":hazmat_helmet_grey"); hazmat_plate_grey = new ArmorHazmat(MainRegistry.aMatHaz3, 1, RefStrings.MODID + ":textures/armor/hazmat_1_grey.png").cloneStats((ArmorFSB) hazmat_helmet_grey).setUnlocalizedName("hazmat_plate_grey").setTextureName(RefStrings.MODID + ":hazmat_plate_grey"); hazmat_legs_grey = new ArmorHazmat(MainRegistry.aMatHaz3, 2, RefStrings.MODID + ":textures/armor/hazmat_2_grey.png").cloneStats((ArmorFSB) hazmat_helmet_grey).setUnlocalizedName("hazmat_legs_grey").setTextureName(RefStrings.MODID + ":hazmat_legs_grey"); hazmat_boots_grey = new ArmorHazmat(MainRegistry.aMatHaz3, 3, RefStrings.MODID + ":textures/armor/hazmat_1_grey.png").cloneStats((ArmorFSB) hazmat_helmet_grey).setUnlocalizedName("hazmat_boots_grey").setTextureName(RefStrings.MODID + ":hazmat_boots_grey"); hazmat_paa_helmet = new ArmorHazmatMask(MainRegistry.aMatPaa, 0, RefStrings.MODID + ":textures/armor/hazmat_paa_1.png") - .setFireproof(true).setUnlocalizedName("hazmat_paa_helmet").setTextureName(RefStrings.MODID + ":hazmat_paa_helmet"); + .setUnlocalizedName("hazmat_paa_helmet").setTextureName(RefStrings.MODID + ":hazmat_paa_helmet"); hazmat_paa_plate = new ArmorHazmat(MainRegistry.aMatPaa, 1, RefStrings.MODID + ":textures/armor/hazmat_paa_1.png").cloneStats((ArmorFSB) hazmat_paa_helmet).setUnlocalizedName("hazmat_paa_plate").setTextureName(RefStrings.MODID + ":hazmat_paa_plate"); hazmat_paa_legs = new ArmorHazmat(MainRegistry.aMatPaa, 2, RefStrings.MODID + ":textures/armor/hazmat_paa_2.png").cloneStats((ArmorFSB) hazmat_paa_helmet).setUnlocalizedName("hazmat_paa_legs").setTextureName(RefStrings.MODID + ":hazmat_paa_legs"); hazmat_paa_boots = new ArmorHazmat(MainRegistry.aMatPaa, 3, RefStrings.MODID + ":textures/armor/hazmat_paa_1.png").cloneStats((ArmorFSB) hazmat_paa_helmet).setUnlocalizedName("hazmat_paa_boots").setTextureName(RefStrings.MODID + ":hazmat_paa_boots"); @@ -5271,9 +5143,6 @@ public class ModItems { ArmorMaterial aMatLiquidator = EnumHelper.addArmorMaterial("HBM_LIQUIDATOR", 750, new int[] { 3, 8, 6, 3 }, 10); aMatLiquidator.customCraftingMaterial = ModItems.plate_lead; liquidator_helmet = new ArmorLiquidatorMask(aMatLiquidator, 0, RefStrings.MODID + ":textures/armor/liquidator_helmet.png") - .setThreshold(1.0F) - .setBlastProtection(0.25F) - .setFireproof(true) .setStep("hbm:step.metal") .setJump("hbm:step.iron_jump") .setFall("hbm:step.iron_land").setUnlocalizedName("liquidator_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":liquidator_helmet"); @@ -6110,12 +5979,6 @@ public class ModItems { GameRegistry.registerItem(assembly_nuke, assembly_nuke.getUnlocalizedName()); GameRegistry.registerItem(assembly_luna, assembly_luna.getUnlocalizedName()); - //Folly Parts - GameRegistry.registerItem(folly_shell, folly_shell.getUnlocalizedName()); - GameRegistry.registerItem(folly_bullet, folly_bullet.getUnlocalizedName()); - GameRegistry.registerItem(folly_bullet_nuclear, folly_bullet_nuclear.getUnlocalizedName()); - GameRegistry.registerItem(folly_bullet_du, folly_bullet_du.getUnlocalizedName()); - //Wiring GameRegistry.registerItem(wiring_red_copper, wiring_red_copper.getUnlocalizedName()); @@ -6134,7 +5997,6 @@ public class ModItems { GameRegistry.registerItem(pellet_rtg_actinium, pellet_rtg_actinium.getUnlocalizedName()); GameRegistry.registerItem(pellet_rtg_polonium, pellet_rtg_polonium.getUnlocalizedName()); GameRegistry.registerItem(pellet_rtg_americium, pellet_rtg_americium.getUnlocalizedName()); - GameRegistry.registerItem(pellet_rtg_berkelium, pellet_rtg_berkelium.getUnlocalizedName()); GameRegistry.registerItem(pellet_rtg_gold, pellet_rtg_gold.getUnlocalizedName()); GameRegistry.registerItem(pellet_rtg_lead, pellet_rtg_lead.getUnlocalizedName()); GameRegistry.registerItem(pellet_rtg_depleted, pellet_rtg_depleted.getUnlocalizedName()); @@ -6894,7 +6756,6 @@ public class ModItems { GameRegistry.registerItem(gun_ar15, gun_ar15.getUnlocalizedName()); GameRegistry.registerItem(gun_calamity, gun_calamity.getUnlocalizedName()); GameRegistry.registerItem(gun_lacunae, gun_lacunae.getUnlocalizedName()); - GameRegistry.registerItem(gun_folly, gun_folly.getUnlocalizedName()); GameRegistry.registerItem(gun_b92, gun_b92.getUnlocalizedName()); GameRegistry.registerItem(gun_b93, gun_b93.getUnlocalizedName()); GameRegistry.registerItem(gun_rpg, gun_rpg.getUnlocalizedName()); @@ -6953,6 +6814,7 @@ public class ModItems { GameRegistry.registerItem(gun_pepperbox, gun_pepperbox.getUnlocalizedName()); GameRegistry.registerItem(gun_light_revolver, gun_light_revolver.getUnlocalizedName()); + GameRegistry.registerItem(gun_light_revolver_atlas, gun_light_revolver_atlas.getUnlocalizedName()); GameRegistry.registerItem(gun_light_revolver_dani, gun_light_revolver_dani.getUnlocalizedName()); GameRegistry.registerItem(gun_henry, gun_henry.getUnlocalizedName()); GameRegistry.registerItem(gun_greasegun, gun_greasegun.getUnlocalizedName()); @@ -6967,7 +6829,10 @@ public class ModItems { GameRegistry.registerItem(gun_liberator, gun_liberator.getUnlocalizedName()); GameRegistry.registerItem(gun_congolake, gun_congolake.getUnlocalizedName()); GameRegistry.registerItem(gun_flamer, gun_flamer.getUnlocalizedName()); + GameRegistry.registerItem(gun_flamer_topaz, gun_flamer_topaz.getUnlocalizedName()); + GameRegistry.registerItem(gun_flamer_daybreaker, gun_flamer_daybreaker.getUnlocalizedName()); GameRegistry.registerItem(gun_uzi, gun_uzi.getUnlocalizedName()); + GameRegistry.registerItem(gun_uzi_akimbo, gun_uzi_akimbo.getUnlocalizedName()); GameRegistry.registerItem(gun_spas12, gun_spas12.getUnlocalizedName()); GameRegistry.registerItem(gun_panzerschreck, gun_panzerschreck.getUnlocalizedName()); GameRegistry.registerItem(gun_g3, gun_g3.getUnlocalizedName()); @@ -6979,6 +6844,7 @@ public class ModItems { GameRegistry.registerItem(gun_quadro, gun_quadro.getUnlocalizedName()); GameRegistry.registerItem(gun_lag, gun_lag.getUnlocalizedName()); GameRegistry.registerItem(gun_minigun, gun_minigun.getUnlocalizedName()); + GameRegistry.registerItem(gun_minigun_lacunae, gun_minigun_lacunae.getUnlocalizedName()); GameRegistry.registerItem(gun_missile_launcher, gun_missile_launcher.getUnlocalizedName()); GameRegistry.registerItem(gun_tesla_cannon, gun_tesla_cannon.getUnlocalizedName()); GameRegistry.registerItem(gun_stg77, gun_stg77.getUnlocalizedName()); @@ -6988,8 +6854,10 @@ public class ModItems { GameRegistry.registerItem(gun_coilgun, gun_coilgun.getUnlocalizedName()); GameRegistry.registerItem(gun_hangman, gun_hangman.getUnlocalizedName()); GameRegistry.registerItem(gun_bolter, gun_bolter.getUnlocalizedName()); + GameRegistry.registerItem(gun_folly, gun_folly.getUnlocalizedName()); GameRegistry.registerItem(ammo_standard, ammo_standard.getUnlocalizedName()); + GameRegistry.registerItem(ammo_secret, ammo_secret.getUnlocalizedName()); //Ammo GameRegistry.registerItem(gun_b92_ammo, gun_b92_ammo.getUnlocalizedName()); @@ -7033,42 +6901,6 @@ public class ModItems { GameRegistry.registerItem(ammo_dgk, ammo_dgk.getUnlocalizedName()); GameRegistry.registerItem(ammo_arty, ammo_arty.getUnlocalizedName()); GameRegistry.registerItem(ammo_himars, ammo_himars.getUnlocalizedName()); - GameRegistry.registerItem(ammo_folly, ammo_folly.getUnlocalizedName()); - GameRegistry.registerItem(ammo_folly_nuclear, ammo_folly_nuclear.getUnlocalizedName()); - GameRegistry.registerItem(ammo_folly_du, ammo_folly_du.getUnlocalizedName()); - - //-C-l-i-p-s- Magazines - GameRegistry.registerItem(clip_revolver_iron, clip_revolver_iron.getUnlocalizedName()); - GameRegistry.registerItem(clip_revolver, clip_revolver.getUnlocalizedName()); - GameRegistry.registerItem(clip_revolver_gold, clip_revolver_gold.getUnlocalizedName()); - GameRegistry.registerItem(clip_revolver_lead, clip_revolver_lead.getUnlocalizedName()); - GameRegistry.registerItem(clip_revolver_schrabidium, clip_revolver_schrabidium.getUnlocalizedName()); - GameRegistry.registerItem(clip_revolver_cursed, clip_revolver_cursed.getUnlocalizedName()); - GameRegistry.registerItem(clip_revolver_nightmare, clip_revolver_nightmare.getUnlocalizedName()); - GameRegistry.registerItem(clip_revolver_nightmare2, clip_revolver_nightmare2.getUnlocalizedName()); - GameRegistry.registerItem(clip_revolver_pip, clip_revolver_pip.getUnlocalizedName()); - GameRegistry.registerItem(clip_revolver_nopip, clip_revolver_nopip.getUnlocalizedName()); - GameRegistry.registerItem(clip_rpg, clip_rpg.getUnlocalizedName()); - GameRegistry.registerItem(clip_stinger, clip_stinger.getUnlocalizedName()); - GameRegistry.registerItem(clip_fatman, clip_fatman.getUnlocalizedName()); - GameRegistry.registerItem(clip_mirv, clip_mirv.getUnlocalizedName()); - GameRegistry.registerItem(clip_bf, clip_bf.getUnlocalizedName()); - GameRegistry.registerItem(clip_mp40, clip_mp40.getUnlocalizedName()); - GameRegistry.registerItem(clip_uzi, clip_uzi.getUnlocalizedName()); - GameRegistry.registerItem(clip_uboinik, clip_uboinik.getUnlocalizedName()); - GameRegistry.registerItem(clip_lever_action, clip_lever_action.getUnlocalizedName()); - GameRegistry.registerItem(clip_bolt_action, clip_bolt_action.getUnlocalizedName()); - GameRegistry.registerItem(clip_xvl1456, clip_xvl1456.getUnlocalizedName()); - GameRegistry.registerItem(clip_osipr, clip_osipr.getUnlocalizedName()); - GameRegistry.registerItem(clip_immolator, clip_immolator.getUnlocalizedName()); - GameRegistry.registerItem(clip_cryolator, clip_cryolator.getUnlocalizedName()); - GameRegistry.registerItem(clip_mp, clip_mp.getUnlocalizedName()); - GameRegistry.registerItem(clip_emp, clip_emp.getUnlocalizedName()); - GameRegistry.registerItem(clip_jack, clip_jack.getUnlocalizedName()); - GameRegistry.registerItem(clip_spark, clip_spark.getUnlocalizedName()); - GameRegistry.registerItem(clip_hp, clip_hp.getUnlocalizedName()); - GameRegistry.registerItem(clip_euthanasia, clip_euthanasia.getUnlocalizedName()); - GameRegistry.registerItem(clip_defabricator, clip_defabricator.getUnlocalizedName()); GameRegistry.registerItem(ammo_container, ammo_container.getUnlocalizedName()); @@ -7599,7 +7431,6 @@ public class ModItems { GameRegistry.registerItem(detonator_laser, detonator_laser.getUnlocalizedName()); GameRegistry.registerItem(detonator_deadman, detonator_deadman.getUnlocalizedName()); GameRegistry.registerItem(detonator_de, detonator_de.getUnlocalizedName()); - GameRegistry.registerItem(crate_caller, crate_caller.getUnlocalizedName()); GameRegistry.registerItem(bomb_caller, bomb_caller.getUnlocalizedName()); GameRegistry.registerItem(meteor_remote, meteor_remote.getUnlocalizedName()); GameRegistry.registerItem(anchor_remote, anchor_remote.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/armor/ArmorDNT.java b/src/main/java/com/hbm/items/armor/ArmorDNT.java index d223e45c6..7f245c7f2 100644 --- a/src/main/java/com/hbm/items/armor/ArmorDNT.java +++ b/src/main/java/com/hbm/items/armor/ArmorDNT.java @@ -184,13 +184,9 @@ public class ArmorDNT extends ArmorFSBPowered { } } - list.add(EnumChatFormatting.YELLOW + " " + I18nUtil.resolveKey("armor.explosionImmune")); - list.add(EnumChatFormatting.YELLOW + " " + I18nUtil.resolveKey("armor.cap", 5)); - list.add(EnumChatFormatting.YELLOW + " " + I18nUtil.resolveKey("armor.modifier", 0.001F)); list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.vats")); list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.thermal")); list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.hardLanding")); - list.add(EnumChatFormatting.DARK_RED + " " + I18nUtil.resolveKey("armor.ignoreLimit")); list.add(EnumChatFormatting.AQUA + " " + I18nUtil.resolveKey("armor.rocketBoots")); list.add(EnumChatFormatting.AQUA + " " + I18nUtil.resolveKey("armor.fastFall")); list.add(EnumChatFormatting.AQUA + " " + I18nUtil.resolveKey("armor.sprintBoost")); diff --git a/src/main/java/com/hbm/items/armor/ArmorFSB.java b/src/main/java/com/hbm/items/armor/ArmorFSB.java index 115c298fb..cf83bf1be 100644 --- a/src/main/java/com/hbm/items/armor/ArmorFSB.java +++ b/src/main/java/com/hbm/items/armor/ArmorFSB.java @@ -3,10 +3,8 @@ package com.hbm.items.armor; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Collections; -import java.util.HashMap; import java.util.HashSet; import java.util.List; -import java.util.Map.Entry; import org.lwjgl.opengl.GL11; @@ -28,7 +26,6 @@ import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.resources.I18n; import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemArmor; @@ -51,21 +48,12 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { private String texture = ""; private ResourceLocation overlay = null; public List effects = new ArrayList(); - public HashMap resistance = new HashMap(); - public float blastProtection = -1; - public float projectileProtection = -1; - public float damageCap = -1; - public float damageMod = -1; - public float damageThreshold = 0; - public float protectionYield = 100F; - public boolean fireproof = false; public boolean noHelmet = false; public boolean vats = false; public boolean thermal = false; public boolean geigerSound = false; public boolean customGeiger = false; public boolean hardLanding = false; - public double gravity = 0; public int dashCount = 0; public int stepSize = 0; public String step; @@ -82,46 +70,6 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { return this; } - public ArmorFSB addResistance(String damage, float mod) { - resistance.put(damage, mod); - return this; - } - - public ArmorFSB setCap(float cap) { - this.damageCap = cap; - return this; - } - - public ArmorFSB setMod(float mod) { - this.damageMod = mod; - return this; - } - - public ArmorFSB setThreshold(float threshold) { - this.damageThreshold = threshold; - return this; - } - - public ArmorFSB setProtectionLevel(float damageYield) { - this.protectionYield = damageYield; - return this; - } - - public ArmorFSB setBlastProtection(float blastProtection) { - this.blastProtection = blastProtection; - return this; - } - - public ArmorFSB setProjectileProtection(float projectileProtection) { - this.projectileProtection = projectileProtection; - return this; - } - - public ArmorFSB setFireproof(boolean fire) { - this.fireproof = fire; - return this; - } - public ArmorFSB setNoHelmet(boolean noHelmet) { this.noHelmet = noHelmet; return this; @@ -151,11 +99,6 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { this.hardLanding = hardLanding; return this; } - - public ArmorFSB setGravity(double gravity) { - this.gravity = gravity; - return this; - } public ArmorFSB setDashCount(int dashCount) { this.dashCount = dashCount; @@ -191,21 +134,12 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { //lists aren't being modified after instantiation, so there's no need to dereference this.effects = original.effects; - this.resistance = original.resistance; - this.damageCap = original.damageCap; - this.damageMod = original.damageMod; - this.damageThreshold = original.damageThreshold; - this.protectionYield = original.protectionYield; - this.blastProtection = original.blastProtection; - this.projectileProtection = original.projectileProtection; - this.fireproof = original.fireproof; this.noHelmet = original.noHelmet; this.vats = original.vats; this.thermal = original.thermal; this.geigerSound = original.geigerSound; this.customGeiger = original.customGeiger; this.hardLanding = original.hardLanding; - this.gravity = original.gravity; this.dashCount = original.dashCount; this.stepSize = original.stepSize; this.step = original.step; @@ -222,85 +156,29 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - - list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKey("armor.fullSetBonus")); + + List toAdd = new ArrayList(); if(!effects.isEmpty()) { - + List potionList = new ArrayList(); for(PotionEffect effect : effects) { - list.add(EnumChatFormatting.AQUA + " " + I18n.format(Potion.potionTypes[effect.getPotionID()].getName())); + potionList.add(I18n.format(Potion.potionTypes[effect.getPotionID()].getName())); } + + toAdd.add(EnumChatFormatting.AQUA + String.join(", ", potionList)); } - if(!resistance.isEmpty()) { + if(geigerSound) toAdd.add(EnumChatFormatting.GOLD + " " + I18nUtil.resolveKey("armor.geigerSound")); + if(customGeiger) toAdd.add(EnumChatFormatting.GOLD + " " + I18nUtil.resolveKey("armor.geigerHUD")); + if(vats) toAdd.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.vats")); + if(thermal) toAdd.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.thermal")); + if(hardLanding) toAdd.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.hardLanding")); + if(stepSize != 0) toAdd.add(EnumChatFormatting.BLUE + " " + I18nUtil.resolveKey("armor.stepSize", stepSize)); + if(dashCount > 0) toAdd.add(EnumChatFormatting.AQUA + " " + I18nUtil.resolveKey("armor.dash", dashCount)); - for(Entry struct : resistance.entrySet()) { - - if(struct.getValue() != 0) - list.add(EnumChatFormatting.YELLOW + " " + I18nUtil.resolveKey("armor.damageModifier", struct.getValue(), I18n.format(struct.getKey()))); - else - list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.nullDamage", I18n.format(struct.getKey()))); - } - } - - if(blastProtection != -1) { - list.add(EnumChatFormatting.YELLOW + " " + I18nUtil.resolveKey("armor.blastProtection", blastProtection)); - } - - if(projectileProtection != -1) { - list.add(EnumChatFormatting.YELLOW + " " + I18nUtil.resolveKey("armor.projectileProtection", projectileProtection)); - } - - if(damageCap != -1) { - list.add(EnumChatFormatting.YELLOW + " " + I18nUtil.resolveKey("armor.cap", damageCap)); - } - - if(damageMod != -1) { - list.add(EnumChatFormatting.YELLOW + " " + I18nUtil.resolveKey("armor.modifier", damageMod)); - } - - if(damageThreshold > 0) { - list.add(EnumChatFormatting.YELLOW + " " + I18nUtil.resolveKey("armor.threshold", damageThreshold)); - } - - if(fireproof) { - list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.fireproof")); - } - - if(geigerSound) { - list.add(EnumChatFormatting.GOLD + " " + I18nUtil.resolveKey("armor.geigerSound")); - } - - if(customGeiger) { - list.add(EnumChatFormatting.GOLD + " " + I18nUtil.resolveKey("armor.geigerHUD")); - } - - if(vats) { - list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.vats")); - } - - if(thermal) { - list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.thermal")); - } - - if(hardLanding) { - list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.hardLanding")); - } - - if(gravity != 0) { - list.add(EnumChatFormatting.BLUE + " " + I18nUtil.resolveKey("armor.gravity", gravity)); - } - - if(stepSize != 0) { - list.add(EnumChatFormatting.BLUE + " " + I18nUtil.resolveKey("armor.stepSize", stepSize)); - } - - if(dashCount > 0) { - list.add(EnumChatFormatting.AQUA + " " + I18nUtil.resolveKey("armor.dash", dashCount)); - } - - if(protectionYield != 100F) { - list.add(EnumChatFormatting.BLUE + " " + I18nUtil.resolveKey("armor.yield", protectionYield)); + if(!toAdd.isEmpty()) { + list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKey("armor.fullSetBonus")); + list.addAll(toAdd); } } @@ -359,80 +237,6 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { return false; } - public void handleAttack(LivingAttackEvent event) { - - EntityLivingBase e = event.entityLiving; - - if(e instanceof EntityPlayer) { - EntityPlayer player = (EntityPlayer) e; - - if(ArmorFSB.hasFSBArmor(player)) { - - ItemStack plate = player.inventory.armorInventory[2]; - - ArmorFSB chestplate = (ArmorFSB) plate.getItem(); - - if(chestplate.damageThreshold >= event.ammount && !event.source.isUnblockable()) { - event.setCanceled(true); - } - - if(chestplate.fireproof && event.source.isFireDamage()) { - player.extinguish(); - event.setCanceled(true); - } - - if(chestplate.resistance.get(event.source.getDamageType()) != null && chestplate.resistance.get(event.source.getDamageType()) <= 0) { - event.setCanceled(true); - } - } - } - } - - public void handleHurt(LivingHurtEvent event) { - - EntityLivingBase e = event.entityLiving; - - if(e instanceof EntityPlayer) { - EntityPlayer player = (EntityPlayer) e; - - if(ArmorFSB.hasFSBArmor(player)) { - - ArmorFSB chestplate = (ArmorFSB) player.inventory.armorInventory[2].getItem(); - - //store any damage above the yield - float overFlow = Math.max(0, event.ammount - chestplate.protectionYield); - //reduce the damage to the yield cap if it exceeds the yield - event.ammount = Math.min(event.ammount, chestplate.protectionYield); - - if(!event.source.isUnblockable()) - event.ammount -= chestplate.damageThreshold; - - if(chestplate.damageMod != -1) { - event.ammount *= chestplate.damageMod; - } - - if(chestplate.resistance.get(event.source.getDamageType()) != null) { - event.ammount *= chestplate.resistance.get(event.source.getDamageType()); - } - - if(chestplate.blastProtection != -1 && event.source.isExplosion()) { - event.ammount *= chestplate.blastProtection; - } - - if(chestplate.projectileProtection != -1 && event.source.isProjectile()) { - event.ammount *= chestplate.projectileProtection; - } - - if(chestplate.damageCap != -1) { - event.ammount = Math.min(event.ammount, chestplate.damageCap); - } - - //add back anything that was above the protection yield before - event.ammount += overFlow; - } - } - } - public void handleTick(TickEvent.PlayerTickEvent event) { EntityPlayer player = event.player; @@ -450,9 +254,6 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { } } - if(!player.capabilities.isFlying && !player.isInWater()) - player.motionY -= chestplate.gravity; - if(chestplate.step != null && player.worldObj.isRemote && player.onGround) { try { @@ -531,14 +332,9 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { @Override public void onArmorTick(World world, EntityPlayer entity, ItemStack stack) { - if(this.armorType != 1) - return; - - if(!hasFSBArmor(entity) || !this.geigerSound) - return; - - if(entity.inventory.hasItem(ModItems.geiger_counter) || entity.inventory.hasItem(ModItems.dosimeter)) - return; + if(this.armorType != 1) return; + if(!hasFSBArmor(entity) || !this.geigerSound) return; + if(entity.inventory.hasItem(ModItems.geiger_counter) || entity.inventory.hasItem(ModItems.dosimeter)) return; if(world.getTotalWorldTime() % 5 == 0) { @@ -560,26 +356,20 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { int r = list.get(world.rand.nextInt(list.size())); - if(r > 0) - world.playSoundAtEntity(entity, "hbm:item.geiger" + r, 1.0F, 1.0F); + if(r > 0) world.playSoundAtEntity(entity, "hbm:item.geiger" + r, 1.0F, 1.0F); } } } public static int check(World world, int x, int y, int z) { - int rads = (int) Math.ceil(ChunkRadiationManager.proxy.getRadiation(world, x, y, z)); return rads; } // For crazier stuff not possible without hooking the event - @SideOnly(Side.CLIENT) - public void handleOverlay(RenderGameOverlayEvent.Pre event, EntityPlayer player) { - } + @SideOnly(Side.CLIENT) public void handleOverlay(RenderGameOverlayEvent.Pre event, EntityPlayer player) { } - public boolean isArmorEnabled(ItemStack stack) { - return true; - } + public boolean isArmorEnabled(ItemStack stack) { return true; } @SideOnly(Side.CLIENT) public void renderHelmetOverlay(ItemStack stack, EntityPlayer player, ScaledResolution resolution, float partialTicks, boolean hasScreen, int mouseX, int mouseY) { @@ -624,4 +414,7 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { public boolean disablesPart(EntityPlayer player, ItemStack stack, EnumPlayerPart part) { return hidden.contains(part) && (!needsFullSet || hasFSBArmorIgnoreCharge(player)); } + + public void handleAttack(LivingAttackEvent event) { } + public void handleHurt(LivingHurtEvent event) { } } diff --git a/src/main/java/com/hbm/items/tool/ItemBombCaller.java b/src/main/java/com/hbm/items/tool/ItemBombCaller.java index 5ea5c732e..87394ece7 100644 --- a/src/main/java/com/hbm/items/tool/ItemBombCaller.java +++ b/src/main/java/com/hbm/items/tool/ItemBombCaller.java @@ -37,10 +37,7 @@ public class ItemBombCaller extends Item { case 5: list.add("Type: VT stinger rockets"); break; case 6: list.add("Type: PIP OH GOD"); break; case 7: list.add("Type: Cloud the cloud oh god the cloud"); break; - default: list.add("Type: INVALID, Report it to mod creator"); - } - } @Override diff --git a/src/main/java/com/hbm/items/tool/ItemCrateCaller.java b/src/main/java/com/hbm/items/tool/ItemCrateCaller.java deleted file mode 100644 index 5ec1ff32d..000000000 --- a/src/main/java/com/hbm/items/tool/ItemCrateCaller.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.hbm.items.tool; - -import java.util.List; -import java.util.Random; - -import com.hbm.blocks.ModBlocks; - -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ChatComponentText; -import net.minecraft.world.World; - -public class ItemCrateCaller extends Item { - - Random rand = new Random(); - - public ItemCrateCaller() { - this.canRepair = false; - this.setMaxDamage(4); - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) - { - list.add("Right click to request supply drop!"); - } - - @Override - public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - - stack.damageItem(1, player); - - int x = rand.nextInt(31) - 15; - int z = rand.nextInt(31) - 15; - - Block crate = ModBlocks.crate; - - int i = rand.nextInt(1000); - - if(i < 350) - crate = ModBlocks.crate_weapon; - if(i < 100) - crate = ModBlocks.crate_metal; - if(i < 50) - crate = ModBlocks.crate_lead; - if(i == 0) - crate = ModBlocks.crate_red; - - if(!world.isRemote) - { - if(world.getBlock((int)player.posX + x, 255, (int)player.posZ + z) == Blocks.air) - world.setBlock((int)player.posX + x, 255, (int)player.posZ + z, crate); - } - if(world.isRemote) - { - player.addChatMessage(new ChatComponentText("Called in supply drop!")); - } - - world.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); - - player.swingItem(); - - return stack; - - } - -} diff --git a/src/main/java/com/hbm/items/weapon/GunB93.java b/src/main/java/com/hbm/items/weapon/GunB93.java deleted file mode 100644 index 245279dd9..000000000 --- a/src/main/java/com/hbm/items/weapon/GunB93.java +++ /dev/null @@ -1,270 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.effect.EntityCloudFleijaRainbow; -import com.hbm.entity.logic.EntityNukeExplosionMK3; -import com.hbm.entity.projectile.EntityModBeam; -import net.minecraft.entity.Entity; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.EnumRarity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.player.ArrowLooseEvent; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunB93 extends Item { - - Random rand = new Random(); - - public int dmgMin = 16; - public int dmgMax = 28; - - public GunB93() { - - this.maxStackSize = 1; - } - - @Override - public void onPlayerStoppedUsing(ItemStack p_77615_1_, World p_77615_2_, EntityPlayer p_77615_3_, int p_77615_4_) { - if (!p_77615_3_.isSneaking()) { - int j = this.getMaxItemUseDuration(p_77615_1_) - p_77615_4_; - - ArrowLooseEvent event = new ArrowLooseEvent(p_77615_3_, p_77615_1_, j); - MinecraftForge.EVENT_BUS.post(event); - j = event.charge; - - boolean flag = true; - - if (flag) { - float f = j / 20.0F; - f = (f * f + f * 2.0F) / 3.0F; - - if (j < 10.0D) { - return; - } - - if (j > 10.0F) { - f = 10.0F; - } - - if (!p_77615_2_.isRemote) { - - EntityModBeam entityarrow1; - entityarrow1 = new EntityModBeam(p_77615_2_, p_77615_3_, 3.0F); - entityarrow1.mode = getPower(p_77615_1_) - 1; - p_77615_1_.damageItem(1, p_77615_3_); - - p_77615_2_.spawnEntityInWorld(entityarrow1); - - p_77615_2_.playSoundAtEntity(p_77615_3_, "hbm:weapon.sparkShoot", 5.0F, 1.0F); - } - - setAnim(p_77615_1_, 1); - setPower(p_77615_1_, 0); - } - } else { - } - } - - @Override - public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean b) { - int j = getAnim(stack); - - if (j > 0) { - if (j < 30) - setAnim(stack, j + 1); - else - setAnim(stack, 0); - - if (j == 15) { - world.playSoundAtEntity(entity, "hbm:weapon.b92Reload", 2F, 0.9F); - setPower(stack, getPower(stack) + 1); - - if(getPower(stack) > 10) { - - setPower(stack, 0); - - if(!world.isRemote) { - EntityNukeExplosionMK3 ex = EntityNukeExplosionMK3.statFacFleija(world, entity.posX, entity.posY, entity.posZ, 50); - if(!ex.isDead) { - world.playSoundEffect(entity.posX, entity.posY, entity.posZ, "random.explode", 100.0f, world.rand.nextFloat() * 0.1F + 0.9F); - - world.spawnEntityInWorld(ex); - - EntityCloudFleijaRainbow cloud = new EntityCloudFleijaRainbow(world, 50); - cloud.posX = entity.posX; - cloud.posY = entity.posY; - cloud.posZ = entity.posZ; - world.spawnEntityInWorld(cloud); - } - } - } - } - } - - } - - @Override - public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_) { - return p_77654_1_; - } - - /** - * How long it takes to use or consume an item - */ - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - /** - * returns the action that specifies what animation to play when the items - * is being used - */ - @Override - public EnumAction getItemUseAction(ItemStack p_77661_1_) { - return EnumAction.bow; - } - - /** - * Called whenever this item is equipped and the right mouse button is - * pressed. Args: itemStack, world, entityPlayer - */ - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - if (!p_77659_3_.isSneaking() && getPower(p_77659_1_) > 0) { - ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); - MinecraftForge.EVENT_BUS.post(event); - - if (this.getAnim(p_77659_1_) == 0) - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - } else { - if (getAnim(p_77659_1_) == 0) { - setAnim(p_77659_1_, 1); - } - } - - return p_77659_1_; - } - - /** - * Return the enchantability factor of the item, most of the time is based - * on material. - */ - @Override - public int getItemEnchantability() { - return 1; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("[LEGENDARY WEAPON]"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 3.5, 0)); - return multimap; - } - - private static int getAnim(ItemStack stack) { - if (stack.stackTagCompound == null) { - stack.stackTagCompound = new NBTTagCompound(); - return 0; - } - - return stack.stackTagCompound.getInteger("animation"); - - } - - private static void setAnim(ItemStack stack, int i) { - if (stack.stackTagCompound == null) { - stack.stackTagCompound = new NBTTagCompound(); - } - - stack.stackTagCompound.setInteger("animation", i); - - } - - private static int getPower(ItemStack stack) { - if (stack.stackTagCompound == null) { - stack.stackTagCompound = new NBTTagCompound(); - return 0; - } - - return stack.stackTagCompound.getInteger("energy"); - - } - - private static void setPower(ItemStack stack, int i) { - if (stack.stackTagCompound == null) { - stack.stackTagCompound = new NBTTagCompound(); - } - - stack.stackTagCompound.setInteger("energy", i); - - } - - public static float getRotationFromAnim(ItemStack stack) { - float rad = 0.0174533F; - rad *= 7.5F; - int i = getAnim(stack); - - if (i < 10) - return 0; - i -= 10; - - if (i < 6) - return rad * i; - if (i > 14) - return rad * (5 - (i - 15)); - return rad * 5; - } - - public static float getOffsetFromAnim(ItemStack stack) { - float i = getAnim(stack); - - if (i < 10) - return 0; - i -= 10; - - if (i < 10) - return i / 10; - else - return 2 - (i / 10); - } - - public static float getTransFromAnim(ItemStack stack) { - float i = getAnim(stack); - - if (i < 10) - return 0; - i -= 10; - - if (i > 4 && i < 10) - return (i - 5) * 0.05F; - - if (i > 9 && i < 15) - return (10 * 0.05F) - ((i - 5) * 0.05F); - - return 0; - } - - @Override - public EnumRarity getRarity(ItemStack p_77613_1_) { - - return EnumRarity.uncommon; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunCryolator.java b/src/main/java/com/hbm/items/weapon/GunCryolator.java deleted file mode 100644 index 1a0c8b44f..000000000 --- a/src/main/java/com/hbm/items/weapon/GunCryolator.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityLN2; -import com.hbm.items.ModItems; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunCryolator extends Item { - - Random rand = new Random(); - - public GunCryolator() { - this.maxStackSize = 1; - } - - @Override - public EnumAction getItemUseAction(ItemStack par1ItemStack) { - return EnumAction.bow; - } - - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - new ArrowNockEvent(p_77659_3_, p_77659_1_); - { - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - } - - return p_77659_1_; - } - - @Override - public void onUsingTick(ItemStack stack, EntityPlayer player, int count) { - World world = player.worldObj; - - boolean flag = player.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_cryolator_ammo))) { - EntityLN2 entityarrow = new EntityLN2(world, player, 3.0F); - - if (flag) { - entityarrow.canBePickedUp = 2; - } else { - if (count % 10 == 0) - player.inventory.consumeInventoryItem(ModItems.gun_cryolator_ammo); - } - - if (count % 5 == 0) - world.playSoundAtEntity(player, "hbm:weapon.cryolatorShoot", 1.0F, 1F); - - if (!world.isRemote) { - world.spawnEntityInWorld(entityarrow); - } - } - } - - @Override - public int getItemEnchantability() { - return 0; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("Ice to meet you!"); - list.add(""); - list.add("Ammo: Cryolator Ammo"); - list.add("Damage: 5"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 4, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunDefabricator.java b/src/main/java/com/hbm/items/weapon/GunDefabricator.java deleted file mode 100644 index ce1457033..000000000 --- a/src/main/java/com/hbm/items/weapon/GunDefabricator.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityBullet; -import com.hbm.items.ModItems; -import com.hbm.main.MainRegistry; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunDefabricator extends Item { - - Random rand = new Random(); - - public GunDefabricator() - { - this.maxStackSize = 1; - } - - @Override - public EnumAction getItemUseAction(ItemStack par1ItemStack) { - return EnumAction.bow; - } - - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - new ArrowNockEvent(p_77659_3_, p_77659_1_); - { - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - } - - return p_77659_1_; - } - - @Override - public void onUsingTick(ItemStack stack, EntityPlayer player, int count) - { - World world = player.worldObj; - - boolean flag = player.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_defabricator_ammo)) - && count % 2 == 0) { - EntityBullet entitybullet = new EntityBullet(world, player, 3.0F, 40, 120, false, "tauDay"); - entitybullet.setDamage(40 + rand.nextInt(120 - 40)); - - //world.playSoundAtEntity(player, "random.explode", 1.0F, 1.5F + (rand.nextFloat() / 4)); - world.playSoundAtEntity(player, "hbm:weapon.defabShoot", 1.0F, 0.9F + (rand.nextFloat() * 0.2F)); - if(count == this.getMaxItemUseDuration(stack)) - world.playSoundAtEntity(player, "hbm:weapon.defabSpinup", 1.0F, 1.0F); - - if(count % 20 == 0 && !flag) - player.inventory.consumeInventoryItem(ModItems.gun_defabricator_ammo); - - if (!world.isRemote) { - world.spawnEntityInWorld(entitybullet); - } - } - } - - @Override - public int getItemEnchantability() { - return 0; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - if(MainRegistry.polaroidID == 11) - list.add("Did you set your alarm for volcano day?"); - else - list.add("BAD WOLF"); - list.add(""); - list.add("Ammo: Defabricator Energy Cell"); - list.add("Damage: 40 - 120"); - list.add(""); - list.add("[LEGENDARY WEAPON]"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 6.5, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunEuthanasia.java b/src/main/java/com/hbm/items/weapon/GunEuthanasia.java deleted file mode 100644 index adf81090d..000000000 --- a/src/main/java/com/hbm/items/weapon/GunEuthanasia.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityBullet; -import com.hbm.items.ModItems; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunEuthanasia extends Item { - - Random rand = new Random(); - - public GunEuthanasia() - { - this.maxStackSize = 1; - } - - @Override - public EnumAction getItemUseAction(ItemStack par1ItemStack) { - return EnumAction.bow; - } - - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - new ArrowNockEvent(p_77659_3_, p_77659_1_); - { - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - } - - return p_77659_1_; - } - - @Override - public void onUsingTick(ItemStack stack, EntityPlayer player, int count) - { - World world = player.worldObj; - - boolean flag = player.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_euthanasia_ammo)) - && count % 8 == 0) { - - int deadly = rand.nextInt(5); - - EntityBullet entityarrow = new EntityBullet(world, player, 3.0F, 2, 8, deadly == 0, false); - entityarrow.setDamage(1 + rand.nextInt(3)); - entityarrow.antidote = true; - - //world.playSoundAtEntity(player, "random.explode", 1.0F, 1.5F + (rand.nextFloat() / 4)); - world.playSoundAtEntity(player, "hbm:weapon.rifleShoot", 1.0F, 0.8F + (rand.nextFloat() * 0.4F)); - - if (flag) { - entityarrow.canBePickedUp = 2; - } else { - player.inventory.consumeInventoryItem(ModItems.gun_euthanasia_ammo); - } - - if (!world.isRemote) { - world.spawnEntityInWorld(entityarrow); - } - } - } - - @Override - public int getItemEnchantability() { - return 0; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("Say hello to my little syringe gun!"); - list.add(""); - list.add("Ammo: Syringe"); - list.add("Damage: 1 - 4"); - list.add("Syringes have a 20% chance to instakill the enemy."); - list.add(""); - list.add("[LEGENDARY WEAPON]"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 3, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunFolly.java b/src/main/java/com/hbm/items/weapon/GunFolly.java deleted file mode 100644 index 4fe1a0f49..000000000 --- a/src/main/java/com/hbm/items/weapon/GunFolly.java +++ /dev/null @@ -1,135 +0,0 @@ -package com.hbm.items.weapon; - -import com.hbm.entity.projectile.EntityBulletBaseNT; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.interfaces.IHoldableWeapon; -import com.hbm.items.ModItems; -import com.hbm.items.weapon.sedna.Crosshair; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; - -public class GunFolly extends Item implements IHoldableWeapon { - - @Override - public Crosshair getCrosshair() { - return Crosshair.L_SPLIT; - } - - @Override - public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - - int state = getState(stack); - - if(state == 0) { - - world.playSoundAtEntity(player, "hbm:weapon.follyOpen", 1.0F, 1.0F); - setState(stack, 1); - - } else if(state == 1) { - - if(player.inventory.hasItem(ModItems.ammo_folly)) { - - world.playSoundAtEntity(player, "hbm:weapon.follyReload", 1.0F, 1.0F); - player.inventory.consumeInventoryItem(ModItems.ammo_folly); - setState(stack, 2); - } else { - - world.playSoundAtEntity(player, "hbm:weapon.follyClose", 1.0F, 1.0F); - setState(stack, 0); - } - - } else if(state == 2) { - - world.playSoundAtEntity(player, "hbm:weapon.follyClose", 1.0F, 1.0F); - setState(stack, 3); - setTimer(stack, 100); - } else if(state == 3) { - - if(getTimer(stack) == 0) { - - setState(stack, 0); - world.playSoundAtEntity(player, "hbm:weapon.follyFire", 1.0F, 1.0F); - - double mult = 1.75D; - - player.motionX -= player.getLookVec().xCoord * mult; - player.motionY -= player.getLookVec().yCoord * mult; - player.motionZ -= player.getLookVec().zCoord * mult; - - if (!world.isRemote) { - EntityBulletBaseNT bullet = new EntityBulletBaseNT(world, BulletConfigSyncingUtil.TEST_CONFIG, player); - world.spawnEntityInWorld(bullet); - } - } - } - - return stack; - } - - @Override - public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean isCurrentItem) { - - if(getState(stack) == 3) { - - if(isCurrentItem) { - int timer = getTimer(stack); - - if(timer > 0) { - timer--; - - if(timer % 20 == 0 && timer != 0) - world.playSoundAtEntity(entity, "hbm:weapon.follyBuzzer", 1.0F, 1.0F); - - if(timer == 0) - world.playSoundAtEntity(entity, "hbm:weapon.follyAquired", 1.0F, 1.0F); - - setTimer(stack, timer); - } - } else { - setTimer(stack, 100); - } - } - } - - //0: closed, empty, - //1: open, empty - //2: open, full - //3: closed, full - public static void setState(ItemStack stack, int i) { - writeNBT(stack, "state", i); - } - - public static int getState(ItemStack stack) { - return readNBT(stack, "state"); - } - - public static void setTimer(ItemStack stack, int i) { - writeNBT(stack, "timer", i); - } - - public static int getTimer(ItemStack stack) { - return readNBT(stack, "timer"); - } - - private static void writeNBT(ItemStack stack, String key, int value) { - - if(!stack.hasTagCompound()) - stack.stackTagCompound = new NBTTagCompound(); - - stack.stackTagCompound.setInteger(key, value); - } - - private static int readNBT(ItemStack stack, String key) { - - if(!stack.hasTagCompound()) - return 0; - - return stack.stackTagCompound.getInteger(key); - } - -} diff --git a/src/main/java/com/hbm/items/weapon/GunHP.java b/src/main/java/com/hbm/items/weapon/GunHP.java deleted file mode 100644 index 5899bb44a..000000000 --- a/src/main/java/com/hbm/items/weapon/GunHP.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -@Deprecated -public class GunHP extends Item { - - Random rand = new Random(); - - public GunHP() { - this.maxStackSize = 1; - } - - @Override - public EnumAction getItemUseAction(ItemStack par1ItemStack) { - return EnumAction.bow; - } - - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - new ArrowNockEvent(p_77659_3_, p_77659_1_); - { - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - } - - return p_77659_1_; - } - - @Override - public void onUsingTick(ItemStack stack, EntityPlayer player, int count) { } - - @Override - public int getItemEnchantability() { - return 0; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("Rrrrt - rrrrt - rrrrt, weeee!"); - list.add(""); - list.add("Ammo: Ink Cartridge"); - list.add("Damage: 25 - 45"); - list.add(""); - list.add("[LEGENDARY WEAPON]"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 4, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunJack.java b/src/main/java/com/hbm/items/weapon/GunJack.java deleted file mode 100644 index efb6e453e..000000000 --- a/src/main/java/com/hbm/items/weapon/GunJack.java +++ /dev/null @@ -1,150 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityBullet; -import com.hbm.items.ModItems; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.player.ArrowLooseEvent; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunJack extends Item { - Random rand = new Random(); - - public int dmgMin = 12; - public int dmgMax = 24; - - public GunJack() { - - this.maxStackSize = 1; - } - - /** - * called when the player releases the use item button. Args: itemstack, - * world, entityplayer, itemInUseCount - */ - @Override - public void onPlayerStoppedUsing(ItemStack p_77615_1_, World p_77615_2_, EntityPlayer p_77615_3_, int p_77615_4_) { - int j = this.getMaxItemUseDuration(p_77615_1_) - p_77615_4_; - - ArrowLooseEvent event = new ArrowLooseEvent(p_77615_3_, p_77615_1_, j); - MinecraftForge.EVENT_BUS.post(event); - j = event.charge; - - boolean flag = p_77615_3_.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, p_77615_1_) > 0; - - if (flag || p_77615_3_.inventory.hasItem(ModItems.gun_jack_ammo)) { - float f = j / 20.0F; - f = (f * f + f * 2.0F) / 3.0F; - - if (j < 10.0D) { - return; - } - - if (j > 10.0F) { - f = 10.0F; - } - - p_77615_1_.damageItem(1, p_77615_3_); - - p_77615_2_.playSoundAtEntity(p_77615_3_, "hbm:weapon.shotgunShoot", 1.0F, 1.0F); - - if (flag) { } else { - p_77615_3_.inventory.consumeInventoryItem(ModItems.gun_jack_ammo); - } - - int k = rand.nextInt(25) + 24; - - for(int i = 0; i < k; i++) { - - EntityBullet entityarrow1 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); - entityarrow1.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); - - if(!p_77615_2_.isRemote) - p_77615_2_.spawnEntityInWorld(entityarrow1); - } - } - } - - @Override - public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_) { - return p_77654_1_; - } - - /** - * How long it takes to use or consume an item - */ - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - /** - * returns the action that specifies what animation to play when the items - * is being used - */ - @Override - public EnumAction getItemUseAction(ItemStack p_77661_1_) { - return EnumAction.bow; - } - - /** - * Called whenever this item is equipped and the right mouse button is - * pressed. Args: itemStack, world, entityPlayer - */ - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); - MinecraftForge.EVENT_BUS.post(event); - - if (p_77659_3_.capabilities.isCreativeMode || p_77659_3_.inventory.hasItem(ModItems.gun_jack_ammo)) { - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - } - - return p_77659_1_; - } - - /** - * Return the enchantability factor of the item, most of the time is based - * on material. - */ - @Override - public int getItemEnchantability() { - return 1; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("One barrel? Boring."); - list.add("Two barrels? Nah."); - list.add("Four barrels? Heck yes!"); - list.add(""); - list.add("Ammo: Quadruple Shotgun Shells"); - list.add("Damage: 12 - 24"); - list.add("Projectiles: 24 - 48"); - list.add(""); - list.add("[LEGENDARY WEAPON]"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 4.5, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunLeverActionS.java b/src/main/java/com/hbm/items/weapon/GunLeverActionS.java deleted file mode 100644 index 2d90d50ca..000000000 --- a/src/main/java/com/hbm/items/weapon/GunLeverActionS.java +++ /dev/null @@ -1,232 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.items.ModItems; -import com.hbm.lib.ModDamageSource; -import com.hbm.main.MainRegistry; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.Entity; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.StatCollector; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.player.ArrowLooseEvent; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunLeverActionS extends Item { - - Random rand = new Random(); - - public int dmgMin = 8; - public int dmgMax = 16; - - public GunLeverActionS() { - - this.maxStackSize = 1; - - this.setMaxDamage(500); - } - - /** - * called when the player releases the use item button. Args: itemstack, - * world, entityplayer, itemInUseCount - */ - @Override - public void onPlayerStoppedUsing(ItemStack p_77615_1_, World p_77615_2_, EntityPlayer p_77615_3_, int p_77615_4_) { - int j = this.getMaxItemUseDuration(p_77615_1_) - p_77615_4_; - - ArrowLooseEvent event = new ArrowLooseEvent(p_77615_3_, p_77615_1_, j); - MinecraftForge.EVENT_BUS.post(event); - j = event.charge; - - boolean flag = p_77615_3_.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, p_77615_1_) > 0; - - if (flag || p_77615_3_.inventory.hasItem(ModItems.ammo_20gauge)) { - float f = j / 20.0F; - f = (f * f + f * 2.0F) / 3.0F; - - if (j < 10.0D) { - return; - } - - if (j > 10.0F) { - f = 10.0F; - } - - Vec3 vec = p_77615_3_.getLookVec(); - vec.xCoord *= -1; - vec.yCoord *= -1; - vec.zCoord *= -1; - vec.normalize(); - - p_77615_3_.motionX += vec.xCoord * 0.75; - p_77615_3_.motionY += vec.yCoord * 0.75; - p_77615_3_.motionZ += vec.zCoord * 0.75; - - p_77615_3_.inventory.consumeInventoryItem(ModItems.ammo_20gauge); - - p_77615_1_.damageItem(1, p_77615_3_); - - p_77615_3_.attackEntityFrom(ModDamageSource.suicide, 10000); - if(!p_77615_3_.capabilities.isCreativeMode) - p_77615_3_.setHealth(0.0F); - - p_77615_2_.playSoundAtEntity(p_77615_3_, "hbm:weapon.revolverShootAlt", 5.0F, 0.75F); - - setAnim(p_77615_1_, 1); - } - } - - - @Override - public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean b) { - int j = getAnim(stack); - - if(j > 0) { - if(j < 30) - setAnim(stack, j + 1); - else - setAnim(stack, 0); - - if(j == 15) - world.playSoundAtEntity(entity, "hbm:weapon.leverActionReload", 2F, 0.85F); - } - - } - - @Override - public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_) { - return p_77654_1_; - } - - /** - * How long it takes to use or consume an item - */ - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - /** - * returns the action that specifies what animation to play when the items - * is being used - */ - @Override - public EnumAction getItemUseAction(ItemStack p_77661_1_) { - return EnumAction.bow; - } - - /** - * Called whenever this item is equipped and the right mouse button is - * pressed. Args: itemStack, world, entityPlayer - */ - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); - MinecraftForge.EVENT_BUS.post(event); - - if(this.getAnim(p_77659_1_) == 0) - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - - return p_77659_1_; - } - - /** - * Return the enchantability factor of the item, most of the time is based - * on material. - */ - @Override - public int getItemEnchantability() { - return 1; - } - - public String getItemStackDisplayName(ItemStack stack) - { - if(MainRegistry.polaroidID == 11) - return ("" + StatCollector.translateToLocal(this.getUnlocalizedName() + "_2.name")).trim(); - else - return ("" + StatCollector.translateToLocal(this.getUnlocalizedName() + ".name")).trim(); - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - if(MainRegistry.polaroidID == 11) - list.add("Vee guilt-tripped me into this."); - else - list.add("I hate your guts, Vee."); - list.add(""); - list.add("Ammo: 12x74 Buckshot"); - list.add("Damage: Infinite"); - list.add(""); - list.add("[LEGENDARY WEAPON]"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 3.5, 0)); - return multimap; - } - - private static int getAnim(ItemStack stack) { - if(stack.stackTagCompound == null) { - stack.stackTagCompound = new NBTTagCompound(); - return 0; - } - - return stack.stackTagCompound.getInteger("animation"); - - } - - private static void setAnim(ItemStack stack, int i) { - if(stack.stackTagCompound == null) { - stack.stackTagCompound = new NBTTagCompound(); - } - - stack.stackTagCompound.setInteger("animation", i); - - } - - public static float getRotationFromAnim(ItemStack stack) { - float rad = 0.0174533F; - rad *= 7.5F; - int i = getAnim(stack); - - if(i < 10) - return 0; - i -= 10; - - if(i < 10) - return rad * i; - else - return (rad * 10) - (rad * (i - 10)); - } - - public static float getOffsetFromAnim(ItemStack stack) { - float i = getAnim(stack); - - if(i < 10) - return 0; - i -= 10; - - if(i < 10) - return i / 10; - else - return 2 - (i / 10); - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunSpark.java b/src/main/java/com/hbm/items/weapon/GunSpark.java deleted file mode 100644 index 55b34c1d7..000000000 --- a/src/main/java/com/hbm/items/weapon/GunSpark.java +++ /dev/null @@ -1,141 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntitySparkBeam; -import com.hbm.items.ModItems; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.player.ArrowLooseEvent; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunSpark extends Item { - Random rand = new Random(); - - public int dmgMin = 12; - public int dmgMax = 24; - - public GunSpark() { - - this.maxStackSize = 1; - } - - /** - * called when the player releases the use item button. Args: itemstack, - * world, entityplayer, itemInUseCount - */ - @Override - public void onPlayerStoppedUsing(ItemStack p_77615_1_, World p_77615_2_, EntityPlayer p_77615_3_, int p_77615_4_) { - int j = this.getMaxItemUseDuration(p_77615_1_) - p_77615_4_; - - ArrowLooseEvent event = new ArrowLooseEvent(p_77615_3_, p_77615_1_, j); - MinecraftForge.EVENT_BUS.post(event); - j = event.charge; - - boolean flag = p_77615_3_.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, p_77615_1_) > 0; - - if (flag || p_77615_3_.inventory.hasItem(ModItems.gun_spark_ammo)) { - float f = j / 20.0F; - f = (f * f + f * 2.0F) / 3.0F; - - if (j < 10.0D) { - return; - } - - if (j > 10.0F) { - f = 10.0F; - } - - p_77615_1_.damageItem(1, p_77615_3_); - - p_77615_2_.playSoundAtEntity(p_77615_3_, "hbm:weapon.sparkShoot", 1.0F, 1.0F); - - if (flag) { } else { - p_77615_3_.inventory.consumeInventoryItem(ModItems.gun_spark_ammo); - } - - EntitySparkBeam beam = new EntitySparkBeam(p_77615_2_, p_77615_3_, 3F); - beam.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); - - if(!p_77615_2_.isRemote) - p_77615_2_.spawnEntityInWorld(beam); - } - } - - @Override - public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_) { - return p_77654_1_; - } - - /** - * How long it takes to use or consume an item - */ - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - /** - * returns the action that specifies what animation to play when the items - * is being used - */ - @Override - public EnumAction getItemUseAction(ItemStack p_77661_1_) { - return EnumAction.bow; - } - - /** - * Called whenever this item is equipped and the right mouse button is - * pressed. Args: itemStack, world, entityPlayer - */ - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); - MinecraftForge.EVENT_BUS.post(event); - - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - - return p_77659_1_; - } - - /** - * Return the enchantability factor of the item, most of the time is based - * on material. - */ - @Override - public int getItemEnchantability() { - return 1; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("'magic does not compute'"); - list.add("'aeiou'"); - list.add(""); - list.add("Ammo: Electromagnetic Cartridge"); - list.add("Projectiles explode on impact."); - list.add(""); - list.add("[LEGENDARY WEAPON]"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 4.5, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunSuicide.java b/src/main/java/com/hbm/items/weapon/GunSuicide.java deleted file mode 100644 index b94700be1..000000000 --- a/src/main/java/com/hbm/items/weapon/GunSuicide.java +++ /dev/null @@ -1,158 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.items.ModItems; -import com.hbm.lib.ModDamageSource; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.player.ArrowLooseEvent; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunSuicide extends Item { - - public static final String[] bowPullIconNameArray = new String[] {"pulling_0", "pulling_1", "pulling_2"}; - @SideOnly(Side.CLIENT) - private IIcon[] iconArray; - private Item ammo; - Random rand = new Random(); - - public GunSuicide() - { - this.maxStackSize = 1; - //if(this == ModItems.gun_revolver) - { - this.setMaxDamage(500); - } - - this.ammo = ModItems.ammo_357; - } - - /** - * called when the player releases the use item button. Args: itemstack, world, entityplayer, itemInUseCount - */ - @Override - public void onPlayerStoppedUsing(ItemStack p_77615_1_, World p_77615_2_, EntityPlayer p_77615_3_, int p_77615_4_) - { - int j = this.getMaxItemUseDuration(p_77615_1_) - p_77615_4_; - - ArrowLooseEvent event = new ArrowLooseEvent(p_77615_3_, p_77615_1_, j); - MinecraftForge.EVENT_BUS.post(event); - j = event.charge; - - boolean flag = p_77615_3_.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, p_77615_1_) > 0; - - - if (flag || p_77615_3_.inventory.hasItem(ammo)) - { - float f = j / 20.0F; - f = (f * f + f * 2.0F) / 3.0F; - - if (j < 10.0D) - { - return; - } - - if (j > 10.0F) - { - f = 10.0F; - } - - p_77615_1_.damageItem(1, p_77615_3_); - p_77615_2_.playSoundAtEntity(p_77615_3_, "hbm:weapon.revolverShoot", 1.0F, 1.0F); - - if (flag) - { } - else - { - p_77615_3_.inventory.consumeInventoryItem(ammo); - } - - if (!p_77615_2_.isRemote) - { - p_77615_3_.attackEntityFrom(ModDamageSource.suicide, 10000); - if(!p_77615_3_.capabilities.isCreativeMode) - p_77615_3_.setHealth(0.0F); - } - } - } - - @Override - public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_) - { - return p_77654_1_; - } - - /** - * How long it takes to use or consume an item - */ - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) - { - return 72000; - } - - /** - * returns the action that specifies what animation to play when the items is being used - */ - @Override - public EnumAction getItemUseAction(ItemStack p_77661_1_) - { - return EnumAction.bow; - } - - /** - * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer - */ - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) - { - ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); - MinecraftForge.EVENT_BUS.post(event); - - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - - return p_77659_1_; - } - - /** - * Return the enchantability factor of the item, most of the time is based on material. - */ - @Override - public int getItemEnchantability() - { - return 1; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("I've seen things..."); - list.add("...I shouldn't have seen."); - list.add(""); - list.add("Ammo: Lead Bullets"); - list.add("Damage: Infinite"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 2.5, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemCoilgun.java b/src/main/java/com/hbm/items/weapon/ItemCoilgun.java deleted file mode 100644 index 86e8dc937..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemCoilgun.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.hbm.items.weapon; - -import com.hbm.handler.GunConfiguration; -import com.hbm.render.anim.BusAnimation; -import com.hbm.render.anim.BusAnimationSequence; -import com.hbm.render.anim.HbmAnimations.AnimType; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.item.ItemStack; - -public class ItemCoilgun extends ItemGunBase { - - public ItemCoilgun(GunConfiguration config) { - super(config); - } - - @Override - @SideOnly(Side.CLIENT) - public BusAnimation getAnimation(ItemStack stack, AnimType type) { - - if(type == AnimType.CYCLE) { - return new BusAnimation() - .addBus("RECOIL", new BusAnimationSequence() - .addPos(1, 0, 0, 100) - .addPos(0, 0, 0, 200)); - } - - if(type == AnimType.RELOAD) { - return new BusAnimation() - .addBus("RELOAD", new BusAnimationSequence() - .addPos(1, 0, 0, 250) - .addPos(1, 0, 0, 500) - .addPos(0, 0, 0, 250)); - } - - GunConfiguration config = ((ItemGunBase) stack.getItem()).mainConfig; - return config.animations.get(type); - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemGunBio.java b/src/main/java/com/hbm/items/weapon/ItemGunBio.java deleted file mode 100644 index 5ba412702..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemGunBio.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.handler.GunConfiguration; -import com.hbm.render.anim.BusAnimation; -import com.hbm.render.anim.BusAnimationSequence; -import com.hbm.render.anim.HbmAnimations.AnimType; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; - -public class ItemGunBio extends ItemGunBase { - - public ItemGunBio(GunConfiguration config) { - super(config); - } - - public static long lastShot; - public static List smokeNodes = new ArrayList(); - - @Override - public void startActionClient(ItemStack stack, World world, EntityPlayer player, boolean main) { } - - @Override - @SideOnly(Side.CLIENT) - protected void updateClient(ItemStack stack, World world, EntityPlayer entity, int slot, boolean isCurrentItem) { - super.updateClient(stack, world, entity, slot, isCurrentItem); - - boolean smoking = lastShot + 2000 > System.currentTimeMillis(); - - if(!smoking && !smokeNodes.isEmpty()) { - smokeNodes.clear(); - } - - if(smoking) { - - Vec3 prev = Vec3.createVectorHelper(-entity.motionX, -entity.motionY, -entity.motionZ); - prev.rotateAroundY((float) (entity.rotationYaw * Math.PI / 180D)); - double accel = 15D; - double side = (entity.rotationYaw - entity.prevRotationYawHead) * 0.1D; - double waggle = 0.025D; - - for(double[] node : smokeNodes) { - node[0] += prev.xCoord * accel + world.rand.nextGaussian() * waggle + side; - node[1] += prev.yCoord + 1.5D; - node[2] += prev.zCoord * accel + world.rand.nextGaussian() * waggle; - } - - double alpha = (System.currentTimeMillis() - ItemGunBio.lastShot) / 2000D; - alpha = (1 - alpha) * 0.5D; - - if(this.getIsReloading(stack)) alpha = 0; - - smokeNodes.add(new double[] {0, 0, 0, alpha}); - } - } - - @Override - @SideOnly(Side.CLIENT) - public BusAnimation getAnimation(ItemStack stack, AnimType type) { - - if(type == AnimType.CYCLE) { - lastShot = System.currentTimeMillis(); - return new BusAnimation() - .addBus("RECOIL", new BusAnimationSequence() - .addPos(0, 0, 0, 50) - .addPos(0, 0, -3, 50) - .addPos(0, 0, 0, 250) - ) - .addBus("HAMMER", new BusAnimationSequence() - .addPos(0, 0, 1, 50) - .addPos(0, 0, 1, 300) - .addPos(0, 0, 0, 200) - ) - .addBus("DRUM", new BusAnimationSequence() - .addPos(0, 0, 1, 50) - ); - } - - if(type == AnimType.RELOAD) { - return new BusAnimation() - .addBus("LATCH", new BusAnimationSequence() - .addPos(0, 0, 90, 300) - .addPos(0, 0, 90, 2000) - .addPos(0, 0, 0, 150) - ) - .addBus("FRONT", new BusAnimationSequence() - .addPos(0, 0, 0, 200) - .addPos(0, 0, 45, 150) - .addPos(0, 0, 45, 2000) - .addPos(0, 0, 0, 75) - ) - .addBus("RELOAD_ROT", new BusAnimationSequence() - .addPos(0, 0, 0, 300) - .addPos(60, 0, 0, 500) - .addPos(60, 0, 0, 500) - .addPos(0, -90, -90, 0) - .addPos(0, -90, -90, 600) - .addPos(0, 0, 0, 300) - .addPos(0, 0, 0, 100) - .addPos(-45, 0, 0, 50) - .addPos(-45, 0, 0, 100) - .addPos(0, 0, 0, 300) - ) - .addBus("RELOAD_MOVE", new BusAnimationSequence() - .addPos(0, 0, 0, 300) - .addPos(0, -15, 0, 1000) - .addPos(0, 0, 0, 450) - ) - .addBus("DRUM_PUSH", new BusAnimationSequence() - .addPos(0, 0, 0, 1600) - .addPos(0, 0, -5, 0) - .addPos(0, 0, 0, 300) - ); - } - - return null; - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemGunChemthrower.java b/src/main/java/com/hbm/items/weapon/ItemGunChemthrower.java deleted file mode 100644 index 9dec64259..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemGunChemthrower.java +++ /dev/null @@ -1,226 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; - -import com.hbm.config.GeneralConfig; -import com.hbm.entity.projectile.EntityChemical; -import com.hbm.handler.GunConfiguration; -import com.hbm.handler.guncfg.GunEnergyFactory; -import com.hbm.interfaces.IHoldableWeapon; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.items.machine.ItemFluidIcon; -import com.hbm.items.weapon.sedna.Crosshair; -import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.toclient.GunAnimationPacket; -import com.hbm.render.anim.HbmAnimations.AnimType; -import com.hbm.render.util.RenderScreenOverlay; -import api.hbm.fluid.IFillableItem; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.Minecraft; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.world.World; -import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; -import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; - -public class ItemGunChemthrower extends ItemGunBase implements IFillableItem { - - public ItemGunChemthrower() { - super(GunEnergyFactory.getChemConfig()); - } - - @Override - protected void fire(ItemStack stack, World world, EntityPlayer player) { - - if(!hasAmmo(stack, player, true)) - return; - - int bullets = 1; - - for(int i = 0; i < bullets; i++) { - spawnProjectile(world, player, stack, 0); - } - - if(player instanceof EntityPlayerMP) - PacketDispatcher.wrapper.sendTo(new GunAnimationPacket(AnimType.CYCLE.ordinal()), (EntityPlayerMP) player); - - useUpAmmo(player, stack, true); - player.inventoryContainer.detectAndSendChanges(); - - int wear = (int) Math.ceil(10 / (1F + EnchantmentHelper.getEnchantmentLevel(Enchantment.unbreaking.effectId, stack))); - setItemWear(stack, getItemWear(stack) + wear); - } - - @Override - public boolean hasAmmo(ItemStack stack, EntityPlayer player, boolean main) { - return getMag(stack) >= 0 + this.getConsumption(stack); - } - - @Override - public void useUpAmmo(EntityPlayer player, ItemStack stack, boolean main) { - - if(!main && altConfig == null) - return; - - GunConfiguration config = mainConfig; - - if(!main) - config = altConfig; - - if(hasInfinity(stack, config)) - return; - - setMag(stack, getMag(stack) - this.getConsumption(stack)); - } - - @Override - public boolean canReload(ItemStack stack, World world, EntityPlayer player) { - return false; - } - - @Override - protected void spawnProjectile(World world, EntityPlayer player, ItemStack stack, int config) { - //spawn fluid projectile - EntityChemical chem = new EntityChemical(world, player, 0, 0, 0); - chem.setFluid(this.getFluidType(stack)); - world.spawnEntityInWorld(chem); - } - - @Override - public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - - list.add("Ammo: " + getMag(stack) + " / " + mainConfig.ammoCap + "mB"); - - list.add("Ammo Type: " + this.getFluidType(stack).getLocalizedName()); - - int dura = mainConfig.durability - getItemWear(stack); - - if(dura < 0) - dura = 0; - - list.add("Durability: " + dura + " / " + mainConfig.durability); - list.add(""); - list.add("Name: " + mainConfig.name); - list.add("Manufacturer: " + mainConfig.manufacturer); - - if(!mainConfig.comment.isEmpty()) { - list.add(""); - for(String s : mainConfig.comment) - list.add(EnumChatFormatting.ITALIC + s); - } - - if(GeneralConfig.enableExtendedLogging) { - list.add(""); - list.add("Type: " + getMagType(stack)); - list.add("Is Reloading: " + getIsReloading(stack)); - list.add("Reload Cycle: " + getReloadCycle(stack)); - list.add("RoF Cooldown: " + getDelay(stack)); - } - } - - @Override - @SideOnly(Side.CLIENT) - public void renderHUD(Pre event, ElementType type, EntityPlayer player, ItemStack stack) { - - ItemGunBase gun = ((ItemGunBase)stack.getItem()); - GunConfiguration gcfg = gun.mainConfig; - - if(type == ElementType.HOTBAR) { - - FluidType fluid = this.getFluidType(stack); - - ItemStack ammo = ItemFluidIcon.make(fluid, 1); - - int count = ItemGunBase.getMag(stack); - int max = gcfg.ammoCap; - boolean showammo = gcfg.showAmmo; - - int dura = ItemGunBase.getItemWear(stack) * 50 / gcfg.durability; - - RenderScreenOverlay.renderAmmo(event.resolution, Minecraft.getMinecraft().ingameGUI, ammo, count, max, dura, showammo); - } - - if(type == ElementType.CROSSHAIRS && GeneralConfig.enableCrosshairs) { - - event.setCanceled(true); - - if(!(gcfg.hasSights && player.isSneaking())) - RenderScreenOverlay.renderCustomCrosshairs(event.resolution, Minecraft.getMinecraft().ingameGUI, ((IHoldableWeapon)player.getHeldItem().getItem()).getCrosshair()); - else - RenderScreenOverlay.renderCustomCrosshairs(event.resolution, Minecraft.getMinecraft().ingameGUI, Crosshair.NONE); - } - } - - @Override - protected void reload2(ItemStack stack, World world, EntityPlayer player) { - this.setIsReloading(stack, false); - } - - public FluidType getFluidType(ItemStack stack) { - return Fluids.fromID(this.getMagType(stack)); - } - - public int getConsumption(ItemStack stack) { - return 3; - } - - @Override - public boolean acceptsFluid(FluidType type, ItemStack stack) { - return getFluidType(stack) == type || this.getMag(stack) == 0; - } - - public static final int transferSpeed = 50; - - @Override - public int tryFill(FluidType type, int amount, ItemStack stack) { - - if(!acceptsFluid(type, stack)) - return amount; - - if(this.getMag(stack) == 0) - this.setMagType(stack, type.getID()); - - int fill = this.getMag(stack); - int req = this.mainConfig.ammoCap - fill; - - int toFill = Math.min(amount, req); - toFill = Math.min(toFill, transferSpeed); - - this.setMag(stack, fill + toFill); - - return amount - toFill; - } - - @Override - public boolean providesFluid(FluidType type, ItemStack stack) { - return getFluidType(stack) == type; - } - - @Override - public int tryEmpty(FluidType type, int amount, ItemStack stack) { - - int fill = this.getMag(stack); - int toUnload = Math.min(fill, amount); - toUnload = Math.min(toUnload, transferSpeed); - - this.setMag(stack, fill - toUnload); - - return toUnload; - } - - @Override - public FluidType getFirstFluidType(ItemStack stack) { - return this.getFluidType(stack); - } - - @Override - public int getFill(ItemStack stack) { - return this.getMag(stack); - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemGunDart.java b/src/main/java/com/hbm/items/weapon/ItemGunDart.java deleted file mode 100644 index 1840cda68..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemGunDart.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.hbm.items.weapon; - -import com.hbm.handler.GunConfiguration; - -import api.hbm.item.IDesignatorItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.ChatComponentText; -import net.minecraft.util.ChatStyle; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; - -public class ItemGunDart extends ItemGunBase implements IDesignatorItem { - - public ItemGunDart(GunConfiguration config) { - super(config); - } - - public static void writePlayer(ItemStack stack, EntityPlayer player) { - - if(!stack.hasTagCompound()) - stack.stackTagCompound = new NBTTagCompound(); - - stack.stackTagCompound.setString("player", player.getDisplayName()); - stack.stackTagCompound.setLong("lease", player.worldObj.getTotalWorldTime() + 60 * 60 * 20); - } - - public static EntityPlayer readPlayer(World world, ItemStack stack) { - - if(!stack.hasTagCompound()) - return null; - - if(stack.stackTagCompound.getLong("lease") < world.getTotalWorldTime()) - return null; - - return MinecraftServer.getServer().getConfigurationManager().func_152612_a(stack.stackTagCompound.getString("player")); - } - - public void startAction(ItemStack stack, World world, EntityPlayer player, boolean main) { - - if(main) { - super.startAction(stack, world, player, main); - } else { - - EntityPlayer target = readPlayer(world, stack); - - if(target != null) { - - int dim = target.worldObj.provider.dimensionId; - int x = (int)target.posX; - int y = (int)target.posY; - int z = (int)target.posZ; - int dist = (int) target.getDistanceToEntity(player); - - player.addChatComponentMessage(new ChatComponentText(target.getDisplayName()).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW))); - player.addChatComponentMessage(new ChatComponentText("Dim: " + dim + " X:" + x + " Y:" + y + " Z:" + z + " (" + dist + " blocks away)").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW))); - } else { - - player.addChatComponentMessage(new ChatComponentText("No Target").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); - } - } - } - - @Override - public boolean isReady(World world, ItemStack stack, int x, int y, int z) { - EntityPlayer target = readPlayer(world, stack); - return target != null && target.dimension == world.provider.dimensionId; - } - - @Override - public Vec3 getCoords(World world, ItemStack stack, int x, int y, int z) { - EntityPlayer target = readPlayer(world, stack); - return Vec3.createVectorHelper(target.posX, target.posY, target.posZ); - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemGunDetonator.java b/src/main/java/com/hbm/items/weapon/ItemGunDetonator.java deleted file mode 100644 index ae89da2c9..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemGunDetonator.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.hbm.items.weapon; - -import com.hbm.handler.GunConfiguration; - -import net.minecraft.item.ItemStack; - -public class ItemGunDetonator extends ItemGunBase { - - public ItemGunDetonator(GunConfiguration config) { - super(config); - } - - @Override - public boolean hasInfinity(ItemStack stack, GunConfiguration config) { - return true; - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemGunGauss.java b/src/main/java/com/hbm/items/weapon/ItemGunGauss.java deleted file mode 100644 index b3c7e83c0..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemGunGauss.java +++ /dev/null @@ -1,158 +0,0 @@ -package com.hbm.items.weapon; - -import com.hbm.entity.projectile.EntityBulletBaseNT; -import com.hbm.handler.GunConfiguration; -import com.hbm.items.ModItems; -import com.hbm.lib.ModDamageSource; -import com.hbm.main.MainRegistry; -import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.toclient.GunAnimationPacket; -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; - -public class ItemGunGauss extends ItemGunBase { - - private AudioWrapper chargeLoop; - - public ItemGunGauss(GunConfiguration config, GunConfiguration alt) { - super(config, alt); - } - - public void endAction(ItemStack stack, World world, EntityPlayer player, boolean main) { - - if(getHasShot(stack)) { - world.playSoundAtEntity(player, "hbm:weapon.sparkShoot", 2.0F, 1.0F); - setHasShot(stack, false); - } - - if(!main && getStored(stack) > 0) { - EntityBulletBaseNT bullet = new EntityBulletBaseNT(world, altConfig.config.get(0), player); - bullet.overrideDamage = Math.max(getStored(stack), 1) * 10F; - world.spawnEntityInWorld(bullet); - world.playSoundAtEntity(player, "hbm:weapon.tauShoot", 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); - } - } - - public void endActionClient(ItemStack stack, World world, EntityPlayer player, boolean main) { - - if(chargeLoop != null) { - chargeLoop.stopSound(); - chargeLoop = null; - } - } - - protected void altFire(ItemStack stack, World world, EntityPlayer player) { - setCharge(stack, 1); - } - - @Override - public void startActionClient(ItemStack stack, World world, EntityPlayer player, boolean main) { - - if(!main && getItemWear(stack) < mainConfig.durability && player.inventory.hasItem(ModItems.gun_xvl1456_ammo)) { - chargeLoop = MainRegistry.proxy.getLoopedSound("hbm:weapon.tauChargeLoop2", (float)player.posX, (float)player.posY, (float)player.posZ, 1.0F, 5F, 0.75F); - world.playSoundAtEntity(player, "hbm:weapon.tauChargeLoop2", 1.0F, 0.75F); - - if(chargeLoop != null) { - chargeLoop.startSound(); - } - } - } - - protected void updateServer(ItemStack stack, World world, EntityPlayer player, int slot, boolean isCurrentItem) { - - super.updateServer(stack, world, player, slot, isCurrentItem); - - if(getIsAltDown(stack) && getItemWear(stack) < mainConfig.durability) { - - int c = getCharge(stack); - - if(c > 200) { - setCharge(stack, 0); - setItemWear(stack, mainConfig.durability); - player.attackEntityFrom(ModDamageSource.tauBlast, 1000); - world.newExplosion(player, player.posX, player.posY + player.eyeHeight, player.posZ, 5.0F, true, true); - return; - } - - if(c > 0) { - setCharge(stack, c + 1); - - if(c % 10 == 1 && c < 140 && c > 2) { - - if(player.inventory.hasItem(ModItems.gun_xvl1456_ammo)) { - player.inventory.consumeInventoryItem(ModItems.gun_xvl1456_ammo); - setStored(stack, getStored(stack) + 1); - } else { - setCharge(stack, 0); - setStored(stack, 0); - } - } - } else { - setStored(stack, 0); - } - } else { - setCharge(stack, 0); - setStored(stack, 0); - } - } - - protected void updateClient(ItemStack stack, World world, EntityPlayer player, int slot, boolean isCurrentItem) { - super.updateClient(stack, world, player, slot, isCurrentItem); - - if(chargeLoop != null) { - if(!chargeLoop.isPlaying()) { - chargeLoop = rebootAudio(chargeLoop, player); - } - chargeLoop.updatePosition((float)player.posX, (float)player.posY, (float)player.posZ); - chargeLoop.updatePitch(1 + (getCharge(stack)) * 0.01F); - } - } - - public AudioWrapper rebootAudio(AudioWrapper wrapper, EntityPlayer player) { - wrapper.stopSound(); - AudioWrapper audio = MainRegistry.proxy.getLoopedSound("hbm:weapon.tauChargeLoop2", (float)player.posX, (float)player.posY, (float)player.posZ, wrapper.getVolume(), wrapper.getRange(), wrapper.getPitch()); - audio.startSound(); - return audio; - } - - protected void spawnProjectile(World world, EntityPlayer player, ItemStack stack, int config) { - - super.spawnProjectile(world, player, stack, config); - setHasShot(stack, true); - } - - public static void setHasShot(ItemStack stack, boolean b) { - writeNBT(stack, "hasShot", b ? 1 : 0); - } - - public static boolean getHasShot(ItemStack stack) { - return readNBT(stack, "hasShot") == 1; - } - - /// gauss charge state /// - public static void setCharge(ItemStack stack, int i) { - writeNBT(stack, "gauss_charge", i); - } - - public static int getCharge(ItemStack stack) { - return readNBT(stack, "gauss_charge"); - } - - public static void setStored(ItemStack stack, int i) { - writeNBT(stack, "gauss_stored", i); - } - - public static int getStored(ItemStack stack) { - return readNBT(stack, "gauss_stored"); - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemGunLacunae.java b/src/main/java/com/hbm/items/weapon/ItemGunLacunae.java deleted file mode 100644 index 03fa31c1c..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemGunLacunae.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.hbm.items.weapon; - -import com.hbm.handler.GunConfiguration; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class ItemGunLacunae extends ItemGunBase { - - public ItemGunLacunae(GunConfiguration config) { - super(config); - } - - @Override - public void startAction(ItemStack stack, World world, EntityPlayer player, boolean main) { - - if(main) { - setDelay(stack, 20); - world.playSoundAtEntity(player, "hbm:weapon.lacunaeSpinup", 1.0F, 1.0F); - } - } - - @Override - public void endAction(ItemStack stack, World world, EntityPlayer player, boolean main) { - - if(main) - world.playSoundAtEntity(player, "hbm:weapon.lacunaeSpindown", 1.0F, 1.0F); - } - - protected void updateServer(ItemStack stack, World world, EntityPlayer player, int slot, boolean isCurrentItem) { - - super.updateServer(stack, world, player, slot, isCurrentItem); - - if(getIsMouseDown(stack)) { - - int rot = readNBT(stack, "rot") % 360; - rot += 25; - writeNBT(stack, "rot", rot); - } - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemGunOSIPR.java b/src/main/java/com/hbm/items/weapon/ItemGunOSIPR.java deleted file mode 100644 index dd8f945bc..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemGunOSIPR.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.hbm.items.weapon; - -import com.hbm.entity.projectile.EntityCombineBallNT; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.GunConfiguration; -import com.hbm.items.ModItems; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class ItemGunOSIPR extends ItemGunBase { - - public ItemGunOSIPR(GunConfiguration config, GunConfiguration alt) { - super(config, alt); - } - - @Override - protected void altFire(ItemStack stack, World world, EntityPlayer player) { - - setCharge(stack, 1); - world.playSoundAtEntity(player, "hbm:weapon.osiprCharging", 1.0F, 1F); - } - - @Override - protected void updateServer(ItemStack stack, World world, EntityPlayer player, int slot, boolean isCurrentItem) { - super.updateServer(stack, world, player, slot, isCurrentItem); - - if(!isCurrentItem) { - setCharge(stack, 0); - return; - } - - int i = getCharge(stack); - - if(i >= 20) { - EntityCombineBallNT energyBall = new EntityCombineBallNT(world, BulletConfigSyncingUtil.SPECIAL_OSIPR_CHARGED, player); - world.spawnEntityInWorld(energyBall); - world.playSoundAtEntity(player, altConfig.firingSound, 1.0F, 1F); - setCharge(stack, 0); - setDelay(stack, altConfig.rateOfFire); - player.inventory.consumeInventoryItem(ModItems.gun_osipr_ammo2); - - } else if(i > 0) - setCharge(stack, i + 1); - } - - @Override - protected boolean tryShoot(ItemStack stack, World world, EntityPlayer player, boolean main) { - - return super.tryShoot(stack, world, player, main) && getCharge(stack) == 0; - } - - /// CMB charge state /// - public static void setCharge(ItemStack stack, int i) { - writeNBT(stack, "cmb_charge", i); - } - - public static int getCharge(ItemStack stack) { - return readNBT(stack, "cmb_charge"); - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemGunPip.java b/src/main/java/com/hbm/items/weapon/ItemGunPip.java deleted file mode 100644 index 5e0e636ca..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemGunPip.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.handler.GunConfiguration; -import com.hbm.render.anim.BusAnimation; -import com.hbm.render.anim.BusAnimationSequence; -import com.hbm.render.anim.HbmAnimations.AnimType; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; - -public class ItemGunPip extends ItemGunBase { - - public static long lastShot; - public static List smokeNodes = new ArrayList(); - - public ItemGunPip(GunConfiguration config) { - super(config); - } - - @Override - @SideOnly(Side.CLIENT) - protected void updateClient(ItemStack stack, World world, EntityPlayer entity, int slot, boolean isCurrentItem) { - super.updateClient(stack, world, entity, slot, isCurrentItem); - - boolean smoking = lastShot + 2000 > System.currentTimeMillis(); - - if(!smoking && !smokeNodes.isEmpty()) { - smokeNodes.clear(); - } - - if(smoking) { - Vec3 prev = Vec3.createVectorHelper(-entity.motionX, -entity.motionY, -entity.motionZ); - prev.rotateAroundY((float) (entity.rotationYaw * Math.PI / 180D)); - double accel = 15D; - double side = (entity.rotationYaw - entity.prevRotationYawHead) * 0.1D; - double waggle = 0.025D; - - for(double[] node : smokeNodes) { - node[0] += -prev.zCoord * accel + world.rand.nextGaussian() * waggle; - node[1] += prev.yCoord + 1.5D; - node[2] += prev.xCoord * accel + world.rand.nextGaussian() * waggle + side; - } - - double alpha = (System.currentTimeMillis() - lastShot) / 2000D; - alpha = (1 - alpha) * 0.5D; - - if(this.getIsReloading(stack)) alpha = 0; - - smokeNodes.add(new double[] {0, 0, 0, alpha}); - } - } - - @Override - @SideOnly(Side.CLIENT) - public BusAnimation getAnimation(ItemStack stack, AnimType type) { - - if(type == AnimType.EQUIP) { - return new BusAnimation() - .addBus("ROTATE", new BusAnimationSequence() - .addPos(-360, 0, 0, 350) - ); - } - - if(type == AnimType.CYCLE) { - lastShot = System.currentTimeMillis(); - int s = 1; - return new BusAnimation() - .addBus("RECOIL", new BusAnimationSequence() - .addPos(0, 0, 0, 50 * s) - .addPos(0, 0, -3, 50 * s) - .addPos(0, 0, 0, 250 * s) - ) - .addBus("HAMMER", new BusAnimationSequence() - .addPos(0, 0, 1, 50 * s) - .addPos(0, 0, 1, 300 * s) - .addPos(0, 0, 0, 200 * s) - ) - .addBus("DRUM", new BusAnimationSequence() - .addPos(0, 0, 1, 50 * s) - ); - } - - if(type == AnimType.RELOAD) { - int s = 1; - return new BusAnimation() - .addBus("RELAOD_TILT", new BusAnimationSequence() - .addPos(-15, 0, 0, 100 * s) - .addPos(65, 0, 0, 100 * s) //200 - .addPos(45, 0, 0, 50 * s) //250 - .addPos(0, 0, 0, 200 * s) //450 - .addPos(0, 0, 0, 1450 * s) //1900 - .addPos(-80, 0, 0, 100 * s) //2000 - .addPos(-80, 0, 0, 100 * s) //2100 - .addPos(0, 0, 0, 200 * s) //2300 - ) - .addBus("RELOAD_CYLINDER", new BusAnimationSequence() - .addPos(0, 0, 0, 200 * s) - .addPos(90, 0, 0, 100 * s) //300 - .addPos(90, 0, 0, 1700 * s) //2000 - .addPos(0, 0, 0, 70 * s) //2100 - ) - .addBus("RELOAD_LIFT", new BusAnimationSequence() - .addPos(0, 0, 0, 350 * s) - .addPos(-45, 0, 0, 250 * s) //600 - .addPos(-45, 0, 0, 350 * s) //950 - .addPos(-15, 0, 0, 200 * s) //1150 - .addPos(-15, 0, 0, 1050 * s) //2200 - .addPos(0, 0, 0, 100 * s) //2300 - ) - .addBus("RELOAD_JOLT", new BusAnimationSequence() - .addPos(0, 0, 0, 600 * s) - .addPos(2, 0, 0, 50 * s) //650 - .addPos(0, 0, 0, 100 * s) //750 - ) - .addBus("RELOAD_BULLETS", new BusAnimationSequence() - .addPos(0, 0, 0, 650 * s) - .addPos(10, 0, 0, 300 * s) //950 - .addPos(10, 0, 0, 200 * s) //1150 - .addPos(0, 0, 0, 700 * s) //1850 - ) - .addBus("RELOAD_BULLETS_CON", new BusAnimationSequence() - .addPos(1, 0, 0, 0 * s) - .addPos(1, 0, 0, 950 * s) - .addPos(0, 0, 0, 1 * s) - ); - } - - return null; - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemGunShotty.java b/src/main/java/com/hbm/items/weapon/ItemGunShotty.java deleted file mode 100644 index 39588922c..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemGunShotty.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.hbm.items.weapon; - -import com.hbm.handler.GunConfiguration; -import com.hbm.util.ShadyUtil; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class ItemGunShotty extends ItemGunBase { - - public ItemGunShotty(GunConfiguration config) { - super(config); - } - - protected void updateServer(ItemStack stack, World world, EntityPlayer player, int slot, boolean isCurrentItem) { - super.updateServer(stack, world, player, slot, isCurrentItem); - - if((player.getUniqueID().toString().equals(ShadyUtil.Dr_Nostalgia) || player.getDisplayName().equals("Tankish") || player.getDisplayName().equals("Tankish020")) && - this.getDelay(stack) < this.mainConfig.rateOfFire * 0.9) - this.setDelay(stack, 0); - } - -} diff --git a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java index fadc8ee17..ab07755b9 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java +++ b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java @@ -10,16 +10,19 @@ import com.hbm.entity.projectile.EntityBulletBeamBase; import com.hbm.interfaces.NotableComments; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.factory.ConfettiUtil; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; -import com.hbm.lib.ModDamageSource; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret; import com.hbm.particle.SpentCasing; import com.hbm.util.BobMathUtil; import com.hbm.util.EntityDamageUtil; import com.hbm.util.TrackerUtil; +import com.hbm.util.DamageResistanceHandler.DamageClass; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.util.DamageSource; import net.minecraft.util.EntityDamageSourceIndirect; import net.minecraft.util.MovingObjectPosition; @@ -42,16 +45,15 @@ public class BulletConfig implements Cloneable { public float wear = 1F; public int projectilesMin = 1; public int projectilesMax = 1; + public ProjectileType pType = ProjectileType.BULLET; public float damageMult = 1.0F; + public float armorThresholdNegation = 0.0F; public float armorPiercingPercent = 0.0F; + public float knockbackMult = 0.1F; public float headshotMult = 1.0F; - public String damageType = ModDamageSource.s_bullet; - public boolean dmgProj = true; - public boolean dmgFire = false; - public boolean dmgExplosion = false; - public boolean dmgBypass = false; + public DamageClass dmgClass = DamageClass.PHYSICAL; public float ricochetAngle = 5F; public int maxRicochetCount = 2; @@ -90,8 +92,12 @@ public class BulletConfig implements Cloneable { return this; } + public BulletConfig setBeam() { this.pType = ProjectileType.BEAM; return this; } + public BulletConfig setChunkloading() { this.pType = ProjectileType.BULLET_CHUNKLOADING; return this; } public BulletConfig setItem(Item ammo) { this.ammo = new ComparableStack(ammo); return this; } + public BulletConfig setItem(ItemStack ammo) { this.ammo = new ComparableStack(ammo); return this; } public BulletConfig setItem(EnumAmmo ammo) { this.ammo = new ComparableStack(ModItems.ammo_standard, 1, ammo.ordinal()); return this; } + public BulletConfig setItem(EnumAmmoSecret ammo) { this.ammo = new ComparableStack(ModItems.ammo_secret, 1, ammo.ordinal()); return this; } public BulletConfig setReloadCount(int ammoReloadCount) { this.ammoReloadCount = ammoReloadCount; return this; } public BulletConfig setVel(float velocity) { this.velocity = velocity; return this; } public BulletConfig setSpread(float spread) { this.spread = spread; return this; } @@ -99,10 +105,11 @@ public class BulletConfig implements Cloneable { public BulletConfig setProjectiles(int amount) { this.projectilesMin = this.projectilesMax = amount; return this; } public BulletConfig setProjectiles(int min, int max) { this.projectilesMin = min; this.projectilesMax = max; return this; } public BulletConfig setDamage(float damageMult) { this.damageMult = damageMult; return this; } + public BulletConfig setThresholdNegation(float armorThresholdNegation) { this.armorThresholdNegation = armorThresholdNegation; return this; } public BulletConfig setArmorPiercing(float armorPiercingPercent) { this.armorPiercingPercent = armorPiercingPercent; return this; } + public BulletConfig setKnockback(float knockbackMult) { this.knockbackMult = knockbackMult; return this; } public BulletConfig setHeadshot(float headshotMult) { this.headshotMult = headshotMult; return this; } - public BulletConfig setDamageType(String type) { this.damageType = type; return this; } - public BulletConfig setupDamageClass(boolean proj, boolean fire, boolean explosion, boolean bypass) { this.dmgProj = proj; this.dmgFire = fire; this.dmgExplosion = explosion; this.dmgBypass = bypass; return this; } + public BulletConfig setupDamageClass(DamageClass clazz) { this.dmgClass = clazz; return this; } public BulletConfig setRicochetAngle(float angle) { this.ricochetAngle = angle; return this; } public BulletConfig setRicochetCount(int count) { this.maxRicochetCount = count; return this; } public BulletConfig setDamageFalloutByPen(boolean falloff) { this.damageFalloffByPen = falloff; return this; } @@ -125,17 +132,28 @@ public class BulletConfig implements Cloneable { public BulletConfig setOnBeamImpact(BiConsumer lambda) { this.onImpactBeam = lambda; return this; } public BulletConfig setOnEntityHit(BiConsumer lambda) { this.onEntityHit = lambda; return this; } - public DamageSource getDamage(Entity projectile, EntityLivingBase shooter, boolean bypass) { + public static enum ProjectileType { + BULLET, + BULLET_CHUNKLOADING, + BEAM + } + + @SuppressWarnings("incomplete-switch") //shut up + public static DamageSource getDamage(Entity projectile, EntityLivingBase shooter, DamageClass dmgClass) { DamageSource dmg; - if(shooter != null) dmg = new EntityDamageSourceIndirect(damageType, projectile, shooter); - else dmg = new DamageSource(damageType); + if(shooter != null) dmg = new EntityDamageSourceIndirect(dmgClass.name(), projectile, shooter); + else dmg = new DamageSource(dmgClass.name()); - if(this.dmgProj) dmg.setProjectile(); - if(this.dmgFire) dmg.setFireDamage(); - if(this.dmgExplosion) dmg.setExplosion(); - if(this.dmgBypass || bypass) dmg.setDamageBypassesArmor(); + switch(dmgClass) { + case PHYSICAL: dmg.setProjectile(); break; + case FIRE: dmg.setFireDamage(); break; + case EXPLOSIVE: dmg.setExplosion(); break; + case ELECTRIC: break; + case LASER: break; + case SUBATOMIC: break; + } return dmg; } @@ -184,22 +202,17 @@ public class BulletConfig implements Cloneable { if(entity == bullet.getThrower() && bullet.ticksExisted < bullet.selfDamageDelay()) return; if(entity instanceof EntityLivingBase && ((EntityLivingBase) entity).getHealth() <= 0) return; - DamageSource damageCalc = bullet.config.getDamage(bullet, bullet.getThrower(), false); + DamageSource source = bullet.config.getDamage(bullet, bullet.getThrower(), bullet.config.dmgClass); if(!(entity instanceof EntityLivingBase)) { - EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, damageCalc, bullet.damage); + EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, source, bullet.damage); return; } EntityLivingBase living = (EntityLivingBase) entity; float prevHealth = living.getHealth(); - if(bullet.config.armorPiercingPercent == 0) { - EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, damageCalc, bullet.damage); - } else { - DamageSource damagePiercing = bullet.config.getDamage(bullet, bullet.getThrower(), true); - EntityDamageUtil.attackArmorPiercing(living, damageCalc, damagePiercing, bullet.damage, bullet.config.armorPiercingPercent); - } + EntityDamageUtil.attackEntityFromNT(living, source, bullet.damage, true, true, bullet.config.knockbackMult, bullet.config.armorThresholdNegation, bullet.config.armorPiercingPercent); float newHealth = living.getHealth(); @@ -208,6 +221,8 @@ public class BulletConfig implements Cloneable { bullet.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); bullet.setDead(); } + + if(!living.isEntityAlive()) ConfettiUtil.decideConfetti(living, source); } }; @@ -217,22 +232,17 @@ public class BulletConfig implements Cloneable { Entity entity = mop.entityHit; if(entity instanceof EntityLivingBase && ((EntityLivingBase) entity).getHealth() <= 0) return; - - DamageSource damageCalc = bullet.config.getDamage(bullet, bullet.getThrower(), false); + + DamageSource source = bullet.config.getDamage(bullet, bullet.getThrower(), bullet.config.dmgClass); if(!(entity instanceof EntityLivingBase)) { - EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, damageCalc, bullet.damage); + EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, source, bullet.damage); return; } EntityLivingBase living = (EntityLivingBase) entity; - - if(bullet.config.armorPiercingPercent == 0) { - EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, damageCalc, bullet.damage); - } else { - DamageSource damagePiercing = bullet.config.getDamage(bullet, bullet.getThrower(), true); - EntityDamageUtil.attackArmorPiercing(living, damageCalc, damagePiercing, bullet.damage, bullet.config.armorPiercingPercent); - } + EntityDamageUtil.attackEntityFromNT(living, source, bullet.damage, true, true, bullet.config.knockbackMult, bullet.config.armorThresholdNegation, bullet.config.armorPiercingPercent); + if(!living.isEntityAlive()) ConfettiUtil.decideConfetti(living, source); } }; @@ -243,21 +253,15 @@ public class BulletConfig implements Cloneable { if(entity instanceof EntityLivingBase && ((EntityLivingBase) entity).getHealth() <= 0) return; - DamageSource damageCalc = beam.config.getDamage(beam, beam.thrower, false); + DamageSource source = beam.config.getDamage(beam, beam.thrower, beam.config.dmgClass); if(!(entity instanceof EntityLivingBase)) { - EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, damageCalc, beam.damage); + EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, source, beam.damage); return; } EntityLivingBase living = (EntityLivingBase) entity; - - if(beam.config.armorPiercingPercent == 0) { - EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, damageCalc, beam.damage); - } else { - DamageSource damagePiercing = beam.config.getDamage(beam, beam.thrower, true); - EntityDamageUtil.attackArmorPiercing(living, damageCalc, damagePiercing, beam.damage, beam.config.armorPiercingPercent); - } + EntityDamageUtil.attackEntityFromNT(living, source, beam.damage, true, false, beam.config.knockbackMult, beam.config.armorThresholdNegation, beam.config.armorPiercingPercent); } }; diff --git a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java index a926de13b..7b1fdc58c 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java +++ b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java @@ -66,6 +66,7 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipRecei public static final String KEY_ANIMTIMER = "animtimer_"; public static final String KEY_LOCKONTARGET = "lockontarget"; public static final String KEY_LOCKEDON = "lockedon"; + public static final String KEY_CANCELRELOAD = "cancel"; public static ConcurrentHashMap loopedSounds = new ConcurrentHashMap(); @@ -131,7 +132,7 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipRecei case B_SIDE: list.add(EnumChatFormatting.GOLD + "B-Side"); break; case LEGENDARY: list.add(EnumChatFormatting.RED + "Legendary Weapon"); break; case SPECIAL: list.add(EnumChatFormatting.AQUA + "Special Weapon"); break; - case SECRET: list.add(EnumChatFormatting.DARK_RED + "SECRET"); break; + case SECRET: list.add((BobMathUtil.getBlink() ? EnumChatFormatting.DARK_RED : EnumChatFormatting.RED) + "SECRET"); break; case DEBUG: list.add((BobMathUtil.getBlink() ? EnumChatFormatting.YELLOW : EnumChatFormatting.GOLD) + "DEBUG"); break; } } @@ -285,6 +286,9 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipRecei public static void setTertiary(ItemStack stack, int index, boolean value) { setValueBool(stack, KEY_TERTIARY + index, value); } public static boolean getReloadKey(ItemStack stack, int index) { return getValueBool(stack, KEY_RELOAD + index); } public static void setReloadKey(ItemStack stack, int index, boolean value) { setValueBool(stack, KEY_RELOAD + index, value); } + // RELOAD CANCEL // + public static boolean getReloadCancel(ItemStack stack) { return getValueBool(stack, KEY_CANCELRELOAD); } + public static void setReloadCancel(ItemStack stack, boolean value) { setValueBool(stack, KEY_CANCELRELOAD, value); } /// UTIL /// diff --git a/src/main/java/com/hbm/items/weapon/sedna/Receiver.java b/src/main/java/com/hbm/items/weapon/sedna/Receiver.java index 65428c895..ee46d89ea 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/Receiver.java +++ b/src/main/java/com/hbm/items/weapon/sedna/Receiver.java @@ -138,6 +138,5 @@ public class Receiver { } public Receiver setupStandardFire() { return this.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE) .fire(Lego.LAMBDA_STANDARD_FIRE); } - public Receiver setupBeamFire() { return this.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE) .fire(Lego.LAMBDA_BEAM_FIRE); } public Receiver setupLockonFire() { return this.canFire(Lego.LAMBDA_LOCKON_CAN_FIRE) .fire(Lego.LAMBDA_STANDARD_FIRE); } } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java b/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java new file mode 100644 index 000000000..78f42363a --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java @@ -0,0 +1,46 @@ +package com.hbm.items.weapon.sedna.factory; + +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.particle.helper.AshesCreator; +import com.hbm.particle.helper.SkeletonCreator; +import com.hbm.util.DamageResistanceHandler.DamageClass; + +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MathHelper; + +public class ConfettiUtil { + + public static void decideConfetti(EntityLivingBase entity, DamageSource source) { + if(entity.isEntityAlive()) return; + if(source.damageType.equals(DamageClass.LASER.name())) pulverize(entity); + if(source.damageType.equals(DamageClass.ELECTRIC.name())) pulverize(entity); + if(source.isExplosion()) gib(entity); + if(source.isFireDamage()) cremate(entity); + } + + public static void pulverize(EntityLivingBase entity) { + int amount = MathHelper.clamp_int((int) (entity.width * entity.height * entity.width * 25), 5, 50); + AshesCreator.composeEffect(entity.worldObj, entity, amount, 0.125F); + SkeletonCreator.composeEffect(entity.worldObj, entity, 1F); + entity.worldObj.playSoundEffect(entity.posX, entity.posY, entity.posZ, "hbm:weapon.fire.disintegration", 2.0F, 0.9F + entity.getRNG().nextFloat() * 0.2F); + } + + public static void cremate(EntityLivingBase entity) { + int amount = MathHelper.clamp_int((int) (entity.width * entity.height * entity.width * 25), 5, 50); + AshesCreator.composeEffect(entity.worldObj, entity, amount, 0.125F); + SkeletonCreator.composeEffect(entity.worldObj, entity, 0.25F); + entity.worldObj.playSoundEffect(entity.posX, entity.posY, entity.posZ, "hbm:weapon.fire.disintegration", 2.0F, 0.9F + entity.getRNG().nextFloat() * 0.2F); + } + + public static void gib(EntityLivingBase entity) { + NBTTagCompound vdat = new NBTTagCompound(); + vdat.setString("type", "giblets"); + vdat.setInteger("ent", entity.getEntityId()); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(vdat, entity.posX, entity.posY + entity.height * 0.5, entity.posZ), new TargetPoint(entity.dimension, entity.posX, entity.posY + entity.height * 0.5, entity.posZ, 150)); + entity.worldObj.playSoundEffect(entity.posX, entity.posY, entity.posZ, "mob.zombie.woodbreak", 2.0F, 0.95F + entity.getRNG().nextFloat() * 0.2F); + } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java index 7f9446a36..3b5c9b6b2 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java @@ -28,6 +28,7 @@ public class GunFactory { /// AMMO ITEMS /// ModItems.ammo_debug = new Item().setUnlocalizedName("ammo_debug").setTextureName(RefStrings.MODID + ":ammo_45"); ModItems.ammo_standard = new ItemEnumMulti(EnumAmmo.class, true, true).setUnlocalizedName("ammo_standard").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_standard"); + ModItems.ammo_secret = new ItemEnumMulti(EnumAmmoSecret.class, true, true).setUnlocalizedName("ammo_secret").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_secret"); /// BULLLET CFGS /// ammo_debug = new BulletConfig().setItem(ModItems.ammo_debug).setSpread(0.01F).setRicochetAngle(45).setCasing(CASING44.clone().register("DEBUG0")); @@ -41,7 +42,7 @@ public class GunFactory { .mag(new MagazineFullReload(0, 12).addConfigs(ammo_debug, ammo_debug_buckshot)) .offset(0.75, -0.0625, -0.3125D) .canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_STANDARD_FIRE)) - .pp(Lego.LAMBDA_STANDARD_CLICK_PRIMARY) .pr(Lego.LAMBDA_STANDARD_RELOAD) .pt(Lego.LAMBDA_TOGGLE_AIM) + .pp(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).pr(Lego.LAMBDA_STANDARD_RELOAD).pt(Lego.LAMBDA_TOGGLE_AIM) .decider(GunStateDecider.LAMBDA_STANDARD_DECIDER) .anim(Lego.LAMBDA_DEBUG_ANIMS) ).setUnlocalizedName("gun_debug"); @@ -62,6 +63,8 @@ public class GunFactory { XFactoryAccelerator.init(); XFactoryCatapult.init(); XFactory75Bolt.init(); + XFactoryFolly.init(); + XFactoryTurret.init(); /// PROXY BULLSHIT /// MainRegistry.proxy.registerGunCfg(); @@ -77,15 +80,19 @@ public class GunFactory { R762_SP, R762_FMJ, R762_JHP, R762_AP, R762_DU, BMG50_SP, BMG50_FMJ, BMG50_JHP, BMG50_AP, BMG50_DU, B75, B75_INC, B75_EXP, - G12_BP, G12_BP_MAGNUM, G12_BP_SLUG, G12, G12_SLUG, G12_FLECHETTE, G12_MAGNUM, G12_EXPLOSIVE, G12_PHOSPHORUS, G12_ANTHRAX, + G12_BP, G12_BP_MAGNUM, G12_BP_SLUG, G12, G12_SLUG, G12_FLECHETTE, G12_MAGNUM, G12_EXPLOSIVE, G12_PHOSPHORUS, //G12_ANTHRAX, G26_FLARE, G26_FLARE_SUPPLY, G26_FLARE_WEAPON, G40_HE, G40_HEAT, G40_DEMO, G40_INC, G40_PHOSPHORUS, ROCKET_HE, ROCKET_HEAT, ROCKET_DEMO, ROCKET_INC, ROCKET_PHOSPHORUS, FLAME_DIESEL, FLAME_GAS, FLAME_NAPALM, FLAME_BALEFIRE, - CAPACITOR, CAPACITOR_OVERCHARGE, CAPACITOR_BLACKLIGHTNING, + CAPACITOR, CAPACITOR_OVERCHARGE, CAPACITOR_IR, TAU_URANIUM, COIL_TUNGSTEN, COIL_FERROURANIUM, - NUKE_STANDARD, NUKE_DEMO, NUKE_HIGH, NUKE_TOTS, NUKE_HIVE, + NUKE_STANDARD, NUKE_DEMO, NUKE_HIGH, NUKE_TOTS, NUKE_HIVE + } + + public static enum EnumAmmoSecret { + FOLLY_SM, FOLLY_NUKE, M44_EQUESTRIAN, G12_EQUESTRIAN, BMG50_EQUESTRIAN } } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java index 09f753aa5..a6d1fd2fd 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java @@ -15,6 +15,8 @@ import static com.hbm.items.weapon.sedna.factory.XFactoryAccelerator.*; import static com.hbm.items.weapon.sedna.factory.XFactoryBlackPowder.*; import static com.hbm.items.weapon.sedna.factory.XFactoryCatapult.*; import static com.hbm.items.weapon.sedna.factory.XFactoryEnergy.*; +import static com.hbm.items.weapon.sedna.factory.XFactoryFolly.*; +import static com.hbm.items.weapon.sedna.factory.XFactoryTurret.*; import static com.hbm.items.weapon.sedna.factory.XFactoryRocket.*; import java.util.function.BiConsumer; @@ -35,7 +37,8 @@ public class GunFactoryClient { //GUNS MinecraftForgeClient.registerItemRenderer(ModItems.gun_debug, new ItemRenderDebug()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_pepperbox, new ItemRenderPepperbox()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_light_revolver, new ItemRenderAtlas()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_light_revolver, new ItemRenderAtlas(ResourceManager.bio_revolver_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_light_revolver_atlas, new ItemRenderAtlas(ResourceManager.bio_revolver_atlas_tex)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_light_revolver_dani, new ItemRenderDANI()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_henry, new ItemRenderHenry()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_greasegun, new ItemRenderGreasegun()); @@ -49,9 +52,12 @@ public class GunFactoryClient { MinecraftForgeClient.registerItemRenderer(ModItems.gun_am180, new ItemRenderAm180()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_liberator, new ItemRenderLiberator()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_congolake, new ItemRenderCongoLake()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_flamer, new ItemRenderFlamer()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_flamer, new ItemRenderFlamer(ResourceManager.flamethrower_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_flamer_topaz, new ItemRenderFlamer(ResourceManager.flamethrower_topaz_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_flamer_daybreaker, new ItemRenderFlamer(ResourceManager.flamethrower_daybreaker_tex)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_lag, new ItemRenderLAG()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi, new ItemRenderUzi()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi_akimbo, new ItemRenderUziAkimbo()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_spas12, new ItemRenderSPAS12()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_panzerschreck, new ItemRenderPanzerschreck()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_g3, new ItemRenderG3()); @@ -61,7 +67,8 @@ public class GunFactoryClient { MinecraftForgeClient.registerItemRenderer(ModItems.gun_autoshotgun, new ItemRenderShredder(ResourceManager.shredder_tex)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_autoshotgun_sexy, new ItemRenderShredder(ResourceManager.sexy_tex)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_quadro, new ItemRenderQuadro()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_minigun, new ItemRenderMinigun()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_minigun, new ItemRenderMinigun(ResourceManager.minigun_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_minigun_lacunae, new ItemRenderMinigun(ResourceManager.minigun_lacunae_tex)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_missile_launcher, new ItemRenderMissileLauncher()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_tesla_cannon, new ItemRenderTeslaCannon()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_stg77, new ItemRenderSTG77()); @@ -71,6 +78,7 @@ public class GunFactoryClient { MinecraftForgeClient.registerItemRenderer(ModItems.gun_coilgun, new ItemRenderCoilgun()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_hangman, new ItemRenderHangman()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolter, new ItemRenderBolter()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_folly, new ItemRenderFolly()); //PROJECTILES ammo_debug.setRenderer(LegoClient.RENDER_STANDARD_BULLET); ammo_debug_buckshot.setRenderer(LegoClient.RENDER_STANDARD_BULLET); @@ -135,14 +143,14 @@ public class GunFactoryClient { g12_magnum.setRenderer(LegoClient.RENDER_STANDARD_BULLET); g12_explosive.setRenderer(LegoClient.RENDER_EXPRESS_BULLET); g12_phosphorus.setRenderer(LegoClient.RENDER_AP_BULLET); - g12_anthrax.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + //g12_anthrax.setRenderer(LegoClient.RENDER_STANDARD_BULLET); g12_equestrian.setRenderer(LegoClient.RENDER_LEGENDARY_BULLET); g26_flare.setRenderer(LegoClient.RENDER_FLARE); g26_flare_supply.setRenderer(LegoClient.RENDER_FLARE_SUPPLY); g26_flare_weapon.setRenderer(LegoClient.RENDER_FLARE_WEAPON); - setRendererBulk(LegoClient.RENDER_GRENADE, g40_he, g40_heat, g40_demo, g40_inc); + setRendererBulk(LegoClient.RENDER_GRENADE, g40_he, g40_heat, g40_demo, g40_inc, g40_phosphorus); setRendererBulk(LegoClient.RENDER_RPZB, rocket_rpzb); setRendererBulk(LegoClient.RENDER_QD, rocket_qd); @@ -155,14 +163,21 @@ public class GunFactoryClient { setRendererBulkBeam(LegoClient.RENDER_LIGHTNING, energy_tesla, energy_tesla_overcharge); setRendererBulkBeam(LegoClient.RENDER_TAU, tau_uranium); setRendererBulkBeam(LegoClient.RENDER_TAU_CHARGE, tau_uranium_charge); - setRendererBulkBeam(LegoClient.RENDER_LASER, energy_las, energy_las_overcharge); + setRendererBulkBeam(LegoClient.RENDER_LASER_RED, energy_las, energy_las_overcharge, energy_las_ir); + setRendererBulkBeam(LegoClient.RENDER_LASER_PURPLE, energy_lacunae, energy_lacunae_overcharge, energy_lacunae_ir); setRendererBulk(LegoClient.RENDER_AP_BULLET, coil_tungsten, coil_ferrouranium); + folly_sm.setRendererBeam(LegoClient.RENDER_FOLLY); + folly_nuke.setRenderer(LegoClient.RENDER_BIG_NUKE); + + setRendererBulk(LegoClient.RENDER_GRENADE, shell_normal, shell_explosive, shell_ap, shell_du, shell_w9); //TODO: change the sabots + //HUDS ((ItemGunBaseNT) ModItems.gun_debug) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_pepperbox) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_light_revolver) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_light_revolver_atlas) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_henry) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_greasegun) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_maresleg) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); @@ -175,6 +190,8 @@ public class GunFactoryClient { ((ItemGunBaseNT) ModItems.gun_liberator) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_congolake) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_flamer) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO_NOCOUNTER); + ((ItemGunBaseNT) ModItems.gun_flamer_topaz) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO_NOCOUNTER); + ((ItemGunBaseNT) ModItems.gun_flamer_daybreaker) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO_NOCOUNTER); ((ItemGunBaseNT) ModItems.gun_uzi) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_spas12) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_panzerschreck) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); @@ -187,6 +204,7 @@ public class GunFactoryClient { ((ItemGunBaseNT) ModItems.gun_quadro) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_lag) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_minigun) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_minigun_lacunae) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_missile_launcher) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_tesla_cannon) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_stg77) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); @@ -196,11 +214,14 @@ public class GunFactoryClient { ((ItemGunBaseNT) ModItems.gun_coilgun) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_hangman) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_bolter) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_folly) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_light_revolver_dani) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY_MIRROR, LegoClient.HUD_COMPONENT_AMMO_MIRROR); ((ItemGunBaseNT) ModItems.gun_light_revolver_dani) .getConfig(null, 1).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_maresleg_akimbo) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY_MIRROR, LegoClient.HUD_COMPONENT_AMMO_MIRROR); ((ItemGunBaseNT) ModItems.gun_maresleg_akimbo) .getConfig(null, 1).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_uzi_akimbo) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY_MIRROR, LegoClient.HUD_COMPONENT_AMMO_MIRROR); + ((ItemGunBaseNT) ModItems.gun_uzi_akimbo) .getConfig(null, 1).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); } public static void setRendererBulk(BiConsumer renderer, BulletConfig... configs) { for(BulletConfig config : configs) config.setRenderer(renderer); } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunStateDecider.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunStateDecider.java index d0769f4a9..da9267e04 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunStateDecider.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunStateDecider.java @@ -63,9 +63,10 @@ public class GunStateDecider { IMagazine mag = rec.getMagazine(stack); mag.reloadAction(stack, ctx.inventory); + boolean cancel = ItemGunBaseNT.getReloadCancel(stack); //if after reloading the gun can still reload, assume a tube mag and resume reloading - if(mag.canReload(stack, ctx.inventory)) { + if(!cancel && mag.canReload(stack, ctx.inventory)) { ItemGunBaseNT.setState(stack, gunIndex, GunState.RELOADING); ItemGunBaseNT.setTimer(stack, gunIndex, rec.getReloadCycleDuration(stack)); ItemGunBaseNT.playAnimation(player, stack, AnimType.RELOAD_CYCLE, gunIndex); @@ -82,6 +83,8 @@ public class GunStateDecider { ItemGunBaseNT.setTimer(stack, gunIndex, duration); ItemGunBaseNT.playAnimation(player, stack, AnimType.RELOAD_END, gunIndex); } + + ItemGunBaseNT.setReloadCancel(stack, false); } mag.setAmountAfterReload(stack, mag.getAmount(stack, ctx.inventory)); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java index 5cabffb60..4760ceebc 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java @@ -6,6 +6,7 @@ import java.util.function.BiConsumer; import java.util.function.BiFunction; import com.hbm.entity.projectile.EntityBulletBaseMK4; +import com.hbm.entity.projectile.EntityBulletBaseMK4CL; import com.hbm.entity.projectile.EntityBulletBeamBase; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.standard.EntityProcessorCrossSmooth; @@ -13,6 +14,7 @@ import com.hbm.explosion.vanillant.standard.ExplosionEffectWeapon; import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; import com.hbm.interfaces.NotableComments; import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.BulletConfig.ProjectileType; import com.hbm.items.weapon.sedna.GunConfig; import com.hbm.items.weapon.sedna.ItemGunBaseNT; import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState; @@ -20,7 +22,7 @@ import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; import com.hbm.items.weapon.sedna.ItemGunBaseNT.SmokeNode; import com.hbm.items.weapon.sedna.Receiver; import com.hbm.items.weapon.sedna.mags.IMagazine; -import com.hbm.particle.helper.BlackPowderHelper; +import com.hbm.particle.helper.BlackPowderCreator; import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationSequence; import com.hbm.render.anim.HbmAnimations.AnimType; @@ -105,6 +107,10 @@ public class Lego { } } } + + if(state == GunState.RELOADING) { + ItemGunBaseNT.setReloadCancel(stack, true); + } } /** If IDLE, switch mode between 0 and 1. */ @@ -194,9 +200,6 @@ public class Lego { doStandardFire(stack, ctx, AnimType.CYCLE, true); ItemGunBaseNT.setIsLockedOn(stack, false); }; - public static BiConsumer LAMBDA_BEAM_FIRE = (stack, ctx) -> { - doBeamFire(stack, ctx, AnimType.CYCLE, true); - }; public static void doStandardFire(ItemStack stack, LambdaContext ctx, AnimType anim, boolean calcWear) { EntityLivingBase entity = ctx.entity; @@ -224,45 +227,21 @@ public class Lego { for(int i = 0; i < projectiles; i++) { float damage = calcDamage(ctx, stack, primary, calcWear, index); float spread = calcSpread(ctx, stack, primary, calcWear, index, aim); - EntityBulletBaseMK4 mk4 = new EntityBulletBaseMK4(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset); - if(ItemGunBaseNT.getIsLockedOn(stack)) mk4.lockonTarget = entity.worldObj.getEntityByID(ItemGunBaseNT.getLockonTarget(stack)); - if(i == 0 && config.blackPowder) BlackPowderHelper.composeEffect(entity.worldObj, mk4.posX, mk4.posY, mk4.posZ, mk4.motionX, mk4.motionY, mk4.motionZ, 10, 0.25F, 0.5F, 10, 0.25F); - entity.worldObj.spawnEntityInWorld(mk4); - } - - mag.useUpAmmo(stack, ctx.inventory, 1); - if(calcWear) ItemGunBaseNT.setWear(stack, index, Math.min(ItemGunBaseNT.getWear(stack, index) + config.wear, ctx.config.getDurability(stack))); - } - - //shittily copy pasted because god damn this sucks ass why do projectiles need this much fucking setup jesus christ have mercy - public static void doBeamFire(ItemStack stack, LambdaContext ctx, AnimType anim, boolean calcWear) { - EntityLivingBase entity = ctx.entity; - EntityPlayer player = ctx.getPlayer(); - int index = ctx.configIndex; - if(anim != null) ItemGunBaseNT.playAnimation(player, stack, anim, ctx.configIndex); - - float aim = ItemGunBaseNT.getIsAiming(stack) ? 0.25F : 1F; - Receiver primary = ctx.config.getReceivers(stack)[0]; - IMagazine mag = primary.getMagazine(stack); - BulletConfig config = (BulletConfig) mag.getType(stack, ctx.inventory); - - Vec3 offset = primary.getProjectileOffset(stack); - double forwardOffset = offset.xCoord; - double heightOffset = offset.yCoord; - double sideOffset = ItemGunBaseNT.getIsAiming(stack) ? 0 : offset.zCoord; - - /*forwardOffset = 0.75; - heightOffset = -0.0625 * 1.5; - sideOffset = -0.1875D;*/ - - int projectiles = config.projectilesMin; - if(config.projectilesMax > config.projectilesMin) projectiles += entity.getRNG().nextInt(config.projectilesMax - config.projectilesMin + 1); - - for(int i = 0; i < projectiles; i++) { - float damage = calcDamage(ctx, stack, primary, calcWear, index); - float spread = calcSpread(ctx, stack, primary, calcWear, index, aim); - EntityBulletBeamBase mk4 = new EntityBulletBeamBase(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset); - entity.worldObj.spawnEntityInWorld(mk4); + + if(config.pType == ProjectileType.BULLET) { + EntityBulletBaseMK4 mk4 = new EntityBulletBaseMK4(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset); + if(ItemGunBaseNT.getIsLockedOn(stack)) mk4.lockonTarget = entity.worldObj.getEntityByID(ItemGunBaseNT.getLockonTarget(stack)); + if(i == 0 && config.blackPowder) BlackPowderCreator.composeEffect(entity.worldObj, mk4.posX, mk4.posY, mk4.posZ, mk4.motionX, mk4.motionY, mk4.motionZ, 10, 0.25F, 0.5F, 10, 0.25F); + entity.worldObj.spawnEntityInWorld(mk4); + } else if(config.pType == ProjectileType.BULLET_CHUNKLOADING) { + EntityBulletBaseMK4CL mk4 = new EntityBulletBaseMK4CL(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset); + if(ItemGunBaseNT.getIsLockedOn(stack)) mk4.lockonTarget = entity.worldObj.getEntityByID(ItemGunBaseNT.getLockonTarget(stack)); + if(i == 0 && config.blackPowder) BlackPowderCreator.composeEffect(entity.worldObj, mk4.posX, mk4.posY, mk4.posZ, mk4.motionX, mk4.motionY, mk4.motionZ, 10, 0.25F, 0.5F, 10, 0.25F); + entity.worldObj.spawnEntityInWorld(mk4); + } else if(config.pType == ProjectileType.BEAM) { + EntityBulletBeamBase mk4 = new EntityBulletBeamBase(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset); + entity.worldObj.spawnEntityInWorld(mk4); + } } mag.useUpAmmo(stack, ctx.inventory, 1); @@ -300,7 +279,7 @@ public class Lego { public static void standardExplode(EntityBulletBaseMK4 bullet, MovingObjectPosition mop, float range) { standardExplode(bullet, mop, range, 1F); } public static void standardExplode(EntityBulletBaseMK4 bullet, MovingObjectPosition mop, float range, float damageMod) { ExplosionVNT vnt = new ExplosionVNT(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, range); - vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, bullet.damage * damageMod)); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, bullet.damage * damageMod).setupPiercing(bullet.config.armorThresholdNegation, bullet.config.armorPiercingPercent)); vnt.setPlayerProcessor(new PlayerProcessorStandard()); vnt.setSFX(new ExplosionEffectWeapon(10, 2.5F, 1F)); vnt.explode(); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java b/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java index 72a6e83c3..a0a2c8bbb 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java @@ -19,6 +19,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.ActiveRenderInfo; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.Tessellator; +import net.minecraft.entity.Entity; import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; import net.minecraft.util.Vec3; @@ -121,11 +122,18 @@ public class LegoClient { public static BiConsumer RENDER_FLARE_WEAPON = (bullet, interp) -> { renderFlare(bullet, interp, 0.5F, 1F, 0.5F); }; private static final ResourceLocation flare = new ResourceLocation(RefStrings.MODID + ":textures/particle/flare.png"); - public static void renderFlare(EntityBulletBaseMK4 bullet, float interp, float r, float g, float b) { + public static void renderFlare(Entity bullet, float interp, float r, float g, float b) { if(bullet.ticksExisted < 2) return; - RenderArcFurnace.fullbright(true); + + double scale = Math.min(5, (bullet.ticksExisted + interp - 2) * 0.5) * (0.8 + bullet.worldObj.rand.nextDouble() * 0.4); + renderFlareSprite(bullet, interp, r, g, b, scale, 0.5F, 0.75F); + + RenderArcFurnace.fullbright(false); + } + public static void renderFlareSprite(Entity bullet, float interp, float r, float g, float b, double scale, float outerAlpha, float innerAlpha) { + GL11.glPushMatrix(); GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); @@ -148,9 +156,8 @@ public class LegoClient { double posX = 0; double posY = 0; double posZ = 0; - double scale = Math.min(5, (bullet.ticksExisted + interp - 2) * 0.5) * (0.8 + bullet.worldObj.rand.nextDouble() * 0.4); - tess.setColorRGBA_F(r, g, b, 0.5F); + tess.setColorRGBA_F(r, g, b, outerAlpha); tess.addVertexWithUV((double) (posX - f1 * scale - f3 * scale), (double) (posY - f5 * scale), (double) (posZ - f2 * scale - f4 * scale), 1, 1); tess.addVertexWithUV((double) (posX - f1 * scale + f3 * scale), (double) (posY + f5 * scale), (double) (posZ - f2 * scale + f4 * scale), 1, 0); tess.addVertexWithUV((double) (posX + f1 * scale + f3 * scale), (double) (posY + f5 * scale), (double) (posZ + f2 * scale + f4 * scale), 0, 0); @@ -158,7 +165,7 @@ public class LegoClient { scale *= 0.5D; - tess.setColorRGBA_F(1F, 1F, 1F, 0.75F); + tess.setColorRGBA_F(1F, 1F, 1F, innerAlpha); tess.addVertexWithUV((double) (posX - f1 * scale - f3 * scale), (double) (posY - f5 * scale), (double) (posZ - f2 * scale - f4 * scale), 1, 1); tess.addVertexWithUV((double) (posX - f1 * scale + f3 * scale), (double) (posY + f5 * scale), (double) (posZ - f2 * scale + f4 * scale), 1, 0); tess.addVertexWithUV((double) (posX + f1 * scale + f3 * scale), (double) (posY + f5 * scale), (double) (posZ + f2 * scale + f4 * scale), 0, 0); @@ -172,7 +179,6 @@ public class LegoClient { GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); GL11.glDisable(GL11.GL_BLEND); GL11.glPopMatrix(); - RenderArcFurnace.fullbright(false); } public static BiConsumer RENDER_GRENADE = (bullet, interp) -> { @@ -184,6 +190,15 @@ public class LegoClient { GL11.glShadeModel(GL11.GL_FLAT); }; + public static BiConsumer RENDER_BIG_NUKE = (bullet, interp) -> { + GL11.glScalef(0.5F, 0.5F, 0.5F); + GL11.glRotated(90, 0, 0, 1); + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.rocket_mirv_tex); + ResourceManager.projectiles.renderPart("MissileMIRV"); + GL11.glShadeModel(GL11.GL_FLAT); + }; + public static BiConsumer RENDER_RPZB = (bullet, interp) -> { GL11.glPushMatrix(); @@ -304,7 +319,15 @@ public class LegoClient { RenderArcFurnace.fullbright(false); }; - public static BiConsumer RENDER_LASER = (bullet, interp) -> { + public static BiConsumer RENDER_LASER_RED = (bullet, interp) -> { + renderStandardLaser(bullet, interp, 0x80, 0x15, 0x15); + }; + + public static BiConsumer RENDER_LASER_PURPLE = (bullet, interp) -> { + renderStandardLaser(bullet, interp, 0x60, 0x15, 0x80); + }; + + public static void renderStandardLaser(EntityBulletBeamBase bullet, float interp, int r, int g, int b) { RenderArcFurnace.fullbright(true); GL11.glPushMatrix(); @@ -313,9 +336,34 @@ public class LegoClient { Vec3 delta = Vec3.createVectorHelper(0, bullet.beamLength, 0); double age = MathHelper.clamp_double(1D - ((double) bullet.ticksExisted - 2 + interp) / (double) bullet.getBulletConfig().expires, 0, 1); GL11.glScaled(age / 2 + 0.5, 1, age / 2 + 0.5); - int colorInner = ((int)(0x80 * age) << 16) | ((int)(0x15 * age) << 8) | (int) (0x15 * age); + int colorInner = ((int)(r * age) << 16) | ((int)(g * age) << 8) | (int) (b * age); BeamPronter.prontBeam(delta, EnumWaveType.RANDOM, EnumBeamType.SOLID, colorInner, colorInner, bullet.ticksExisted / 3, (int)(bullet.beamLength / 2 + 1), 0F, 8, 0.0625F); GL11.glPopMatrix(); + RenderArcFurnace.fullbright(false); + } + + public static BiConsumer RENDER_FOLLY = (bullet, interp) -> { + + double age = MathHelper.clamp_double(1D - ((double) bullet.ticksExisted - 2 + interp) / (double) bullet.getBulletConfig().expires, 0, 1); + RenderArcFurnace.fullbright(true); + + GL11.glPushMatrix(); + renderFlareSprite(bullet, interp, 1F, 1F, 1F, (1 - age) * 7.5 + 1.5, 0.5F * (float) age, 0.75F * (float) age); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + GL11.glAlphaFunc(GL11.GL_GREATER, 0); + GL11.glRotatef(180 - bullet.rotationYaw, 0, 1F, 0); + GL11.glRotatef(-bullet.rotationPitch - 90, 1F, 0, 0); + Vec3 delta = Vec3.createVectorHelper(0, bullet.beamLength, 0); + GL11.glScaled((1 - age) * 25 + 2.5, 1, (1 - age) * 25 + 2.5); + int colorInner = ((int)(0x20 * age) << 16) | ((int)(0x20 * age) << 8) | (int) (0x20 * age); + BeamPronter.prontBeam(delta, EnumWaveType.RANDOM, EnumBeamType.SOLID, colorInner, colorInner, bullet.ticksExisted / 3, (int)(bullet.beamLength / 2 + 1), 0F, 8, 0.0625F); + GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); + GL11.glDisable(GL11.GL_BLEND); + GL11.glPopMatrix(); + RenderArcFurnace.fullbright(false); }; diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java index e029e28b5..8349ae7a4 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java @@ -573,12 +573,49 @@ public class Orchestras { } }; + public static BiConsumer ORCHESTRA_FLAMER_DAYBREAKER = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + if(type == AnimType.RELOAD) { + if(timer == 15) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.openLatch", 1F, 1F); + if(timer == 35) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.impact", 0.5F, 1F); + if(timer == 60) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 0.75F); + if(timer == 70) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.insertCanister", 1F, 1F); + if(timer == 85) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pressureValve", 1F, 1F); + } + }; + public static BiConsumer ORCHESTRA_LAG = (stack, ctx) -> { EntityLivingBase entity = ctx.entity; if(entity.worldObj.isRemote) return; AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); boolean aiming = ItemGunBaseNT.getIsAiming(stack); + + if(type == AnimType.CYCLE) { + if(timer == 1) { + SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? 0 : -0.0625, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, casing.getName()); + } + } + if(type == AnimType.CYCLE_DRY) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1F); + if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 1F); + + } + if(type == AnimType.RELOAD) { + if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magRemove", 1F, 1F); + if(timer == 26) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magInsert", 1F, 1F); + if(timer == 40) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 1F); + } + if(type == AnimType.JAMMED) { + if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magRemove", 1F, 1F); + if(timer == 20) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.impact", 0.5F, 1.6F); + if(timer == 36) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magInsert", 1F, 1F); + } }; public static BiConsumer ORCHESTRA_UZI = (stack, ctx) -> { @@ -613,6 +650,38 @@ public class Orchestras { } }; + public static BiConsumer ORCHESTRA_UZI_AKIMBO = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + if(type == AnimType.EQUIP) { + if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.openLatch", 1F, 1.25F); + } + if(type == AnimType.CYCLE) { + if(timer == 1) { + int mult = ctx.configIndex == 0 ? -1 : 1; + SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, -0.125, -0.375D * mult, 0, 0.18, -0.12 * mult, 0.01, casing.getName()); + } + } + if(type == AnimType.CYCLE_DRY) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1F); + if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 1F); + + } + if(type == AnimType.RELOAD) { + if(timer == 4) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magRemove", 1F, 1F); + if(timer == 26) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magInsert", 1F, 1F); + if(timer == 36) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 1F); + } + if(type == AnimType.JAMMED) { + if(timer == 17) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 1F); + if(timer == 31) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 1F); + } + }; + public static BiConsumer ORCHESTRA_SPAS = (stack, ctx) -> { EntityLivingBase entity = ctx.entity; if(entity.worldObj.isRemote) return; @@ -679,8 +748,7 @@ public class Orchestras { } if(type == AnimType.CYCLE_DRY) { if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 0.8F); - if(timer == 5) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 0.9F); - if(timer == 9) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F); + if(timer == 5) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 0.9F); } if(type == AnimType.RELOAD) { @@ -848,6 +916,9 @@ public class Orchestras { if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 0.75F); if(timer == 1) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverSpin", 1F, 0.75F); } + if(type == AnimType.RELOAD) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverSpin", 1F, 0.75F); + } if(type == AnimType.INSPECT) { if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverSpin", 1F, 0.75F); } @@ -1047,6 +1118,10 @@ public class Orchestras { if(entity.worldObj.isRemote) return; AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + if(type == AnimType.CYCLE_DRY) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1.5F); + } if(type == AnimType.RELOAD) { if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallRemove", 1F, 1F); @@ -1146,9 +1221,21 @@ public class Orchestras { } if(type == AnimType.RELOAD) { - if(timer == 5) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magRemove", 1F, 1F); if(timer == 26) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magInsert", 1F, 1F); } }; + + public static BiConsumer ORCHESTRA_FOLLY = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + if(type == AnimType.RELOAD) { + if(timer == 20) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.screw", 1F, 1F); + if(timer == 80) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.insertRocket", 1F, 1F); + if(timer == 120) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.screw", 1F, 1F); + } + }; } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java index 680fc7ed7..911400fe2 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java @@ -4,6 +4,7 @@ import java.util.function.BiConsumer; import java.util.function.BiFunction; import com.hbm.entity.projectile.EntityBulletBaseMK4; +import com.hbm.extprop.HbmLivingProps; import com.hbm.items.ModItems; import com.hbm.items.weapon.sedna.BulletConfig; import com.hbm.items.weapon.sedna.Crosshair; @@ -14,6 +15,7 @@ import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState; import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret; import com.hbm.items.weapon.sedna.mags.MagazineFullReload; import com.hbm.items.weapon.sedna.mags.MagazineSingleReload; import com.hbm.main.MainRegistry; @@ -50,24 +52,25 @@ public class XFactory12ga { public static void init() { - g12_bp = new BulletConfig().setItem(EnumAmmo.G12_BP).setBlackPowder(true).setProjectiles(8).setSpread(0.05F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP")); - g12_bp_magnum = new BulletConfig().setItem(EnumAmmo.G12_BP_MAGNUM).setBlackPowder(true).setProjectiles(4).setSpread(0.05F).setRicochetAngle(25).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP_MAGNUM")); - g12_bp_slug = new BulletConfig().setItem(EnumAmmo.G12_BP_SLUG).setBlackPowder(true).setSpread(0.01F).setRicochetAngle(5).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP_SLUG")); - g12 = new BulletConfig().setItem(EnumAmmo.G12).setProjectiles(8).setSpread(0.05F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xB52B2B, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA")); + g12_bp = new BulletConfig().setItem(EnumAmmo.G12_BP).setBlackPowder(true).setProjectiles(8).setDamage(0.5F/8F).setSpread(0.05F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP")); + g12_bp_magnum = new BulletConfig().setItem(EnumAmmo.G12_BP_MAGNUM).setBlackPowder(true).setProjectiles(4).setDamage(0.5F/4F).setSpread(0.05F).setRicochetAngle(25).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP_MAGNUM")); + g12_bp_slug = new BulletConfig().setItem(EnumAmmo.G12_BP_SLUG).setBlackPowder(true).setDamage(0.5F).setSpread(0.01F).setRicochetAngle(5).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP_SLUG")); + g12 = new BulletConfig().setItem(EnumAmmo.G12).setProjectiles(8).setDamage(1F/8F).setSpread(0.05F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xB52B2B, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA")); g12_slug = new BulletConfig().setItem(EnumAmmo.G12_SLUG).setSpread(0.0F).setRicochetAngle(25).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x393939, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_SLUG")); - g12_flechette = new BulletConfig().setItem(EnumAmmo.G12_FLECHETTE).setProjectiles(8).setSpread(0.025F).setRicochetAngle(5).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x3C80F0, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_FLECHETTE")); - g12_magnum = new BulletConfig().setItem(EnumAmmo.G12_MAGNUM).setProjectiles(4).setSpread(0.015F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x278400, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_MAGNUM")); - g12_explosive = new BulletConfig().setItem(EnumAmmo.G12_EXPLOSIVE).setOnImpact(LAMBDA_STANDARD_EXPLODE).setSpread(0F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xDA4127, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_EXPLOSIVE")); - g12_phosphorus = new BulletConfig().setItem(EnumAmmo.G12_PHOSPHORUS).setProjectiles(8).setSpread(0.015F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x910001, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_PHOSPHORUS")); - g12_anthrax = new BulletConfig().setItem(EnumAmmo.G12_ANTHRAX).setProjectiles(8).setSpread(0.015F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x749300, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_ANTHRAX")); - g12_equestrian = new BulletConfig().setItem(EnumAmmo.G12_EQUESTRIAN).setDamage(0F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_EQUESTRIAN, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12gaEquestrian")); + g12_flechette = new BulletConfig().setItem(EnumAmmo.G12_FLECHETTE).setProjectiles(8).setDamage(1F/8F).setThresholdNegation(5F).setArmorPiercing(0.2F).setSpread(0.025F).setRicochetAngle(5).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x3C80F0, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_FLECHETTE")); + g12_magnum = new BulletConfig().setItem(EnumAmmo.G12_MAGNUM).setProjectiles(4).setDamage(2F/4F).setSpread(0.015F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x278400, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_MAGNUM")); + g12_explosive = new BulletConfig().setItem(EnumAmmo.G12_EXPLOSIVE).setDamage(5F).setOnImpact(LAMBDA_STANDARD_EXPLODE).setSpread(0F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xDA4127, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_EXPLOSIVE")); + g12_phosphorus = new BulletConfig().setItem(EnumAmmo.G12_PHOSPHORUS).setProjectiles(8).setDamage(1F/8F).setSpread(0.015F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x910001, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_PHOSPHORUS")) + .setOnImpact((bullet, mop) -> { if(mop.entityHit != null && mop.entityHit instanceof EntityLivingBase) { HbmLivingProps data = HbmLivingProps.getData((EntityLivingBase) mop.entityHit); if(data.phosphorus < 300) data.phosphorus = 300; } }); + //g12_anthrax = new BulletConfig().setItem(EnumAmmo.G12_ANTHRAX).setProjectiles(8).setDamage(1F/8F).setSpread(0.015F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x749300, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_ANTHRAX")); + g12_equestrian = new BulletConfig().setItem(EnumAmmoSecret.G12_EQUESTRIAN).setDamage(0F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_EQUESTRIAN, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12gaEquestrian")); - BulletConfig[] all = new BulletConfig[] {g12_bp, g12_bp_magnum, g12_bp_slug, g12, g12_slug, g12_flechette, g12_magnum, g12_explosive, g12_phosphorus, g12_anthrax}; + BulletConfig[] all = new BulletConfig[] {g12_bp, g12_bp_magnum, g12_bp_slug, g12, g12_slug, g12_flechette, g12_magnum, g12_explosive, g12_phosphorus}; ModItems.gun_maresleg = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(600).draw(10).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(12F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(16F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.shotgun", 1.0F, 1.0F) .mag(new MagazineSingleReload(0, 6).addConfigs(all)) .offset(0.75, -0.0625, -0.1875) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -77,7 +80,7 @@ public class XFactory12ga { ModItems.gun_maresleg_akimbo = new ItemGunBaseNT(WeaponQuality.B_SIDE, new GunConfig().dura(600).draw(5).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(12F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(16F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.shotgun", 1.0F, 1.0F) .mag(new MagazineSingleReload(0, 6).addConfigs(all)) .offset(0.75, -0.0625, 0.1875D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -86,7 +89,7 @@ public class XFactory12ga { .anim(LAMBDA_MARESLEG_SHORT_ANIMS).orchestra(Orchestras.ORCHESTRA_MARESLEG_AKIMBO), new GunConfig().dura(600).draw(5).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(12F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(12F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.shotgun", 1.0F, 1.0F) .mag(new MagazineSingleReload(1, 6).addConfigs(all)) .offset(0.75, -0.0625, -0.1875) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -97,7 +100,7 @@ public class XFactory12ga { ModItems.gun_maresleg_broken = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() .dura(0).draw(5).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(12F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(32F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.shotgun", 1.0F, 1.0F) .mag(new MagazineSingleReload(0, 6).addConfigs(all)) .offset(0.75, -0.0625, -0.1875) .canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_NOWEAR_FIRE).recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -108,7 +111,7 @@ public class XFactory12ga { ModItems.gun_liberator = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(200).draw(20).inspect(21).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(12F).delay(20).rounds(4).reload(25, 15, 7, 0).jam(45).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(8F).delay(20).rounds(4).reload(25, 15, 7, 0).jam(45).sound("hbm:weapon.fire.shotgunAlt", 1.0F, 1.0F) .mag(new MagazineSingleReload(0, 4).addConfigs(all)) .offset(0.75, -0.0625, -0.1875) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -119,7 +122,7 @@ public class XFactory12ga { ModItems.gun_spas12 = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(600).draw(20).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(12F).delay(20).reload(5, 10, 10, 10, 0).jam(36).sound("hbm:weapon.shotgunShoot", 1.0F, 1.0F) + .dmg(32F).delay(20).reload(5, 10, 10, 10, 0).jam(36).sound("hbm:weapon.shotgunShoot", 1.0F, 1.0F) .mag(new MagazineSingleReload(0, 8).addConfigs(all)) .offset(0.75, -0.0625, -0.1875) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -130,7 +133,7 @@ public class XFactory12ga { ModItems.gun_autoshotgun = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(2_000).draw(10).inspect(33).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(15F).delay(10).auto(true).autoAfterDry(true).dryfireAfterAuto(true).reload(44).jam(19).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(48F).delay(10).auto(true).autoAfterDry(true).dryfireAfterAuto(true).reload(44).jam(19).sound("hbm:weapon.fire.shotgunAuto", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 20).addConfigs(all)) .offset(0.75, -0.125, -0.25) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -140,15 +143,15 @@ public class XFactory12ga { ModItems.gun_autoshotgun_sexy = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() .dura(5_000).draw(10).inspect(33).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(15F).delay(1).auto(true).dryfireAfterAuto(true).reload(44).jam(19).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) - .mag(new MagazineFullReload(0, 100).addConfigs(g12_equestrian, g12_bp, g12_bp_magnum, g12_bp_slug, g12, g12_slug, g12_flechette, g12_magnum, g12_explosive, g12_phosphorus, g12_anthrax)) + .dmg(64F).delay(1).auto(true).dryfireAfterAuto(true).reload(44).jam(19).sound("hbm:weapon.fire.shotgunAuto", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 100).addConfigs(g12_equestrian, g12_bp, g12_bp_magnum, g12_bp_slug, g12, g12_slug, g12_flechette, g12_magnum, g12_explosive, g12_phosphorus)) .offset(0.75, -0.125, -0.25) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) .setupStandardConfiguration() .anim(LAMBDA_SEXY_ANIMS).orchestra(Orchestras.ORCHESTRA_SHREDDER_SEXY) ).setUnlocalizedName("gun_autoshotgun_sexy"); } - //TODO: make generic code for this crap + public static BiConsumer LAMBDA_SPAS_SECONDARY = (stack, ctx) -> { EntityLivingBase entity = ctx.entity; EntityPlayer player = ctx.getPlayer(); @@ -177,6 +180,9 @@ public class XFactory12ga { } } } + if(state == GunState.RELOADING) { + ItemGunBaseNT.setReloadCancel(stack, true); + } }; @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_MARESLEG_ANIMS = (stack, type) -> { diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory22lr.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory22lr.java index 1d96625c8..d9e24ab74 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory22lr.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory22lr.java @@ -33,19 +33,19 @@ public class XFactory22lr { public static void init() { SpentCasing casing22 = new SpentCasing(CasingType.STRAIGHT).setColor(SpentCasing.COLOR_CASE_BRASS).setScale(0.5F); - p22_sp = new BulletConfig().setItem(EnumAmmo.P22_SP) + p22_sp = new BulletConfig().setItem(EnumAmmo.P22_SP).setKnockback(0F) .setCasing(casing22.clone().register("p22")); - p22_fmj = new BulletConfig().setItem(EnumAmmo.P22_FMJ).setDamage(0.8F).setArmorPiercing(0.1F) + p22_fmj = new BulletConfig().setItem(EnumAmmo.P22_FMJ).setKnockback(0F).setDamage(0.8F).setArmorPiercing(0.1F) .setCasing(casing22.clone().register("p22fmj")); - p22_jhp = new BulletConfig().setItem(EnumAmmo.P22_JHP).setDamage(1.5F).setArmorPiercing(-0.25F) + p22_jhp = new BulletConfig().setItem(EnumAmmo.P22_JHP).setKnockback(0F).setDamage(1.5F).setArmorPiercing(-0.25F) .setCasing(casing22.clone().register("p22jhp")); - p22_ap = new BulletConfig().setItem(EnumAmmo.P22_AP).setDoesPenetrate(true).setDamageFalloutByPen(false).setDamage(1.5F).setArmorPiercing(0.15F) + p22_ap = new BulletConfig().setItem(EnumAmmo.P22_AP).setKnockback(0F).setDoesPenetrate(true).setDamageFalloutByPen(false).setDamage(1.5F).setArmorPiercing(0.15F) .setCasing(casing22.clone().setColor(SpentCasing.COLOR_CASE_44).register("p22ap")); ModItems.gun_am180 = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(177 * 25).draw(15).inspect(38).crosshair(Crosshair.L_CIRCLE).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) - .dmg(5F).delay(1).dry(10).auto(true).spread(0.02F).reload(66).jam(30).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(2F).delay(1).dry(10).auto(true).spread(0.02F).reload(66).jam(30).sound("hbm:weapon.fire.silenced", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 177).addConfigs(p22_sp, p22_fmj, p22_jhp, p22_ap)) .offset(1, -0.0625 * 1.5, -0.1875D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory357.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory357.java index 379cffc6b..eab5ab175 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory357.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory357.java @@ -38,18 +38,27 @@ public class XFactory357 { ModItems.gun_light_revolver = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(300).draw(4).inspect(23).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(10F).delay(16).reload(55).jam(45).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(7.5F).delay(16).reload(55).jam(45).sound("hbm:weapon.fire.pistol", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 6).addConfigs(m357_bp, m357_sp, m357_fmj, m357_jhp, m357_ap, m357_express)) .offset(0.75, -0.0625, -0.3125D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) .setupStandardConfiguration() .anim(LAMBDA_ATLAS_ANIMS).orchestra(Orchestras.ORCHESTRA_ATLAS) ).setUnlocalizedName("gun_light_revolver"); - + ModItems.gun_light_revolver_atlas = new ItemGunBaseNT(WeaponQuality.B_SIDE, new GunConfig() + .dura(300).draw(4).inspect(23).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) + .rec(new Receiver(0) + .dmg(12.5F).delay(16).reload(55).jam(45).sound("hbm:weapon.fire.pistol", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 6).addConfigs(m357_bp, m357_sp, m357_fmj, m357_jhp, m357_ap, m357_express)) + .offset(0.75, -0.0625, -0.3125D) + .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) + .setupStandardConfiguration() + .anim(LAMBDA_ATLAS_ANIMS).orchestra(Orchestras.ORCHESTRA_ATLAS) + ).setUnlocalizedName("gun_light_revolver_atlas"); ModItems.gun_light_revolver_dani = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig().dura(30_000).draw(20).inspect(23).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(10F).delay(11).reload(55).jam(45).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(15F).delay(11).reload(55).jam(45).sound("hbm:weapon.fire.pistol", 1.0F, 1.1F) .mag(new MagazineFullReload(0, 6).addConfigs(m357_bp, m357_sp, m357_fmj, m357_jhp, m357_ap, m357_express)) .offset(0.75, -0.0625, 0.3125D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -58,7 +67,7 @@ public class XFactory357 { .anim(LAMBDA_DANI_ANIMS).orchestra(Orchestras.ORCHESTRA_DANI), new GunConfig().dura(30_000).draw(20).inspect(23).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(10F).delay(11).reload(55).jam(45).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(15F).delay(11).reload(55).jam(45).sound("hbm:weapon.fire.pistol", 1.0F, 0.9F) .mag(new MagazineFullReload(1, 6).addConfigs(m357_bp, m357_sp, m357_fmj, m357_jhp, m357_ap, m357_express)) .offset(0.75, -0.0625, -0.3125D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory40mm.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory40mm.java index bd4e17ae1..515a6a85b 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory40mm.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory40mm.java @@ -2,8 +2,11 @@ package com.hbm.items.weapon.sedna.factory; import java.util.function.BiConsumer; import java.util.function.BiFunction; +import java.util.function.Consumer; import com.hbm.entity.effect.EntityFireLingering; +import com.hbm.entity.logic.EntityC130; +import com.hbm.entity.logic.EntityC130.C130PayloadType; import com.hbm.entity.projectile.EntityBulletBaseMK4; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; @@ -30,7 +33,11 @@ import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationSequence; import com.hbm.render.anim.BusAnimationKeyframe.IType; import com.hbm.render.anim.HbmAnimations.AnimType; +import com.hbm.util.EntityDamageUtil; +import com.hbm.util.TrackerUtil; +import com.hbm.util.DamageResistanceHandler.DamageClass; +import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; @@ -48,6 +55,7 @@ public class XFactory40mm { public static BulletConfig g40_heat; public static BulletConfig g40_demo; public static BulletConfig g40_inc; + public static BulletConfig g40_phosphorus; public static BiConsumer LAMBDA_STANDARD_IGNITE = (bullet, mop) -> { if(mop.typeOfHit == mop.typeOfHit.ENTITY) { @@ -62,7 +70,13 @@ public class XFactory40mm { }; public static BiConsumer LAMBDA_STANDARD_EXPLODE_HEAT = (bullet, mop) -> { if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return; - Lego.standardExplode(bullet, mop, 2.5F); bullet.setDead(); + Lego.standardExplode(bullet, mop, 3.5F); bullet.setDead(); + if(mop.typeOfHit == mop.typeOfHit.ENTITY && mop.entityHit instanceof EntityLivingBase) { + EntityLivingBase living = (EntityLivingBase) mop.entityHit; + EntityDamageUtil.attackEntityFromNT(living, bullet.config.getDamage(bullet, bullet.getThrower(), DamageClass.EXPLOSIVE), bullet.damage * 3F, true, true, 0.5F, 3F, 0.15F); + } else if(mop.typeOfHit == mop.typeOfHit.ENTITY) { + mop.entityHit.attackEntityFrom(bullet.config.getDamage(bullet, bullet.getThrower(), DamageClass.EXPLOSIVE), bullet.damage * 3F); + } }; public static BiConsumer LAMBDA_STANDARD_EXPLODE_DEMO = (bullet, mop) -> { if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return; @@ -76,16 +90,23 @@ public class XFactory40mm { bullet.setDead(); }; public static BiConsumer LAMBDA_STANDARD_EXPLODE_INC = (bullet, mop) -> { + spawnFire(bullet, mop, false, 200); + }; + public static BiConsumer LAMBDA_STANDARD_EXPLODE_PHOSPHORUS = (bullet, mop) -> { + spawnFire(bullet, mop, true, 400); + }; + + public static void spawnFire(EntityBulletBaseMK4 bullet, MovingObjectPosition mop, boolean phosphorus, int duration) { if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return; World world = bullet.worldObj; Lego.standardExplode(bullet, mop, 3F); - EntityFireLingering fire = new EntityFireLingering(world).setArea(5, 2).setDuration(200).setType(EntityFireLingering.TYPE_DIESEL); + EntityFireLingering fire = new EntityFireLingering(world).setArea(5, 2).setDuration(duration).setType(phosphorus ? EntityFireLingering.TYPE_PHOSPHORUS : EntityFireLingering.TYPE_DIESEL); fire.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); world.spawnEntityInWorld(fire); bullet.setDead(); for(int dx = -1; dx <= 1; dx++) { for(int dy = -1; dy <= 1; dy++) { - for(int dz = -2; dz <= 2; dz++) { + for(int dz = -1; dz <= 1; dz++) { int x = (int) Math.floor(mop.hitVec.xCoord) + dx; int y = (int) Math.floor(mop.hitVec.yCoord) + dy; int z = (int) Math.floor(mop.hitVec.zCoord) + dz; @@ -98,19 +119,37 @@ public class XFactory40mm { } } } - }; + } + + public static Consumer LAMBDA_SPAWN_C130_SUPPLIESS = (entity) -> { spawnPlane(entity, C130PayloadType.SUPPLIES); }; + public static Consumer LAMBDA_SPAWN_C130_WEAPONS = (entity) -> { spawnPlane(entity, C130PayloadType.WEAPONS); }; + + public static void spawnPlane(Entity entity, C130PayloadType payload) { + if(!entity.worldObj.isRemote && entity.ticksExisted == 40) { + EntityBulletBaseMK4 bullet = (EntityBulletBaseMK4) entity; + if(bullet.getThrower() != null) bullet.worldObj.playSoundAtEntity(bullet.getThrower(), "hbm:item.techBleep", 1.0F, 1.0F); + EntityC130 c130 = new EntityC130(bullet.worldObj); + int x = (int) Math.floor(bullet.posX); + int z = (int) Math.floor(bullet.posZ); + int y = bullet.worldObj.getHeightValue(x, z); + c130.fac(bullet.worldObj, x, y, z, payload); + bullet.worldObj.spawnEntityInWorld(c130); + TrackerUtil.setTrackingRange(bullet.worldObj, c130, 250); + } + } public static void init() { g26_flare = new BulletConfig().setItem(EnumAmmo.G26_FLARE).setLife(100).setVel(2F).setGrav(0.015D).setRenderRotations(false).setOnImpact(LAMBDA_STANDARD_IGNITE).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0x9E1616).setScale(2F).register("g26Flare")); - g26_flare_supply = new BulletConfig().setItem(EnumAmmo.G26_FLARE_SUPPLY).setLife(100).setVel(2F).setGrav(0.015D).setRenderRotations(false).setOnImpact(LAMBDA_STANDARD_IGNITE).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0x3C80F0).setScale(2F).register("g26FlareSupply")); - g26_flare_weapon = new BulletConfig().setItem(EnumAmmo.G26_FLARE_WEAPON).setLife(100).setVel(2F).setGrav(0.015D).setRenderRotations(false).setOnImpact(LAMBDA_STANDARD_IGNITE).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0x278400).setScale(2F).register("g26FlareWeapon")); + g26_flare_supply = new BulletConfig().setItem(EnumAmmo.G26_FLARE_SUPPLY).setLife(100).setVel(2F).setGrav(0.015D).setRenderRotations(false).setOnImpact(LAMBDA_STANDARD_IGNITE).setOnUpdate(LAMBDA_SPAWN_C130_SUPPLIESS).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0x3C80F0).setScale(2F).register("g26FlareSupply")); + g26_flare_weapon = new BulletConfig().setItem(EnumAmmo.G26_FLARE_WEAPON).setLife(100).setVel(2F).setGrav(0.015D).setRenderRotations(false).setOnImpact(LAMBDA_STANDARD_IGNITE).setOnUpdate(LAMBDA_SPAWN_C130_WEAPONS).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0x278400).setScale(2F).register("g26FlareWeapon")); BulletConfig g40_base = new BulletConfig().setLife(200).setVel(2F).setGrav(0.035D); g40_he = g40_base.clone().setItem(EnumAmmo.G40_HE).setOnImpact(LAMBDA_STANDARD_EXPLODE).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0x777777).setScale(2, 2F, 1.5F).register("g40")); - g40_heat = g40_base.clone().setItem(EnumAmmo.G40_HEAT).setOnImpact(LAMBDA_STANDARD_EXPLODE_HEAT).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0x5E6854).setScale(2, 2F, 1.5F).register("g40heat")); - g40_demo = g40_base.clone().setItem(EnumAmmo.G40_DEMO).setOnImpact(LAMBDA_STANDARD_EXPLODE_DEMO).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0xE30000).setScale(2, 2F, 1.5F).register("g40demo")); - g40_inc = g40_base.clone().setItem(EnumAmmo.G40_INC).setOnImpact(LAMBDA_STANDARD_EXPLODE_INC).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0xE86F20).setScale(2, 2F, 1.5F).register("g40inc")); + g40_heat = g40_base.clone().setItem(EnumAmmo.G40_HEAT).setOnImpact(LAMBDA_STANDARD_EXPLODE_HEAT).setDamage(0.5F).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0x5E6854).setScale(2, 2F, 1.5F).register("g40heat")); + g40_demo = g40_base.clone().setItem(EnumAmmo.G40_DEMO).setOnImpact(LAMBDA_STANDARD_EXPLODE_DEMO).setDamage(0.75F).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0xE30000).setScale(2, 2F, 1.5F).register("g40demo")); + g40_inc = g40_base.clone().setItem(EnumAmmo.G40_INC).setOnImpact(LAMBDA_STANDARD_EXPLODE_INC).setDamage(0.75F).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0xE86F20).setScale(2, 2F, 1.5F).register("g40inc")); + g40_phosphorus = g40_base.clone().setItem(EnumAmmo.G40_PHOSPHORUS).setOnImpact(LAMBDA_STANDARD_EXPLODE_PHOSPHORUS).setDamage(0.75F).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0xC8C8C8).setScale(2, 2F, 1.5F).register("g40phos")); ModItems.gun_flaregun = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(100).draw(7).inspect(39).crosshair(Crosshair.L_CIRCUMFLEX).smoke(LAMBDA_SMOKE) @@ -126,8 +165,8 @@ public class XFactory40mm { ModItems.gun_congolake = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(400).draw(7).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCUMFLEX).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) - .dmg(30F).delay(24).reload(16, 16, 16, 0).jam(0).sound("hbm:weapon.glShoot", 1.0F, 1.0F) - .mag(new MagazineSingleReload(0, 4).addConfigs(g40_he, g40_heat, g40_demo, g40_inc)) + .dmg(20F).delay(24).reload(16, 16, 16, 0).jam(0).sound("hbm:weapon.glShoot", 1.0F, 1.0F) + .mag(new MagazineSingleReload(0, 4).addConfigs(g40_he, g40_heat, g40_demo, g40_inc, g40_phosphorus)) .offset(0.75, -0.0625, -0.1875D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) .setupStandardConfiguration() diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory44.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory44.java index 48ad36d65..161bed164 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory44.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory44.java @@ -13,6 +13,7 @@ import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState; import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret; import com.hbm.items.weapon.sedna.mags.MagazineFullReload; import com.hbm.items.weapon.sedna.mags.MagazineSingleReload; import com.hbm.lib.RefStrings; @@ -52,13 +53,13 @@ public class XFactory44 { .setCasing(casing44.clone().setColor(SpentCasing.COLOR_CASE_44).register("m44ap")); m44_express = new BulletConfig().setItem(EnumAmmo.M44_EXPRESS).setDoesPenetrate(true).setDamage(1.5F).setArmorPiercing(0.1F).setWear(1.5F) .setCasing(casing44.clone().register("m44express")); - m44_equestrian = new BulletConfig().setItem(EnumAmmo.M44_EQUESTRIAN).setDamage(0F) + m44_equestrian = new BulletConfig().setItem(EnumAmmoSecret.M44_EQUESTRIAN).setDamage(0F) .setCasing(casing44.clone().setColor(SpentCasing.COLOR_CASE_EQUESTRIAN).register("m44equestrian")); ModItems.gun_henry = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(300).draw(15).inspect(23).reloadSequential(true).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(12F).delay(20).reload(25, 11, 14, 8).jam(45).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(10F).delay(20).reload(25, 11, 14, 8).jam(45).sound("hbm:weapon.fire.rifle", 1.0F, 1.0F) .mag(new MagazineSingleReload(0, 14).addConfigs(m44_bp, m44_sp, m44_fmj, m44_jhp, m44_ap, m44_express)) .offset(0.75, -0.0625, -0.1875D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -69,7 +70,7 @@ public class XFactory44 { ModItems.gun_heavy_revolver = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(600).draw(10).inspect(23).crosshair(Crosshair.L_CLASSIC).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(10F).delay(14).reload(46).jam(23).sound("hbm:weapon.44Shoot", 1.0F, 1.0F) + .dmg(15F).delay(14).reload(46).jam(23).sound("hbm:weapon.44Shoot", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 6).addConfigs(m44_bp, m44_sp, m44_fmj, m44_jhp, m44_ap, m44_express)) .offset(0.75, -0.0625, -0.3125D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -79,7 +80,7 @@ public class XFactory44 { ModItems.gun_heavy_revolver_lilmac = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() .dura(31_000).draw(10).inspect(23).crosshair(Crosshair.L_CLASSIC).scopeTexture(scope_lilmac).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(10F).delay(14).reload(46).jam(23).sound("hbm:weapon.44Shoot", 1.0F, 1.0F) + .dmg(30F).delay(14).reload(46).jam(23).sound("hbm:weapon.44Shoot", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 6).addConfigs(m44_equestrian, m44_bp, m44_sp, m44_fmj, m44_jhp, m44_ap, m44_express)) .offset(0.75, -0.0625, -0.3125D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -90,7 +91,7 @@ public class XFactory44 { ModItems.gun_hangman = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() .dura(600).draw(10).inspect(31).inspectCancel(false).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(10F).delay(10).reload(46).jam(23).sound("hbm:weapon.44Shoot", 1.0F, 1.0F) + .dmg(25F).delay(10).reload(46).jam(23).sound("hbm:weapon.44Shoot", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 8).addConfigs(m44_bp, m44_sp, m44_fmj, m44_jhp, m44_ap, m44_express)) .offset(1, -0.0625 * 2.5, -0.25D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory50.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory50.java index f95114036..b76740d7b 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory50.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory50.java @@ -46,7 +46,7 @@ public class XFactory50 { ModItems.gun_m2 = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(3_000).draw(10).inspect(31).crosshair(Crosshair.L_CIRCLE).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) - .dmg(5F).delay(2).dry(10).auto(true).spread(0.005F).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(7.5F).delay(2).dry(10).auto(true).spread(0.005F).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineBelt().addConfigs(bmg50_sp, bmg50_fmj, bmg50_jhp, bmg50_ap, bmg50_du)) .offset(1, -0.0625 * 2.5, -0.25D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory556mm.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory556mm.java index 28abc2e62..a914e87bc 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory556mm.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory556mm.java @@ -47,7 +47,7 @@ public class XFactory556mm { ModItems.gun_g3 = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(3_000).draw(10).inspect(33).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) - .dmg(15F).delay(2).auto(true).dry(15).spread(0.0F).reload(50).jam(47).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(5F).delay(2).auto(true).dry(15).spread(0.0F).reload(50).jam(47).sound("hbm:weapon.fire.assault", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 30).addConfigs(r556_sp, r556_fmj, r556_jhp, r556_ap)) .offset(1, -0.0625 * 2.5, -0.25D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -58,7 +58,7 @@ public class XFactory556mm { ModItems.gun_stg77 = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(3_000).draw(10).inspect(125).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) - .dmg(15F).delay(2).dry(15).auto(true).spread(0.0F).reload(46).jam(0).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(10F).delay(2).dry(15).auto(true).spread(0.0F).reload(46).jam(0).sound("hbm:weapon.fire.assault", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 30).addConfigs(r556_sp, r556_fmj, r556_jhp, r556_ap)) .offset(1, -0.0625 * 2.5, -0.25D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory75Bolt.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory75Bolt.java index 5caea7441..2d318cbc8 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory75Bolt.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory75Bolt.java @@ -40,7 +40,7 @@ public class XFactory75Bolt { ModItems.gun_bolter = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(3_000).draw(20).inspect(31).crosshair(Crosshair.L_CIRCLE).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) - .dmg(5F).delay(2).auto(true).spread(0.005F).reload(40).jam(55).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(15F).delay(2).auto(true).spread(0.005F).reload(40).jam(55).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 30).addConfigs(b75, b75_inc, b75_exp)) .offset(1, -0.0625 * 2.5, -0.25D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java index 31b227d53..6a4451b40 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java @@ -21,6 +21,7 @@ import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationSequence; import com.hbm.render.anim.BusAnimationKeyframe.IType; import com.hbm.render.anim.HbmAnimations.AnimType; +import com.hbm.util.DamageResistanceHandler.DamageClass; import net.minecraft.item.ItemStack; @@ -32,6 +33,10 @@ public class XFactory762mm { public static BulletConfig r762_ap; public static BulletConfig r762_du; + public static BulletConfig energy_lacunae; + public static BulletConfig energy_lacunae_overcharge; + public static BulletConfig energy_lacunae_ir; + public static void init() { SpentCasing casing762 = new SpentCasing(CasingType.BOTTLENECK).setColor(SpentCasing.COLOR_CASE_BRASS); r762_sp = new BulletConfig().setItem(EnumAmmo.R762_SP) @@ -44,28 +49,42 @@ public class XFactory762mm { .setCasing(casing762.clone().setColor(SpentCasing.COLOR_CASE_44).register("r762ap")); r762_du = new BulletConfig().setItem(EnumAmmo.R762_DU).setDoesPenetrate(true).setDamageFalloutByPen(false).setDamage(2.5F).setArmorPiercing(0.25F) .setCasing(casing762.clone().setColor(SpentCasing.COLOR_CASE_44).register("r762du")); + + energy_lacunae = new BulletConfig().setItem(EnumAmmo.CAPACITOR).setupDamageClass(DamageClass.LASER).setBeam().setReloadCount(40).setSpread(0.0F).setLife(5).setRenderRotations(false).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); + energy_lacunae_overcharge = new BulletConfig().setItem(EnumAmmo.CAPACITOR_OVERCHARGE).setupDamageClass(DamageClass.LASER).setBeam().setReloadCount(40).setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); + energy_lacunae_ir = new BulletConfig().setItem(EnumAmmo.CAPACITOR_IR).setupDamageClass(DamageClass.FIRE).setBeam().setReloadCount(40).setSpread(0.0F).setLife(5).setRenderRotations(false).setOnBeamImpact(XFactoryEnergy.LAMBDA_IR_HIT); ModItems.gun_carbine = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(3_000).draw(10).inspect(31).reloadSequential(true).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) - .dmg(5F).delay(5).dry(15).spread(0.0F).reload(30, 0, 15, 0).jam(60).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(15F).delay(5).dry(15).spread(0.0F).reload(30, 0, 15, 0).jam(60).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 14).addConfigs(r762_sp, r762_fmj, r762_jhp, r762_ap, r762_du)) .offset(1, -0.0625 * 2.5, -0.25D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) .setupStandardConfiguration() .anim(LAMBDA_CARBINE_ANIMS).orchestra(Orchestras.ORCHESTRA_CARBIBE) ).setUnlocalizedName("gun_carbine"); - + ModItems.gun_minigun = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(50_000).draw(20).inspect(20).crosshair(Crosshair.L_CIRCLE).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) - .dmg(10F).delay(1).auto(true).dry(15).spread(0.01F).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(6F).delay(1).auto(true).dry(15).spread(0.01F).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineBelt().addConfigs(r762_sp, r762_fmj, r762_jhp, r762_ap, r762_du)) .offset(1, -0.0625 * 2.5, -0.25D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) .setupStandardConfiguration() .anim(LAMBDA_MINIGUN_ANIMS).orchestra(Orchestras.ORCHESTRA_MINIGUN) ).setUnlocalizedName("gun_minigun"); + ModItems.gun_minigun_lacunae = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() + .dura(50_000).draw(20).inspect(20).crosshair(Crosshair.L_CIRCLE) + .rec(new Receiver(0) + .dmg(12F).delay(1).auto(true).dry(15).reload(15).spread(0.01F).sound("hbm:weapon.fire.laserGatling", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 200).addConfigs(energy_lacunae, energy_lacunae_overcharge, energy_lacunae_ir)) + .offset(1, -0.0625 * 2.5, -0.25D) + .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) + .setupStandardConfiguration() + .anim(LAMBDA_MINIGUN_ANIMS).orchestra(Orchestras.ORCHESTRA_MINIGUN) + ).setUnlocalizedName("gun_minigun_lacunae"); } public static BiConsumer LAMBDA_SMOKE = (stack, ctx) -> { @@ -113,6 +132,9 @@ public class XFactory762mm { .addBus("ROTATE", new BusAnimationSequence().addPos(0, 0, 60, 50).addPos(0, 0, 720, 1000, IType.SIN_DOWN)); case CYCLE_DRY: return new BusAnimation() .addBus("ROTATE", new BusAnimationSequence().addPos(0, 0, 60, 50).addPos(0, 0, 720, 1000, IType.SIN_DOWN)); + case RELOAD: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(-15, 0, 0, 250, IType.SIN_DOWN).addPos(0, 0, 0, 500, IType.SIN_FULL)) + .addBus("ROTATE", new BusAnimationSequence().addPos(0, 0, 60, 50).addPos(0, 0, 720, 1000, IType.SIN_DOWN)); case INSPECT: return new BusAnimation() .addBus("EQUIP", new BusAnimationSequence().addPos(3, 0, 0, 150, IType.SIN_DOWN).addPos(0, 0, 0, 100, IType.SIN_FULL)) .addBus("ROTATE", new BusAnimationSequence().addPos(0, 0, -720, 1000, IType.SIN_DOWN)); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory9mm.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory9mm.java index 72bc5ca49..8b4110ec0 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory9mm.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory9mm.java @@ -9,11 +9,13 @@ import com.hbm.items.weapon.sedna.Crosshair; import com.hbm.items.weapon.sedna.GunConfig; import com.hbm.items.weapon.sedna.ItemGunBaseNT; import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState; import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import com.hbm.items.weapon.sedna.mags.MagazineFullReload; import com.hbm.main.MainRegistry; +import com.hbm.main.ResourceManager; import com.hbm.particle.SpentCasing; import com.hbm.particle.SpentCasing.CasingType; import com.hbm.render.anim.BusAnimation; @@ -44,7 +46,7 @@ public class XFactory9mm { ModItems.gun_greasegun = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(3_000).draw(20).inspect(31).crosshair(Crosshair.L_CIRCLE).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) - .dmg(5F).delay(4).dry(40).auto(true).spread(0.015F).reload(60).jam(55).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(3F).delay(4).dry(40).auto(true).spread(0.015F).reload(60).jam(55).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 30).addConfigs(p9_sp, p9_fmj, p9_jhp, p9_ap)) .offset(1, -0.0625 * 2.5, -0.25D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -53,9 +55,9 @@ public class XFactory9mm { ).setUnlocalizedName("gun_greasegun"); ModItems.gun_lag = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() - .dura(1_700).draw(15).inspect(31).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) + .dura(1_700).draw(7).inspect(31).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) - .dmg(15F).delay(4).dry(40).spread(0.005F).reload(60).jam(55).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(25F).delay(4).dry(4).spread(0.005F).reload(53).jam(44).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 17).addConfigs(p9_sp, p9_fmj, p9_jhp, p9_ap)) .offset(1, -0.0625 * 2.5, -0.25D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -66,17 +68,46 @@ public class XFactory9mm { ModItems.gun_uzi = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(3_000).draw(15).inspect(31).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) - .dmg(7.5F).delay(2).dry(25).auto(true).spread(0.005F).reload(55).jam(50).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(3F).delay(2).dry(25).auto(true).spread(0.005F).reload(55).jam(50).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 30).addConfigs(p9_sp, p9_fmj, p9_jhp, p9_ap)) .offset(1, -0.0625 * 2.5, -0.25D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) .setupStandardConfiguration() .anim(LAMBDA_UZI_ANIMS).orchestra(Orchestras.ORCHESTRA_UZI) ).setUnlocalizedName("gun_uzi"); + ModItems.gun_uzi_akimbo = new ItemGunBaseNT(WeaponQuality.B_SIDE, + new GunConfig().dura(3_000).draw(15).inspect(31).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) + .rec(new Receiver(0) + .dmg(3F).delay(2).dry(25).auto(true).spread(0.005F).reload(55).jam(50).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 30).addConfigs(p9_sp, p9_fmj, p9_jhp, p9_ap)) + .offset(1, -0.0625 * 2.5, 0.375D) + .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) + .pp(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).pr(Lego.LAMBDA_STANDARD_RELOAD) + .decider(GunStateDecider.LAMBDA_STANDARD_DECIDER) + .anim(LAMBDA_UZI_ANIMS).orchestra(Orchestras.ORCHESTRA_UZI_AKIMBO), + new GunConfig().dura(3_000).draw(15).inspect(31).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) + .rec(new Receiver(0) + .dmg(7.5F).delay(2).dry(25).auto(true).spread(0.005F).reload(55).jam(50).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .mag(new MagazineFullReload(1, 30).addConfigs(p9_sp, p9_fmj, p9_jhp, p9_ap)) + .offset(1, -0.0625 * 2.5, -0.375D) + .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) + .ps(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).pr(Lego.LAMBDA_STANDARD_RELOAD) + .decider(LAMBDA_SECOND_UZI) + .anim(LAMBDA_UZI_ANIMS).orchestra(Orchestras.ORCHESTRA_UZI_AKIMBO) + ).setUnlocalizedName("gun_uzi_akimbo"); } + public static BiConsumer LAMBDA_SECOND_UZI = (stack, ctx) -> { + int index = ctx.configIndex; + GunState lastState = ItemGunBaseNT.getState(stack, index); + GunStateDecider.deciderStandardFinishDraw(stack, lastState, index); + GunStateDecider.deciderStandardClearJam(stack, lastState, index); + GunStateDecider.deciderStandardReload(stack, ctx, lastState, 0, index); + GunStateDecider.deciderAutoRefire(stack, ctx, lastState, 0, index, () -> { return ItemGunBaseNT.getSecondary(stack, index) && ItemGunBaseNT.getMode(stack, ctx.configIndex) == 0; }); + }; + public static BiConsumer LAMBDA_SMOKE = (stack, ctx) -> { - Lego.handleStandardSmoke(ctx.entity, stack, 2000, 0.05D, 1.1D, 0); + Lego.handleStandardSmoke(ctx.entity, stack, 2000, 0.05D, 1.1D, ctx.configIndex); }; @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_GREASEGUN_ANIMS = (stack, type) -> { @@ -111,7 +142,20 @@ public class XFactory9mm { return null; }; - public static BiFunction LAMBDA_LAG_ANIMS = (stack, type) -> { + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_LAG_ANIMS = (stack, type) -> { + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(-90, 0, 0, 0).addPos(0, 0, 0, 350, IType.SIN_DOWN)); + case CYCLE: return ResourceManager.lag_anim.get("Firing"); + //.addBus("HAMMER", new BusAnimationSequence().addPos(0, 0, 25, 50).addPos(0, 0, 25, 50).addPos(0, 0, 0, 100, IType.SIN_DOWN)); + case CYCLE_DRY: return ResourceManager.lag_anim.get("Dryfire"); + case RELOAD: return ResourceManager.lag_anim.get("Reload"); + case JAMMED: return ResourceManager.lag_anim.get("Jam"); + case INSPECT: return ResourceManager.lag_anim.get("Inspect") + .addBus("ADD_TRANS", new BusAnimationSequence().addPos(-4, 0, -3, 500).addPos(-4, 0, -3, 2000).addPos(0, 0, 0, 500)) + .addBus("ADD_ROT", new BusAnimationSequence().addPos(0, -2, 5, 500).addPos(0, -2, 5, 2000).addPos(0, 0, 0, 500)); + } + return null; }; diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryAccelerator.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryAccelerator.java index 34653bd18..0866fd3ff 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryAccelerator.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryAccelerator.java @@ -21,6 +21,7 @@ import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationSequence; import com.hbm.render.anim.BusAnimationKeyframe.IType; import com.hbm.render.anim.HbmAnimations.AnimType; +import com.hbm.util.DamageResistanceHandler.DamageClass; import net.minecraft.block.Block; import net.minecraft.block.material.Material; @@ -79,9 +80,9 @@ public class XFactoryAccelerator { public static void init() { - tau_uranium = new BulletConfig().setItem(EnumAmmo.TAU_URANIUM).setLife(5).setRenderRotations(false).setDoesPenetrate(true).setDamageFalloutByPen(false) + tau_uranium = new BulletConfig().setItem(EnumAmmo.TAU_URANIUM).setupDamageClass(DamageClass.SUBATOMIC).setBeam().setLife(5).setRenderRotations(false).setDoesPenetrate(true).setDamageFalloutByPen(false) .setOnBeamImpact(BulletConfig.LAMBDA_BEAM_HIT); - tau_uranium_charge = new BulletConfig().setItem(EnumAmmo.TAU_URANIUM).setLife(5).setRenderRotations(false).setDoesPenetrate(true).setDamageFalloutByPen(false).setSpectral(true) + tau_uranium_charge = new BulletConfig().setItem(EnumAmmo.TAU_URANIUM).setupDamageClass(DamageClass.SUBATOMIC).setBeam().setLife(5).setRenderRotations(false).setDoesPenetrate(true).setDamageFalloutByPen(false).setSpectral(true) .setOnBeamImpact(BulletConfig.LAMBDA_BEAM_HIT); coil_tungsten = new BulletConfig().setItem(EnumAmmo.COIL_TUNGSTEN).setVel(7.5F).setLife(50).setDoesPenetrate(true).setDamageFalloutByPen(false).setSpectral(true) @@ -94,10 +95,10 @@ public class XFactoryAccelerator { ModItems.gun_tau = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(6_400).draw(10).inspect(10).crosshair(Crosshair.CIRCLE) .rec(new Receiver(0) - .dmg(10F).delay(4).auto(true).spread(0F) + .dmg(25F).delay(4).auto(true).spread(0F) .mag(new MagazineBelt().addConfigs(tau_uranium)) .offset(1, -0.0625 * 2.5, -0.25D) - .setupBeamFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) + .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) .pp(Lego.LAMBDA_STANDARD_CLICK_PRIMARY) .rp(LAMBDA_TAU_PRIMARY_RELEASE) .ps(LAMBDA_TAU_SECONDARY_PRESS) @@ -110,7 +111,7 @@ public class XFactoryAccelerator { ModItems.gun_coilgun = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(400).draw(5).inspect(39).crosshair(Crosshair.L_CIRCUMFLEX) .rec(new Receiver(0) - .dmg(15F).delay(5).reload(20).jam(33).sound("hbm:weapon.coilgunShoot", 1.0F, 1.0F) + .dmg(35F).delay(5).reload(20).jam(33).sound("hbm:weapon.coilgunShoot", 1.0F, 1.0F) .mag(new MagazineSingleReload(0, 1).addConfigs(coil_tungsten, coil_ferrouranium)) .offset(0.75, -0.0625, -0.1875D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryCatapult.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryCatapult.java index 46270301c..0317caee5 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryCatapult.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryCatapult.java @@ -122,7 +122,7 @@ public class XFactoryCatapult { if(bullet.isDead) return; bullet.setDead(); ExplosionVNT vnt = new ExplosionVNT(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 5); - vnt.setEntityProcessor(new EntityProcessorCrossSmooth(2, bullet.damage).withRangeMod(1.5F)); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, bullet.damage).withRangeMod(1.5F)); vnt.setPlayerProcessor(new PlayerProcessorStandard()); vnt.setSFX(new ExplosionEffectWeapon(10, 2.5F, 1F)); vnt.explode(); @@ -133,13 +133,13 @@ public class XFactoryCatapult { nuke_standard = new BulletConfig().setItem(EnumAmmo.NUKE_STANDARD).setLife(300).setVel(3F).setGrav(0.025F).setOnImpact(LAMBDA_NUKE_STANDARD); nuke_demo = new BulletConfig().setItem(EnumAmmo.NUKE_DEMO).setLife(300).setVel(3F).setGrav(0.025F).setOnImpact(LAMBDA_NUKE_DEMO); nuke_high = new BulletConfig().setItem(EnumAmmo.NUKE_HIGH).setLife(300).setVel(3F).setGrav(0.025F).setOnImpact(LAMBDA_NUKE_HIGH); - nuke_tots = new BulletConfig().setItem(EnumAmmo.NUKE_TOTS).setProjectiles(8).setLife(300).setVel(3F).setGrav(0.025F).setSpread(0.1F).setOnImpact(LAMBDA_NUKE_TINYTOT); - nuke_hive = new BulletConfig().setItem(EnumAmmo.NUKE_HIVE).setProjectiles(12).setLife(300).setVel(1F).setGrav(0.025F).setSpread(0.15F).setOnImpact(LAMBDA_NUKE_HIVE); + nuke_tots = new BulletConfig().setItem(EnumAmmo.NUKE_TOTS).setProjectiles(8).setLife(300).setVel(3F).setGrav(0.025F).setSpread(0.1F).setDamage(0.35F).setOnImpact(LAMBDA_NUKE_TINYTOT); + nuke_hive = new BulletConfig().setItem(EnumAmmo.NUKE_HIVE).setProjectiles(12).setLife(300).setVel(1F).setGrav(0.025F).setSpread(0.15F).setDamage(0.25F).setOnImpact(LAMBDA_NUKE_HIVE); ModItems.gun_fatman = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(300).draw(20).inspect(30).crosshair(Crosshair.L_CIRCUMFLEX).hideCrosshair(false) .rec(new Receiver(0) - .dmg(25F).delay(10).reload(57).jam(40).sound("hbm:weapon.fire.fatman", 1.0F, 1.0F) + .dmg(100F).delay(10).reload(57).jam(40).sound("hbm:weapon.fire.fatman", 1.0F, 1.0F) .mag(new MagazineSingleReload(0, 1).addConfigs(nuke_standard, nuke_demo, nuke_high, nuke_tots, nuke_hive)) .offset(1, -0.0625 * 1.5, -0.1875D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java index 3b2104f0d..3266ebe94 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java @@ -3,10 +3,12 @@ package com.hbm.items.weapon.sedna.factory; import java.util.function.BiConsumer; import java.util.function.BiFunction; +import com.hbm.entity.effect.EntityFireLingering; import com.hbm.entity.projectile.EntityBulletBeamBase; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.standard.EntityProcessorCrossSmooth; import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; +import com.hbm.extprop.HbmLivingProps; import com.hbm.items.ModItems; import com.hbm.items.weapon.sedna.BulletConfig; import com.hbm.items.weapon.sedna.Crosshair; @@ -25,15 +27,19 @@ import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationSequence; import com.hbm.render.anim.BusAnimationKeyframe.IType; import com.hbm.render.anim.HbmAnimations.AnimType; +import com.hbm.util.DamageResistanceHandler.DamageClass; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.block.Block; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; public class XFactoryEnergy { @@ -42,11 +48,10 @@ public class XFactoryEnergy { public static BulletConfig energy_tesla; public static BulletConfig energy_tesla_overcharge; - public static BulletConfig energy_tesla_blacklightning; public static BulletConfig energy_las; public static BulletConfig energy_las_overcharge; - public static BulletConfig energy_las_blacklightning; + public static BulletConfig energy_las_ir; public static BiConsumer LAMBDA_LIGHTNING_HIT = (beam, mop) -> { @@ -58,7 +63,7 @@ public class XFactoryEnergy { } ExplosionVNT vnt = new ExplosionVNT(beam.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 2F); - vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, beam.damage)); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, beam.damage).setDamageClass(beam.config.dmgClass)); vnt.setPlayerProcessor(new PlayerProcessorStandard()); vnt.explode(); beam.worldObj.playSoundEffect(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, "hbm:entity.ufoBlast", 5.0F, 0.9F + beam.worldObj.rand.nextFloat() * 0.2F); @@ -86,26 +91,52 @@ public class XFactoryEnergy { } }; + public static BiConsumer LAMBDA_IR_HIT = (beam, mop) -> { + BulletConfig.LAMBDA_STANDARD_BEAM_HIT.accept(beam, mop); + + if(mop.typeOfHit == mop.typeOfHit.ENTITY) { + if(mop.entityHit instanceof EntityLivingBase) { + EntityLivingBase living = (EntityLivingBase) mop.entityHit; + HbmLivingProps props = HbmLivingProps.getData(living); + if(props.fire < 100) props.fire = 100; + } + } + + if(mop.typeOfHit == mop.typeOfHit.BLOCK) { + World world = beam.worldObj; + Block b = world.getBlock(mop.blockX, mop.blockY, mop.blockZ); + ForgeDirection dir = ForgeDirection.getOrientation(mop.sideHit); + if(b.isFlammable(world, mop.blockX, mop.blockY, mop.blockZ, dir.getOpposite())) { + if(world.getBlock(mop.blockX + dir.offsetX, mop.blockY + dir.offsetY, mop.blockZ + dir.offsetZ).isAir(world, mop.blockX + dir.offsetX, mop.blockY + dir.offsetY, mop.blockZ + dir.offsetZ)) { + world.setBlock(mop.blockX + dir.offsetX, mop.blockY + dir.offsetY, mop.blockZ + dir.offsetZ, Blocks.fire); + return; + } + } + + EntityFireLingering fire = new EntityFireLingering(beam.worldObj).setArea(2, 1).setDuration(100).setType(EntityFireLingering.TYPE_DIESEL); + fire.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); + beam.worldObj.spawnEntityInWorld(fire); + } + }; + public static void init() { - energy_tesla = new BulletConfig().setItem(EnumAmmo.CAPACITOR).setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true) + energy_tesla = new BulletConfig().setItem(EnumAmmo.CAPACITOR).setupDamageClass(DamageClass.ELECTRIC).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true) .setOnBeamImpact(LAMBDA_LIGHTNING_HIT); - energy_tesla_overcharge = new BulletConfig().setItem(EnumAmmo.CAPACITOR_OVERCHARGE).setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true) + energy_tesla_overcharge = new BulletConfig().setItem(EnumAmmo.CAPACITOR_OVERCHARGE).setupDamageClass(DamageClass.ELECTRIC).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true) .setDamage(1.5F).setOnBeamImpact(LAMBDA_LIGHTNING_HIT); - energy_tesla_blacklightning = new BulletConfig().setItem(EnumAmmo.CAPACITOR_BLACKLIGHTNING).setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true) - .setDamage(5F).setOnBeamImpact(LAMBDA_LIGHTNING_HIT); - energy_las = new BulletConfig().setItem(EnumAmmo.CAPACITOR).setSpread(0.0F).setLife(5).setRenderRotations(false).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); - energy_las_overcharge = new BulletConfig().setItem(EnumAmmo.CAPACITOR_OVERCHARGE).setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); - energy_las_blacklightning = new BulletConfig().setItem(EnumAmmo.CAPACITOR_BLACKLIGHTNING).setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); + energy_las = new BulletConfig().setItem(EnumAmmo.CAPACITOR).setupDamageClass(DamageClass.LASER).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); + energy_las_overcharge = new BulletConfig().setItem(EnumAmmo.CAPACITOR_OVERCHARGE).setupDamageClass(DamageClass.LASER).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); + energy_las_ir = new BulletConfig().setItem(EnumAmmo.CAPACITOR_IR).setupDamageClass(DamageClass.FIRE).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setOnBeamImpact(LAMBDA_IR_HIT); ModItems.gun_tesla_cannon = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(2_000).draw(10).inspect(33).reloadSequential(true).crosshair(Crosshair.CIRCLE) .rec(new Receiver(0) - .dmg(15F).delay(20).reload(44).jam(19).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) - .mag(new MagazineBelt().addConfigs(energy_tesla, energy_tesla_overcharge, energy_tesla_blacklightning)) + .dmg(35F).delay(20).reload(44).jam(19).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .mag(new MagazineBelt().addConfigs(energy_tesla, energy_tesla_overcharge)) .offset(0.75, 0, -0.375) - .setupBeamFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) + .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) .setupStandardConfiguration() .anim(LAMBDA_TESLA_ANIMS).orchestra(Orchestras.ORCHESTRA_TESLA) ).setUnlocalizedName("gun_tesla_cannon"); @@ -113,10 +144,10 @@ public class XFactoryEnergy { ModItems.gun_lasrifle = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(2_000).draw(10).inspect(26).reloadSequential(true).crosshair(Crosshair.CIRCLE).scopeTexture(scope_luna) .rec(new Receiver(0) - .dmg(15F).delay(8).reload(44).jam(36).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) - .mag(new MagazineFullReload(0, 24).addConfigs(energy_las, energy_las_overcharge, energy_las_blacklightning)) + .dmg(50F).delay(8).reload(44).jam(36).sound("hbm:weapon.fire.laser", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 24).addConfigs(energy_las, energy_las_overcharge, energy_las_ir)) .offset(0.75, -0.0625 * 1.5, -0.1875) - .setupBeamFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) + .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) .setupStandardConfiguration() .anim(LAMBDA_LASRIFLE).orchestra(Orchestras.ORCHESTRA_LASRIFLE) ).setUnlocalizedName("gun_lasrifle"); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java index 818c28f0d..57828b6ad 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java @@ -26,6 +26,7 @@ import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationSequence; import com.hbm.render.anim.BusAnimationKeyframe.IType; import com.hbm.render.anim.HbmAnimations.AnimType; +import com.hbm.util.DamageResistanceHandler.DamageClass; import net.minecraft.block.Block; import net.minecraft.entity.Entity; @@ -43,7 +44,16 @@ public class XFactoryFlamer { public static BulletConfig flame_gas; public static BulletConfig flame_napalm; public static BulletConfig flame_balefire; - public static BulletConfig flame_digamma; + + public static BulletConfig flame_topaz_diesel; + public static BulletConfig flame_topaz_gas; + public static BulletConfig flame_topaz_napalm; + public static BulletConfig flame_topaz_balefire; + + public static BulletConfig flame_daybreaker_diesel; + public static BulletConfig flame_daybreaker_gas; + public static BulletConfig flame_daybreaker_napalm; + public static BulletConfig flame_daybreaker_balefire; public static Consumer LAMBDA_FIRE = (bullet) -> { if(bullet.worldObj.isRemote && MainRegistry.proxy.me().getDistanceToEntity(bullet) < 100) FlameCreator.composeEffectClient(bullet.worldObj, bullet.posX, bullet.posY - 0.125, bullet.posZ, FlameCreator.META_FIRE); @@ -98,21 +108,59 @@ public class XFactoryFlamer { } public static void init() { - flame_diesel = new BulletConfig().setItem(EnumAmmo.FLAME_DIESEL).setLife(100).setVel(1F).setGrav(0.02D).setReloadCount(300).setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_DIESEL); - flame_gas = new BulletConfig().setItem(EnumAmmo.FLAME_GAS).setLife(10).setSpread(0.05F).setVel(1F).setGrav(0.0D).setReloadCount(300).setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_GAS); - flame_napalm = new BulletConfig().setItem(EnumAmmo.FLAME_NAPALM).setLife(200).setVel(1F).setGrav(0.02D).setReloadCount(300).setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_NAPALM); - flame_balefire = new BulletConfig().setItem(EnumAmmo.FLAME_BALEFIRE).setLife(200).setVel(1F).setGrav(0.02D).setReloadCount(300).setOnUpdate(LAMBDA_BALEFIRE).setOnRicochet(LAMBDA_LINGER_BALEFIRE); + flame_diesel = new BulletConfig().setItem(EnumAmmo.FLAME_DIESEL).setupDamageClass(DamageClass.FIRE).setLife(100).setVel(1F).setGrav(0.02D).setReloadCount(500).setSelfDamageDelay(20).setKnockback(0F) + .setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_DIESEL); + flame_gas = new BulletConfig().setItem(EnumAmmo.FLAME_GAS).setupDamageClass(DamageClass.FIRE).setLife(10).setSpread(0.05F).setVel(1F).setGrav(0.0D).setReloadCount(500).setSelfDamageDelay(20).setKnockback(0F) + .setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_GAS); + flame_napalm = new BulletConfig().setItem(EnumAmmo.FLAME_NAPALM).setupDamageClass(DamageClass.FIRE).setLife(200).setVel(1F).setGrav(0.02D).setReloadCount(500).setSelfDamageDelay(20).setKnockback(0F) + .setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_NAPALM); + flame_balefire = new BulletConfig().setItem(EnumAmmo.FLAME_BALEFIRE).setupDamageClass(DamageClass.FIRE).setLife(200).setVel(1F).setGrav(0.02D).setReloadCount(500).setSelfDamageDelay(20).setKnockback(0F) + .setOnUpdate(LAMBDA_BALEFIRE).setOnRicochet(LAMBDA_LINGER_BALEFIRE); + + flame_topaz_diesel = flame_diesel .clone().setProjectiles(2).setSpread(0.05F).setLife(60).setGrav(0.0D); + flame_topaz_gas = flame_gas .clone().setProjectiles(2).setSpread(0.05F); + flame_topaz_napalm = flame_napalm .clone().setProjectiles(2).setSpread(0.05F).setLife(60).setGrav(0.0D); + flame_topaz_balefire = flame_balefire .clone().setProjectiles(2).setSpread(0.05F).setLife(60).setGrav(0.0D); + + flame_daybreaker_diesel = flame_diesel.clone().setLife(200).setVel(2F).setGrav(0.035D) + .setOnImpact((bullet, mop) -> { Lego.standardExplode(bullet, mop, 5F); spawnFire(bullet, mop, 6F, 2F, 200, EntityFireLingering.TYPE_DIESEL); bullet.setDead(); }); + flame_daybreaker_gas = flame_gas.clone().setLife(200).setVel(2F).setGrav(0.035D) + .setOnImpact((bullet, mop) -> { Lego.standardExplode(bullet, mop, 5F); bullet.setDead(); }); + flame_daybreaker_napalm = flame_napalm.clone().setLife(200).setVel(2F).setGrav(0.035D) + .setOnImpact((bullet, mop) -> { Lego.standardExplode(bullet, mop, 7.5F); spawnFire(bullet, mop, 6F, 2F, 300, EntityFireLingering.TYPE_DIESEL); bullet.setDead(); }); + flame_daybreaker_balefire = flame_balefire.clone().setLife(200).setVel(2F).setGrav(0.035D) + .setOnImpact((bullet, mop) -> { Lego.standardExplode(bullet, mop, 5F); spawnFire(bullet, mop, 7.5F, 2.5F, 400, EntityFireLingering.TYPE_BALEFIRE); bullet.setDead(); }); ModItems.gun_flamer = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() - .dura(20_000).draw(10).inspect(17).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) + .dura(20_000).draw(10).inspect(17).crosshair(Crosshair.L_CIRCLE) .rec(new Receiver(0) - .dmg(10F).delay(1).auto(true).reload(90).jam(17) + .dmg(1F).delay(1).auto(true).reload(90).jam(17) .mag(new MagazineFullReload(0, 300).addConfigs(flame_diesel, flame_gas, flame_napalm, flame_balefire)) .offset(0.75, -0.0625, -0.25D) - .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) + .setupStandardFire()) .setupStandardConfiguration() .anim(LAMBDA_FLAMER_ANIMS).orchestra(Orchestras.ORCHESTRA_FLAMER) ).setUnlocalizedName("gun_flamer"); + ModItems.gun_flamer_topaz = new ItemGunBaseNT(WeaponQuality.B_SIDE, new GunConfig() + .dura(20_000).draw(10).inspect(17).crosshair(Crosshair.L_CIRCLE) + .rec(new Receiver(0) + .dmg(1.5F).delay(1).auto(true).reload(90).jam(17) + .mag(new MagazineFullReload(0, 500).addConfigs(flame_topaz_diesel, flame_topaz_gas, flame_topaz_napalm, flame_topaz_balefire)) + .offset(0.75, -0.0625, -0.25D) + .setupStandardFire()) + .setupStandardConfiguration() + .anim(LAMBDA_FLAMER_ANIMS).orchestra(Orchestras.ORCHESTRA_FLAMER) + ).setUnlocalizedName("gun_flamer_topaz"); + ModItems.gun_flamer_daybreaker = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() + .dura(20_000).draw(10).inspect(17).crosshair(Crosshair.L_CIRCLE) + .rec(new Receiver(0) + .dmg(25F).delay(10).auto(true).reload(90).jam(17).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 50).addConfigs(flame_daybreaker_diesel, flame_daybreaker_gas, flame_daybreaker_napalm, flame_daybreaker_balefire)) + .offset(0.75, -0.0625, -0.25D) + .setupStandardFire()) + .setupStandardConfiguration() + .anim(LAMBDA_FLAMER_ANIMS).orchestra(Orchestras.ORCHESTRA_FLAMER_DAYBREAKER) + ).setUnlocalizedName("gun_flamer_daybreaker"); ModItems.gun_chemthrower = new ItemGunChemthrower(WeaponQuality.A_SIDE, new GunConfig() .dura(90_000).draw(10).inspect(17).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java new file mode 100644 index 000000000..f30adfc2a --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java @@ -0,0 +1,149 @@ +package com.hbm.items.weapon.sedna.factory; + +import java.util.List; +import java.util.function.BiConsumer; +import java.util.function.BiFunction; +import java.util.function.Consumer; + +import com.hbm.entity.effect.EntityNukeTorex; +import com.hbm.entity.logic.EntityNukeExplosionMK5; +import com.hbm.entity.projectile.EntityBulletBaseMK4; +import com.hbm.entity.projectile.EntityBulletBeamBase; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.Crosshair; +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret; +import com.hbm.items.weapon.sedna.mags.MagazineSingleReload; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.BusAnimationKeyframe.IType; +import com.hbm.render.anim.HbmAnimations.AnimType; +import com.hbm.util.ContaminationUtil; +import com.hbm.util.EntityDamageUtil; +import com.hbm.util.Vec3NT; +import com.hbm.util.ContaminationUtil.ContaminationType; +import com.hbm.util.ContaminationUtil.HazardType; +import com.hbm.util.DamageResistanceHandler.DamageClass; + +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.entity.Entity; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MovingObjectPosition; + +public class XFactoryFolly { + + public static BulletConfig folly_sm; + public static BulletConfig folly_nuke; + + public static Consumer LAMBDA_SM_UPDATE = (entity) -> { + if(entity.worldObj.isRemote) return; + EntityBulletBeamBase beam = (EntityBulletBeamBase) entity; + Vec3NT dir = new Vec3NT(beam.headingX, beam.headingY, beam.headingZ).normalizeSelf(); + + if(beam.ticksExisted < 50) { + double spacing = 10; + double dist = beam.ticksExisted * spacing; + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "plasmablast"); + data.setFloat("r", 0.75F); + data.setFloat("g", 0.75F); + data.setFloat("b", 0.75F); + data.setFloat("pitch", (float) beam.rotationPitch + 90); + data.setFloat("yaw", (float) -beam.rotationYaw); + data.setFloat("scale", 2F + beam.ticksExisted / (float)(beam.beamLength / spacing) * 3F); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, beam.posX + dir.xCoord * dist, beam.posY + dir.yCoord * dist, beam.posZ + dir.zCoord * dist), new TargetPoint(beam.dimension, beam.posX, beam.posY, beam.posZ, 250)); + } + + if(entity.ticksExisted != 2) return; + + if(beam.thrower != null) ContaminationUtil.contaminate(beam.thrower, HazardType.RADIATION, ContaminationType.CREATIVE, 150F); + + List entities = beam.worldObj.getEntitiesWithinAABBExcludingEntity(beam, beam.boundingBox.addCoord(beam.headingX, beam.headingY, beam.headingZ).expand(1.0D, 1.0D, 1.0D)); + + for(int i = 1; i < beam.beamLength; i += 2) { + int x = (int) Math.floor(beam.posX + dir.xCoord * i); + int y = (int) Math.floor(beam.posY + dir.yCoord * i); + int z = (int) Math.floor(beam.posZ + dir.zCoord * i); + + for(int ix = x - 1; ix <= x + 1; ix++) for(int iy = y - 1; iy <= y + 1; iy++) for(int iz = z - 1; iz <= z + 1; iz++) { + if(iy > 0 && iy < 256) beam.worldObj.setBlock(ix, iy, iz, Blocks.air); + AxisAlignedBB aabb = AxisAlignedBB.getBoundingBox(ix - 1, iy - 1, iz - 1, ix + 2, iy + 2, iz + 2); + for(Entity e : entities) if(e != beam.thrower && e.boundingBox.intersectsWith(aabb)) EntityDamageUtil.attackEntityFromIgnoreIFrame(e, beam.config.getDamage(beam, beam.thrower, beam.config.dmgClass), beam.damage); + } + } + }; + + public static BiConsumer LAMBDA_NUKE_IMPACT = (bullet, mop) -> { + if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 2) return; + if(bullet.isDead) return; + bullet.setDead(); + bullet.worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(bullet.worldObj, 100, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord)); + EntityNukeTorex.statFac(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 100); + }; + + public static void init() { + + folly_sm = new BulletConfig().setItem(EnumAmmoSecret.FOLLY_SM).setupDamageClass(DamageClass.SUBATOMIC).setBeam().setLife(100).setVel(2F).setGrav(0.015D).setRenderRotations(false).setSpectral(true).setDoesPenetrate(true) + .setOnUpdate(LAMBDA_SM_UPDATE); + folly_nuke = new BulletConfig().setItem(EnumAmmoSecret.FOLLY_NUKE).setChunkloading().setLife(600).setVel(4F).setGrav(0.015D) + .setOnImpact(LAMBDA_NUKE_IMPACT); + + ModItems.gun_folly = new ItemGunBaseNT(WeaponQuality.SECRET, new GunConfig() + .dura(0).draw(40).crosshair(Crosshair.NONE) + .rec(new Receiver(0) + .dmg(1_000F).delay(26).dryfire(false).reload(160).jam(0).sound("hbm:weapon.fire.loudestNoiseOnEarth", 100.0F, 1.0F) + .mag(new MagazineSingleReload(0, 1).addConfigs(folly_sm, folly_nuke)) + .offset(0.75, -0.0625, -0.1875D) + .canFire(LAMBDA_CAN_FIRE).fire(LAMBDA_FIRE).recoil(Lego.LAMBDA_STANDARD_RECOIL)) + .setupStandardConfiguration().pt(LAMBDA_TOGGLE_AIM) + .anim(LAMBDA_FOLLY_ANIMS).orchestra(Orchestras.ORCHESTRA_FOLLY) + ).setUnlocalizedName("gun_folly"); + } + + public static BiConsumer LAMBDA_TOGGLE_AIM = (stack, ctx) -> { + if(ItemGunBaseNT.getState(stack, ctx.configIndex) == GunState.IDLE) { + boolean wasAiming = ItemGunBaseNT.getIsAiming(stack); + ItemGunBaseNT.setIsAiming(stack, !wasAiming); + if(!wasAiming) ItemGunBaseNT.playAnimation(ctx.getPlayer(), stack, AnimType.SPINUP, ctx.configIndex); + } + }; + + public static BiConsumer LAMBDA_FIRE = (stack, ctx) -> { + Lego.doStandardFire(stack, ctx, AnimType.CYCLE, false); + }; + + public static BiFunction LAMBDA_CAN_FIRE = (stack, ctx) -> { + if(!ItemGunBaseNT.getIsAiming(stack)) return false; + if(ItemGunBaseNT.getLastAnim(stack, ctx.configIndex) != AnimType.SPINUP) return false; + if(ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex) < 100) return false; + return ctx.config.getReceivers(stack)[0].getMagazine(stack).getAmount(stack, ctx.inventory) > 0; + }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_FOLLY_ANIMS = (stack, type) -> { + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(-60, 0, 0, 0).addPos(5, 0, 0, 1500, IType.SIN_DOWN).addPos(0, 0, 0, 500, IType.SIN_FULL)); + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, -4.5, 50).addPos(0, 0, -4.5, 500).addPos(0, 0, 0, 500, IType.SIN_UP)) + .addBus("LOAD", new BusAnimationSequence().addPos(0, 0, 0, 50).addPos(-25, 0, 0, 250, IType.SIN_DOWN).addPos(0, 0, 0, 1000, IType.SIN_FULL)); + case RELOAD: return new BusAnimation() + .addBus("LOAD", new BusAnimationSequence().addPos(60, 0, 0, 1000, IType.SIN_FULL).addPos(60, 0, 0, 6000).addPos(0, 0, 0, 1000, IType.SIN_FULL)) + .addBus("SCREW", new BusAnimationSequence().addPos(0, 0, 0, 1000).addPos(0, 0, -135, 1000, IType.SIN_FULL).addPos(0, 0, -135, 4000).addPos(0, 0, 0, 1000, IType.SIN_FULL)) + .addBus("BREECH", new BusAnimationSequence().addPos(0, 0, 0, 1000).addPos(0, 0, -0.5, 1000, IType.SIN_FULL).addPos(0, -4, -0.5, 1000, IType.SIN_FULL).addPos(0, -4, -0.5, 2000).addPos(0, 0, -0.5, 1000, IType.SIN_FULL).addPos(0, 0, 0, 1000, IType.SIN_FULL)) + .addBus("SHELL", new BusAnimationSequence().addPos(0, -4, -4.5, 0).addPos(0, -4, -4.5, 3000).addPos(0, 0, -4.5, 1000, IType.SIN_FULL).addPos(0, 0, 0, 500, IType.SIN_UP)); + } + + return null; + }; +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryRocket.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryRocket.java index cbf9b835e..9ba444475 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryRocket.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryRocket.java @@ -30,8 +30,11 @@ import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationSequence; import com.hbm.render.anim.BusAnimationKeyframe.IType; import com.hbm.render.anim.HbmAnimations.AnimType; +import com.hbm.util.EntityDamageUtil; +import com.hbm.util.DamageResistanceHandler.DamageClass; import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; @@ -82,7 +85,13 @@ public class XFactoryRocket { }; public static BiConsumer LAMBDA_STANDARD_EXPLODE_HEAT = (bullet, mop) -> { if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return; - Lego.standardExplode(bullet, mop, 2.5F); bullet.setDead(); + Lego.standardExplode(bullet, mop, 3.5F); bullet.setDead(); + if(mop.typeOfHit == mop.typeOfHit.ENTITY && mop.entityHit instanceof EntityLivingBase) { + EntityLivingBase living = (EntityLivingBase) mop.entityHit; + EntityDamageUtil.attackEntityFromNT(living, bullet.config.getDamage(bullet, bullet.getThrower(), DamageClass.EXPLOSIVE), bullet.damage * 3F, true, true, 0.5F, 5F, 0.2F); + } else if(mop.typeOfHit == mop.typeOfHit.ENTITY) { + mop.entityHit.attackEntityFrom(bullet.config.getDamage(bullet, bullet.getThrower(), DamageClass.EXPLOSIVE), bullet.damage * 3F); + } }; public static BiConsumer LAMBDA_STANDARD_EXPLODE_DEMO = (bullet, mop) -> { if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return; @@ -96,10 +105,17 @@ public class XFactoryRocket { bullet.setDead(); }; public static BiConsumer LAMBDA_STANDARD_EXPLODE_INC = (bullet, mop) -> { + spawnFire(bullet, mop, false, 300); + }; + public static BiConsumer LAMBDA_STANDARD_EXPLODE_PHOSPHORUS = (bullet, mop) -> { + spawnFire(bullet, mop, true, 600); + }; + + public static void spawnFire(EntityBulletBaseMK4 bullet, MovingObjectPosition mop, boolean phosphorus, int duration) { if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return; World world = bullet.worldObj; Lego.standardExplode(bullet, mop, 3F); - EntityFireLingering fire = new EntityFireLingering(world).setArea(6, 2).setDuration(300).setType(EntityFireLingering.TYPE_DIESEL); + EntityFireLingering fire = new EntityFireLingering(world).setArea(6, 2).setDuration(duration).setType(phosphorus ? EntityFireLingering.TYPE_PHOSPHORUS : EntityFireLingering.TYPE_DIESEL); fire.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); world.spawnEntityInWorld(fire); bullet.setDead(); @@ -118,7 +134,7 @@ public class XFactoryRocket { } } } - }; + } public static BulletConfig makeRPZB(BulletConfig original) { return original.clone(); } public static BulletConfig makeQD(BulletConfig original) { return original.clone().setLife(400).setOnUpdate(LAMBDA_STEERING_ACCELERATE); } @@ -127,14 +143,15 @@ public class XFactoryRocket { //this is starting to get messy but we need to put this crap *somewhere* and fragmenting it into a billion classes with two methods each just isn't gonna help public static void init() { - rocket_template = new BulletConfig[4]; + rocket_template = new BulletConfig[5]; BulletConfig baseRocket = new BulletConfig().setLife(300).setSelfDamageDelay(10).setVel(0F).setGrav(0D).setOnEntityHit(null).setOnRicochet(null).setOnUpdate(LAMBDA_STANDARD_ACCELERATE); rocket_template[0] = baseRocket.clone().setItem(EnumAmmo.ROCKET_HE).setOnImpact(LAMBDA_STANDARD_EXPLODE); - rocket_template[1] = baseRocket.clone().setItem(EnumAmmo.ROCKET_HEAT).setDamage(1.5F).setOnImpact(LAMBDA_STANDARD_EXPLODE_HEAT); - rocket_template[2] = baseRocket.clone().setItem(EnumAmmo.ROCKET_DEMO).setDamage(0.5F).setOnImpact(LAMBDA_STANDARD_EXPLODE_DEMO); + rocket_template[1] = baseRocket.clone().setItem(EnumAmmo.ROCKET_HEAT).setDamage(0.5F).setOnImpact(LAMBDA_STANDARD_EXPLODE_HEAT); + rocket_template[2] = baseRocket.clone().setItem(EnumAmmo.ROCKET_DEMO).setDamage(0.75F).setOnImpact(LAMBDA_STANDARD_EXPLODE_DEMO); rocket_template[3] = baseRocket.clone().setItem(EnumAmmo.ROCKET_INC).setDamage(0.75F).setOnImpact(LAMBDA_STANDARD_EXPLODE_INC); + rocket_template[4] = baseRocket.clone().setItem(EnumAmmo.ROCKET_PHOSPHORUS).setDamage(0.75F).setOnImpact(LAMBDA_STANDARD_EXPLODE_PHOSPHORUS); rocket_rpzb = new BulletConfig[rocket_template.length]; rocket_qd = new BulletConfig[rocket_template.length]; @@ -160,7 +177,7 @@ public class XFactoryRocket { ModItems.gun_stinger = new ItemGunStinger(WeaponQuality.A_SIDE, new GunConfig() .dura(300).draw(7).inspect(40).crosshair(Crosshair.L_BOX_OUTLINE) .rec(new Receiver(0) - .dmg(25F).delay(5).reload(50).jam(40).sound("hbm:weapon.rpgShoot", 1.0F, 1.0F) + .dmg(35F).delay(5).reload(50).jam(40).sound("hbm:weapon.rpgShoot", 1.0F, 1.0F) .mag(new MagazineSingleReload(0, 1).addConfigs(rocket_rpzb)) .offset(1, -0.0625 * 1.5, -0.1875D) .setupLockonFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -171,7 +188,7 @@ public class XFactoryRocket { ModItems.gun_quadro = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(400).draw(7).inspect(40).crosshair(Crosshair.L_CIRCUMFLEX).hideCrosshair(false) .rec(new Receiver(0) - .dmg(25F).delay(10).reload(55).jam(40).sound("hbm:weapon.rpgShoot", 1.0F, 1.0F) + .dmg(40F).delay(10).reload(55).jam(40).sound("hbm:weapon.rpgShoot", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 4).addConfigs(rocket_qd)) .offset(1, -0.0625 * 1.5, -0.1875D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -182,7 +199,7 @@ public class XFactoryRocket { ModItems.gun_missile_launcher = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(500).draw(20).inspect(40).crosshair(Crosshair.L_CIRCUMFLEX).hideCrosshair(false) .rec(new Receiver(0) - .dmg(25F).delay(5).reload(48).jam(33).sound("hbm:weapon.rpgShoot", 1.0F, 1.0F) + .dmg(50F).delay(5).reload(48).jam(33).sound("hbm:weapon.rpgShoot", 1.0F, 1.0F) .mag(new MagazineSingleReload(0, 1).addConfigs(rocket_ml)) .offset(1, -0.0625 * 1.5, -0.1875D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryTurret.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryTurret.java new file mode 100644 index 000000000..0c5e332aa --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryTurret.java @@ -0,0 +1,48 @@ +package com.hbm.items.weapon.sedna.factory; + +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; +import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; +import com.hbm.explosion.vanillant.standard.EntityProcessorCrossSmooth; +import com.hbm.explosion.vanillant.standard.ExplosionEffectWeapon; +import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; +import com.hbm.items.ModItems; +import com.hbm.items.ItemAmmoEnums.Ammo240Shell; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; + +import net.minecraft.item.ItemStack; + +public class XFactoryTurret { + + public static BulletConfig dgk_normal; + + public static SpentCasing CASINNG240MM = new SpentCasing(CasingType.BOTTLENECK).setScale(7.5F).setBounceMotion(0.02F, 0.05F).setColor(SpentCasing.COLOR_CASE_BRASS).setupSmoke(1F, 0.5D, 60, 20); + public static BulletConfig shell_normal; + public static BulletConfig shell_explosive; + public static BulletConfig shell_ap; + public static BulletConfig shell_du; + public static BulletConfig shell_w9; + + public static void init() { + dgk_normal = new BulletConfig().setItem(new ItemStack(ModItems.ammo_dgk)); + + shell_normal = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.STOCK)).setDamage(1F).setCasing(CASINNG240MM.clone().register("240standard")).setOnImpact((bullet, mop) -> { + Lego.standardExplode(bullet, mop, 10F); bullet.setDead(); + }); + shell_explosive = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.EXPLOSIVE)).setDamage(1.5F).setCasing(CASINNG240MM.clone().register("240ext")).setOnImpact((bullet, mop) -> { + ExplosionVNT vnt = new ExplosionVNT(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 10F); + vnt.setBlockAllocator(new BlockAllocatorStandard()); + vnt.setBlockProcessor(new BlockProcessorStandard()); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, bullet.damage)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectWeapon(10, 2.5F, 1F)); + vnt.explode(); + bullet.setDead(); + }); + shell_ap = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.APFSDS_T)).setDamage(2F).setDoesPenetrate(true).setCasing(CASINNG240MM.clone().register("240w")); + shell_du = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.APFSDS_DU)).setDamage(2.5F).setDoesPenetrate(true).setDamageFalloutByPen(false).setCasing(CASINNG240MM.clone().register("240u")); + shell_w9 = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.W9)).setDamage(2.5F).setCasing(CASINNG240MM.clone().register("240n")).setOnImpact(XFactoryCatapult.LAMBDA_NUKE_STANDARD); + } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/hud/HUDComponentAmmoCounter.java b/src/main/java/com/hbm/items/weapon/sedna/hud/HUDComponentAmmoCounter.java index c8ccd0eb7..90398bda4 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/hud/HUDComponentAmmoCounter.java +++ b/src/main/java/com/hbm/items/weapon/sedna/hud/HUDComponentAmmoCounter.java @@ -47,6 +47,7 @@ public class HUDComponentAmmoCounter implements IHUDComponent { @Override public void renderHUDComponent(Pre event, ElementType type, EntityPlayer player, ItemStack stack, int bottomOffset, int gunIndex) { + if(type != type.HOTBAR) return; ScaledResolution resolution = event.resolution; Minecraft mc = Minecraft.getMinecraft(); diff --git a/src/main/java/com/hbm/items/weapon/sedna/hud/HUDComponentDurabilityBar.java b/src/main/java/com/hbm/items/weapon/sedna/hud/HUDComponentDurabilityBar.java index 0afc6462e..d7160bfd3 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/hud/HUDComponentDurabilityBar.java +++ b/src/main/java/com/hbm/items/weapon/sedna/hud/HUDComponentDurabilityBar.java @@ -33,7 +33,8 @@ public class HUDComponentDurabilityBar implements IHUDComponent { @Override public void renderHUDComponent(Pre event, ElementType type, EntityPlayer player, ItemStack stack, int bottomOffset, int gunIndex) { - + + if(type != type.HOTBAR) return; ScaledResolution resolution = event.resolution; Minecraft mc = Minecraft.getMinecraft(); diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 28408b7fa..c5e05c5c5 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -269,6 +269,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineLPW2.class, new RenderLPW2()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePress.class, new RenderPress()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineEPress.class, new RenderEPress()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineAmmoPress.class, new RenderAmmoPress()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadGen.class, new RenderRadGen()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarNT.class, new RenderRadar()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarLarge.class, new RenderRadarLarge()); @@ -531,72 +532,10 @@ public class ClientProxy extends ServerProxy { MinecraftForgeClient.registerItemRenderer(ModItems.chainsaw, new ItemRenderChainsaw()); MinecraftForgeClient.registerItemRenderer(ModItems.boltgun, new ItemRenderBoltgun()); //guns - MinecraftForgeClient.registerItemRenderer(ModItems.gun_rpg, new ItemRenderRpg()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_karl, new ItemRenderRpg()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_skystinger, new ItemRenderStinger()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver, new ItemRenderWeaponFFColt(ResourceManager.ff_gun_bright, ResourceManager.ff_iron, ResourceManager.ff_wood)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_saturnite, new ItemRenderWeaponFFColt(ResourceManager.ff_saturnite, ResourceManager.ff_iron, ResourceManager.ff_wood)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_gold, new ItemRenderWeaponFFColt(ResourceManager.ff_gold, ResourceManager.ff_gold, ResourceManager.ff_gun_dark)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_schrabidium, new ItemRenderWeaponFFColt(ResourceManager.ff_schrabidium, ResourceManager.ff_schrabidium, ResourceManager.ff_gun_dark)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_cursed, new ItemRenderWeaponFFCursed()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_nightmare, new ItemRenderWeaponFFNightmare()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_nightmare2, new ItemRenderWeaponFFNightmareDark()); - 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 ItemRenderWeaponTau()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_zomg, new ItemRenderZOMG()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_osipr, new ItemRenderOSIPR()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_mp, new ItemRenderMP()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_inverted, new ItemRenderRevolverInverted()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_mp40, new ItemRenderMP40()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_emp, new ItemRenderEMPRay()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_immolator, new ItemRenderImmolator()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_cryolator, new ItemRenderCryolator()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_uboinik, new ItemRenderUboinik()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_jack, new ItemRenderOverkill()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_spark, new ItemRenderOverkill()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_hp, new ItemRenderOverkill()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_euthanasia, new ItemRenderOverkill()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_defabricator, new ItemRenderOverkill()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_lever_action, new ItemRenderWeaponFFMaresLeg(ResourceManager.ff_gun_bright, ResourceManager.ff_wood)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolt_action, new ItemRenderWeaponFFBolt(ResourceManager.rem700, ResourceManager.rem700_tex)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_lever_action_dark, new ItemRenderWeaponFFMaresLeg(ResourceManager.ff_gun_normal, ResourceManager.ff_wood_red)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolt_action_green, new ItemRenderWeaponFFBolt(ResourceManager.rem700poly, ResourceManager.rem700poly_tex)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_lever_action_sonata, new ItemRenderGunAnim()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolt_action_saturnite, new ItemRenderGunAnim()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolt_action_saturnite, new ItemRenderWeaponFFBolt(ResourceManager.rem700sat, ResourceManager.rem700sat_tex)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_b92, new ItemRenderGunAnim()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_b93, new ItemRenderGunAnim()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi_silencer, new ItemRenderUZI()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi_saturnite, new ItemRenderUZI()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi_saturnite_silencer, new ItemRenderUZI()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_calamity, new ItemRenderWeaponFFMG42()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_lacunae, new ItemRenderOverkill()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_folly, new ItemRenderOverkill()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_hk69, new ItemRenderWeaponObj()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_bio_revolver, new ItemRenderBioRevolver()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_deagle, new ItemRenderWeaponObj()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_supershotgun, new ItemRenderWeaponShotty()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_ks23, new ItemRenderWeaponKS23()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_flechette, new ItemRenderWeaponObj()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_vortex, new ItemRenderWeaponVortex()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_thompson, new ItemRenderWeaponThompson()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolter_digamma, new ItemRenderWeaponBolter()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_fireext, new ItemRenderFireExt()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_ar15, new ItemRenderWeaponAR15()); - MinecraftForgeClient.registerItemRenderer(ModItems.detonator_laser, new ItemRenderDetonatorLaser()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_remington, new ItemRenderWeaponRemington()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_glass_cannon, new ItemRenderWeaponGlass()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_nopip, new ItemRenderWeaponNovac()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_pip, new ItemRenderWeaponLilMac()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_blackjack, new ItemRenderWeaponNovac()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_silver, new ItemRenderWeaponNovac()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_red, new ItemRenderWeaponNovac()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_lunatic_marksman, new ItemRenderLunaticSniper()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_benelli, new ItemRenderBenelli()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_uac_pistol, new ItemRenderUACPistol()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_cryocannon, new ItemRenderWeaponCryoCannon()); + MinecraftForgeClient.registerItemRenderer(ModItems.detonator_laser, new ItemRenderDetonatorLaser()); //multitool MinecraftForgeClient.registerItemRenderer(ModItems.multitool_dig, new ItemRenderMultitool()); MinecraftForgeClient.registerItemRenderer(ModItems.multitool_silk, new ItemRenderMultitool()); @@ -620,6 +559,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityBullet.class, new RenderRocket()); RenderingRegistry.registerEntityRenderingHandler(EntityBulletBaseNT.class, new RenderBullet()); RenderingRegistry.registerEntityRenderingHandler(EntityBulletBaseMK4.class, new RenderBulletMK4()); + RenderingRegistry.registerEntityRenderingHandler(EntityBulletBaseMK4CL.class, new RenderBulletMK4()); RenderingRegistry.registerEntityRenderingHandler(EntityBulletBeamBase.class, new RenderBeam()); RenderingRegistry.registerEntityRenderingHandler(EntityRainbow.class, new RenderRainbow()); RenderingRegistry.registerEntityRenderingHandler(EntityLaserBeam.class, new RenderBeam2()); @@ -635,6 +575,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityDuchessGambit.class, new RenderBoxcar()); RenderingRegistry.registerEntityRenderingHandler(EntityBuilding.class, new RenderBoxcar()); RenderingRegistry.registerEntityRenderingHandler(EntityBomber.class, new RenderBomber()); + RenderingRegistry.registerEntityRenderingHandler(EntityC130.class, new RenderC130()); RenderingRegistry.registerEntityRenderingHandler(EntityBurningFOEQ.class, new RenderFOEQ()); RenderingRegistry.registerEntityRenderingHandler(EntityFallingNuke.class, new RenderFallingNuke()); RenderingRegistry.registerEntityRenderingHandler(EntityMinerRocket.class, new RenderMinerRocket()); @@ -733,6 +674,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityMissileDoomsdayRusted.class, new RenderMissileNuclear()); RenderingRegistry.registerEntityRenderingHandler(EntitySoyuz.class, new RenderSoyuz()); RenderingRegistry.registerEntityRenderingHandler(EntitySoyuzCapsule.class, new RenderSoyuzCapsule()); + RenderingRegistry.registerEntityRenderingHandler(EntityParachuteCrate.class, new RenderParachuteCrate()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileTaint.class, new RenderMissileTaint()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileMicro.class, new RenderMissileTaint()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileBHole.class, new RenderMissileTaint()); @@ -809,6 +751,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityFBIDrone.class, new RenderDrone()); RenderingRegistry.registerEntityRenderingHandler(EntityPlasticBag.class, new RenderPlasticBag()); RenderingRegistry.registerEntityRenderingHandler(EntityPigeon.class, new RenderPigeon(new ModelPigeon(), 0.3F)); + RenderingRegistry.registerEntityRenderingHandler(EntityDummy.class, new RenderDummy()); //"particles" RenderingRegistry.registerEntityRenderingHandler(EntityBSmokeFX.class, new MultiCloudRenderer(new Item[] { ModItems.b_smoke1, ModItems.b_smoke2, ModItems.b_smoke3, ModItems.b_smoke4, ModItems.b_smoke5, ModItems.b_smoke6, ModItems.b_smoke7, ModItems.b_smoke8 })); RenderingRegistry.registerEntityRenderingHandler(EntityChlorineFX.class, new MultiCloudRenderer(new Item[] { ModItems.chlorine1, ModItems.chlorine2, ModItems.chlorine3, ModItems.chlorine4, ModItems.chlorine5, ModItems.chlorine6, ModItems.chlorine7, ModItems.chlorine8 })); @@ -2036,21 +1979,14 @@ public class ClientProxy extends ServerProxy { } } - private HashMap vanished = new HashMap(); - - public void vanish(int ent) { - vanished.put(ent, System.currentTimeMillis() + 2000); - } + private static HashMap vanished = new HashMap(); + public static void vanish(int ent) { vanished.put(ent, System.currentTimeMillis() + 2000); } + public static void vanish(int ent, int duration) { vanished.put(ent, System.currentTimeMillis() + duration); } @Override public boolean isVanished(Entity e) { - - if(e == null) - return false; - - if(!this.vanished.containsKey(e.getEntityId())) - return false; - + if(e == null) return false; + if(!this.vanished.containsKey(e.getEntityId())) return false; return this.vanished.get(e.getEntityId()) > System.currentTimeMillis(); } diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index b98ea3af2..a1cf64deb 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -293,6 +293,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.machine_funnel, 1), new Object[] { "S S", "SRS", " S ", 'S', STEEL.ingot(), 'R', REDSTONE.dust() }); addRecipeAuto(new ItemStack(ModBlocks.machine_waste_drum, 1), new Object[] { "LRL", "BRB", "LRL", 'L', PB.ingot(), 'B', Blocks.iron_bars, 'R', ModItems.rod_quad_empty }); addRecipeAuto(new ItemStack(ModBlocks.machine_press, 1), new Object[] { "IRI", "IPI", "IBI", 'I', IRON.ingot(), 'R', Blocks.furnace, 'B', IRON.block(), 'P', Blocks.piston }); + addRecipeAuto(new ItemStack(ModBlocks.machine_ammo_press, 1), new Object[] { "IPI", "C C", "SSS", 'I', IRON.ingot(), 'P', Blocks.piston, 'C', CU.ingot(), 'S', Blocks.stone }); addRecipeAuto(new ItemStack(ModBlocks.machine_siren, 1), new Object[] { "SIS", "ICI", "SRS", 'S', STEEL.plate(), 'I', ANY_RUBBER.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE), 'R', REDSTONE.dust() }); addRecipeAuto(new ItemStack(ModBlocks.machine_microwave, 1), new Object[] { "III", "SGM", "IDI", 'I', ModItems.plate_polymer, 'S', STEEL.plate(), 'G', KEY_ANYPANE, 'M', ModItems.magnetron, 'D', ModItems.motor }); addRecipeAuto(new ItemStack(ModBlocks.machine_solar_boiler), new Object[] { "SHS", "DHD", "SHS", 'S', STEEL.ingot(), 'H', STEEL.shell(), 'D', KEY_BLACK }); @@ -482,16 +483,6 @@ public class CraftingManager { public static void reg2() { - addRecipeAuto(new ItemStack(ModItems.stamp_357, 1), new Object[] { "RSR", "III", " C ", 'R', REDSTONE.dust(), 'S', ModItems.stamp_iron_flat, 'I', ModItems.plate_polymer, 'C', ModItems.casing_357 }); - addRecipeAuto(new ItemStack(ModItems.stamp_44, 1), new Object[] { "RSR", "III", " C ", 'R', REDSTONE.dust(), 'S', ModItems.stamp_iron_flat, 'I', ModItems.plate_polymer, 'C', ModItems.casing_44 }); - addRecipeAuto(new ItemStack(ModItems.stamp_9, 1), new Object[] { "RSR", "III", " C ", 'R', REDSTONE.dust(), 'S', ModItems.stamp_iron_flat, 'I', ModItems.plate_polymer, 'C', ModItems.casing_9 }); - addRecipeAuto(new ItemStack(ModItems.stamp_50, 1), new Object[] { "RSR", "III", " C ", 'R', REDSTONE.dust(), 'S', ModItems.stamp_iron_flat, 'I', ModItems.plate_polymer, 'C', ModItems.casing_50 }); - - addRecipeAuto(new ItemStack(ModItems.stamp_desh_357, 1), new Object[] { "RSR", "III", " C ", 'R', ModItems.ingot_dura_steel, 'S', ModItems.stamp_desh_flat, 'I', ModItems.ingot_saturnite, 'C', ModItems.casing_357 }); - addRecipeAuto(new ItemStack(ModItems.stamp_desh_44, 1), new Object[] { "RSR", "III", " C ", 'R', ModItems.ingot_dura_steel, 'S', ModItems.stamp_desh_flat, 'I', ModItems.ingot_saturnite, 'C', ModItems.casing_44 }); - addRecipeAuto(new ItemStack(ModItems.stamp_desh_9, 1), new Object[] { "RSR", "III", " C ", 'R', ModItems.ingot_dura_steel, 'S', ModItems.stamp_desh_flat, 'I', ModItems.ingot_saturnite, 'C', ModItems.casing_9 }); - addRecipeAuto(new ItemStack(ModItems.stamp_desh_50, 1), new Object[] { "RSR", "III", " C ", 'R', ModItems.ingot_dura_steel, 'S', ModItems.stamp_desh_flat, 'I', ModItems.ingot_saturnite, 'C', ModItems.casing_50 }); - addRecipeAuto(new ItemStack(ModBlocks.sat_dock, 1), new Object[] { "SSS", "PCP", 'S', STEEL.ingot(), 'P', ANY_PLASTIC.ingot(), 'C', ModBlocks.crate_iron }); addRecipeAuto(new ItemStack(ModBlocks.book_guide, 1), new Object[] { "IBI", "LBL", "IBI", 'B', Items.book, 'I', KEY_BLACK, 'L', KEY_BLUE }); @@ -1060,7 +1051,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.book_of_), new Object[] { "BGB", "GAG", "BGB", 'B', ModItems.egg_balefire_shard, 'G', GOLD.ingot(), 'A', Items.book }); } - + for(NTMMaterial mat : Mats.orderedList) { if(mat.autogen.contains(MaterialShapes.BOLT)) for(String name : mat.names) addRecipeAuto(new ItemStack(ModItems.bolt, 16, mat.id), new Object[] { "#", "#", '#', MaterialShapes.INGOT.prefixes[0] + name }); } diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 1ffb32eac..889fb2e26 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -921,6 +921,9 @@ public class MainRegistry { MinecraftForge.EVENT_BUS.register(pollution); FMLCommonHandler.instance().bus().register(pollution); + DamageResistanceHandler dmgHandler = new DamageResistanceHandler(); + MinecraftForge.EVENT_BUS.register(dmgHandler); + if(event.getSide() == Side.CLIENT) { HbmKeybinds.register(); HbmKeybinds keyHandler = new HbmKeybinds(); @@ -1454,6 +1457,47 @@ public class MainRegistry { ignoreMappings.add("hbm:item.powder_daffergon"); ignoreMappings.add("hbm:item.powder_verticium"); ignoreMappings.add("hbm:tile.ore_random"); + ignoreMappings.add("hbm:item.crate_caller"); + ignoreMappings.add("hbm:item.pellet_rtg_berkelium"); + ignoreMappings.add("hbm:item.folly_shell"); + ignoreMappings.add("hbm:item.folly_bullet"); + ignoreMappings.add("hbm:item.folly_bullet_nuclear"); + ignoreMappings.add("hbm:item.folly_bullet_du"); + ignoreMappings.add("hbm:item.ammo_folly"); + ignoreMappings.add("hbm:item.ammo_folly_nuclear"); + ignoreMappings.add("hbm:item.ammo_folly_du"); + ignoreMappings.add("hbm:item.clip_revolver_iron"); + ignoreMappings.add("hbm:item.clip_revolver"); + ignoreMappings.add("hbm:item.clip_revolver_gold"); + ignoreMappings.add("hbm:item.clip_revolver_lead"); + ignoreMappings.add("hbm:item.clip_revolver_schrabidium"); + ignoreMappings.add("hbm:item.clip_revolver_cursed"); + ignoreMappings.add("hbm:item.clip_revolver_nightmare"); + ignoreMappings.add("hbm:item.clip_revolver_nightmare2"); + ignoreMappings.add("hbm:item.clip_revolver_pip"); + ignoreMappings.add("hbm:item.clip_revolver_nopip"); + ignoreMappings.add("hbm:item.clip_rpg"); + ignoreMappings.add("hbm:item.clip_stinger"); + ignoreMappings.add("hbm:item.clip_fatman"); + ignoreMappings.add("hbm:item.clip_mirv"); + ignoreMappings.add("hbm:item.clip_bf"); + ignoreMappings.add("hbm:item.clip_mp40"); + ignoreMappings.add("hbm:item.clip_uzi"); + ignoreMappings.add("hbm:item.clip_uboinik"); + ignoreMappings.add("hbm:item.clip_lever_action"); + ignoreMappings.add("hbm:item.clip_bolt_action"); + ignoreMappings.add("hbm:item.clip_xvl1456"); + ignoreMappings.add("hbm:item.clip_osipr"); + ignoreMappings.add("hbm:item.clip_immolator"); + ignoreMappings.add("hbm:item.clip_cryolator"); + ignoreMappings.add("hbm:item.clip_mp"); + ignoreMappings.add("hbm:item.clip_emp"); + ignoreMappings.add("hbm:item.clip_jack"); + ignoreMappings.add("hbm:item.clip_spark"); + ignoreMappings.add("hbm:item.clip_hp"); + ignoreMappings.add("hbm:item.clip_euthanasia"); + ignoreMappings.add("hbm:item.clip_defabricator"); + ignoreMappings.add("hbm:item.ammo_folly_du"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 7a9c5bdaf..320c736fa 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -56,6 +56,10 @@ import com.hbm.util.ArmorRegistry.HazardClass; import com.hbm.wiaj.GuiWorldInAJar; import com.hbm.wiaj.cannery.CanneryBase; import com.hbm.wiaj.cannery.Jars; +import com.hbm.util.ArmorRegistry; +import com.hbm.util.ArmorUtil; +import com.hbm.util.DamageResistanceHandler; +import com.hbm.util.ArmorRegistry.HazardClass; import com.mojang.authlib.minecraft.MinecraftProfileTexture.Type; import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.common.FMLCommonHandler; @@ -678,6 +682,9 @@ public class ModEventHandlerClient { ItemStack stack = event.itemStack; List list = event.toolTip; + /// DAMAGE RESISTANCE /// + DamageResistanceHandler.addInfo(stack, list); + /// HAZMAT INFO /// List hazInfo = ArmorRegistry.hazardClasses.get(stack.getItem()); @@ -1277,6 +1284,7 @@ public class ModEventHandlerClient { public static IIcon particleBase; public static IIcon particleLeaf; public static IIcon particleSplash; + public static IIcon particleAshes; @SubscribeEvent public void onTextureStitch(TextureStitchEvent.Pre event) { @@ -1285,6 +1293,7 @@ public class ModEventHandlerClient { particleBase = event.map.registerIcon(RefStrings.MODID + ":particle/particle_base"); particleLeaf = event.map.registerIcon(RefStrings.MODID + ":particle/dead_leaf"); particleSplash = event.map.registerIcon(RefStrings.MODID + ":particle/particle_splash"); + particleAshes = event.map.registerIcon(RefStrings.MODID + ":particle/particle_ashes"); } } diff --git a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java index 063f5ddfe..d19c8bd2f 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java +++ b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java @@ -507,7 +507,7 @@ public class ModEventHandlerRenderer { } } - @SubscribeEvent + @SubscribeEvent(priority = EventPriority.HIGHEST) public void onRenderHUD(RenderGameOverlayEvent.Pre event) { if(event.type == ElementType.HOTBAR && (ModEventHandlerClient.shakeTimestamp + ModEventHandlerClient.shakeDuration - System.currentTimeMillis()) > 0 && ClientConfig.NUKE_HUD_SHAKE.get()) { diff --git a/src/main/java/com/hbm/main/NEIRegistry.java b/src/main/java/com/hbm/main/NEIRegistry.java index 7db2caf5b..3e6589cd6 100644 --- a/src/main/java/com/hbm/main/NEIRegistry.java +++ b/src/main/java/com/hbm/main/NEIRegistry.java @@ -66,6 +66,7 @@ public class NEIRegistry { handlers.add(new ArcFurnaceSolidHandler()); handlers.add(new ArcFurnaceFluidHandler()); handlers.add(new RotaryFurnaceHandler()); + handlers.add(new AmmoPressHandler()); //this shit comes last handlers.add(new FluidRecipeHandler()); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 8bd8fa8ce..7768c32da 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -58,9 +58,8 @@ public class ResourceManager { public static final IModelCustom combination_oven = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/combination_oven.obj")); //Landmines - public static final IModelCustom mine_ap = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/mine_ap.obj")); - public static final IModelCustom mine_he = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/mine_he.obj")); - public static final IModelCustom mine_marelet = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/marelet.obj")); + public static final IModelCustom mine_ap = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/ap_mine.obj")).asVBO(); + public static final IModelCustom mine_marelet = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/marelet.obj")).asVBO(); public static final IModelCustom mine_fat = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/mine_fat.obj")); //Oil Pumps @@ -129,6 +128,7 @@ public class ResourceManager { public static final IModelCustom epress_body = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/epress_body.obj")); public static final IModelCustom epress_head = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/epress_head.obj")); public static final IModelCustom conveyor_press = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/conveyor_press.obj")); + public static final IModelCustom ammo_press = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/ammo_press.obj")).asVBO(); //Assembler public static final IModelCustom assembler_body = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/assembler_new_body.obj")); @@ -427,10 +427,13 @@ public class ResourceManager { public static final ResourceLocation brandon_explosive = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/brandon_drum.png"); //Landmines - public static final ResourceLocation mine_ap_tex = new ResourceLocation(RefStrings.MODID, "textures/models/mine_ap.png"); + public static final ResourceLocation mine_ap_grass_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/mine_ap_grass.png"); + public static final ResourceLocation mine_ap_desert_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/mine_ap_desert.png"); + public static final ResourceLocation mine_ap_snow_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/mine_ap_snow.png"); + public static final ResourceLocation mine_ap_stone_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/mine_ap_stone.png"); //public static final ResourceLocation mine_he_tex = new ResourceLocation(RefStrings.MODID, "textures/models/mine_he.png"); public static final ResourceLocation mine_marelet_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/mine_marelet.png"); - public static final ResourceLocation mine_shrap_tex = new ResourceLocation(RefStrings.MODID, "textures/models/mine_shrap.png"); + public static final ResourceLocation mine_shrap_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/mine_shrapnel.png"); public static final ResourceLocation mine_fat_tex = new ResourceLocation(RefStrings.MODID, "textures/models/mine_fat.png"); //Heaters @@ -536,6 +539,7 @@ public class ResourceManager { public static final ResourceLocation epress_head_tex = new ResourceLocation(RefStrings.MODID, "textures/models/epress_head.png"); public static final ResourceLocation conveyor_press_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/conveyor_press.png"); public static final ResourceLocation conveyor_press_belt_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/conveyor_press_belt.png"); + public static final ResourceLocation ammo_press_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/ammo_press.png"); //Assembler public static final ResourceLocation assembler_body_tex = new ResourceLocation(RefStrings.MODID, "textures/models/assembler_base_new.png"); @@ -864,6 +868,7 @@ public class ResourceManager { public static final IModelCustom fatman = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/fatman.obj")).asVBO(); public static final IModelCustom lasrifle = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/lasrifle.obj")).asVBO(); public static final IModelCustom hangman = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/hangman.obj")).asVBO(); + public static final IModelCustom folly = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/folly.obj")).asVBO(); public static final HashMap python_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/python.json")); public static final HashMap cursed_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/cursed.json")); @@ -876,6 +881,7 @@ public class ResourceManager { public static final HashMap am180_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/am180.json")); public static final HashMap flamethrower_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/flamethrower.json")); public static final HashMap stg77_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/stg77.json")); + public static final HashMap lag_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/lag.json")); public static final IModelCustom lance = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/lance.obj")); @@ -971,6 +977,7 @@ public class ResourceManager { public static final ResourceLocation debug_gun_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/debug_gun.png"); public static final ResourceLocation pepperbox_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/pepperbox.png"); public static final ResourceLocation bio_revolver_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/bio_revolver.png"); + public static final ResourceLocation bio_revolver_atlas_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/bio_revolver_atlas.png"); public static final ResourceLocation dani_celestial_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/dani_celestial.png"); public static final ResourceLocation dani_lunar_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/dani_lunar.png"); public static final ResourceLocation henry_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/henry.png"); @@ -985,6 +992,8 @@ public class ResourceManager { public static final ResourceLocation am180_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/am180.png"); public static final ResourceLocation liberator_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/liberator.png"); public static final ResourceLocation flamethrower_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flamethrower.png"); + public static final ResourceLocation flamethrower_topaz_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flamethrower_topaz.png"); + public static final ResourceLocation flamethrower_daybreaker_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flamethrower_daybreaker.png"); public static final ResourceLocation mike_hawk_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lag.png"); public static final ResourceLocation uzi_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/uzi.png"); public static final ResourceLocation panzerschreck_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/panzerschreck.png"); @@ -994,6 +1003,7 @@ public class ResourceManager { public static final ResourceLocation quadro_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/quadro.png"); public static final ResourceLocation quadro_rocket_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/quadro_rocket.png"); public static final ResourceLocation minigun_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/minigun.png"); + public static final ResourceLocation minigun_lacunae_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/minigun_lacunae.png"); public static final ResourceLocation missile_launcher_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/missile_launcher.png"); public static final ResourceLocation tesla_cannon_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/tesla_cannon.png"); public static final ResourceLocation stg77_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/stg77.png"); @@ -1002,6 +1012,7 @@ public class ResourceManager { public static final ResourceLocation fatman_mininuke_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/fatman_mininuke.png"); public static final ResourceLocation lasrifle_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lasrifle.png"); public static final ResourceLocation hangman_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/hangman.png"); + public static final ResourceLocation folly_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/moonlight.png"); public static final ResourceLocation lance_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lance.png"); @@ -1118,6 +1129,7 @@ public class ResourceManager { //Bomber public static final IModelCustom dornier = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/dornier.obj")); public static final IModelCustom b29 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/b29.obj")); + public static final IModelCustom c130 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/c130.obj")).asVBO(); //Missiles public static final IModelCustom missileV2 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_v2.obj")).asVBO(); @@ -1246,15 +1258,14 @@ public class ResourceManager { public static final ResourceLocation casings_tex = new ResourceLocation(RefStrings.MODID, "textures/particle/casings.png"); //Bomber - public static final ResourceLocation dornier_0_tex = new ResourceLocation(RefStrings.MODID, "textures/models/dornier_0.png"); public static final ResourceLocation dornier_1_tex = new ResourceLocation(RefStrings.MODID, "textures/models/dornier_1.png"); public static final ResourceLocation dornier_2_tex = new ResourceLocation(RefStrings.MODID, "textures/models/dornier_2.png"); - public static final ResourceLocation dornier_3_tex = new ResourceLocation(RefStrings.MODID, "textures/models/dornier_3.png"); public static final ResourceLocation dornier_4_tex = new ResourceLocation(RefStrings.MODID, "textures/models/dornier_4.png"); public static final ResourceLocation b29_0_tex = new ResourceLocation(RefStrings.MODID, "textures/models/b29_0.png"); public static final ResourceLocation b29_1_tex = new ResourceLocation(RefStrings.MODID, "textures/models/b29_1.png"); public static final ResourceLocation b29_2_tex = new ResourceLocation(RefStrings.MODID, "textures/models/b29_2.png"); public static final ResourceLocation b29_3_tex = new ResourceLocation(RefStrings.MODID, "textures/models/b29_3.png"); + public static final ResourceLocation c130_0_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/c130_0.png"); //Missiles public static final ResourceLocation missileV2_HE_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_v2.png"); @@ -1329,6 +1340,7 @@ public class ResourceManager { public static final ResourceLocation soyuz_lander_tex = new ResourceLocation(RefStrings.MODID, "textures/models/soyuz_capsule/soyuz_lander.png"); public static final ResourceLocation soyuz_lander_rust_tex = new ResourceLocation(RefStrings.MODID, "textures/models/soyuz_capsule/soyuz_lander_rust.png"); public static final ResourceLocation soyuz_chute_tex = new ResourceLocation(RefStrings.MODID, "textures/models/soyuz_capsule/soyuz_chute.png"); + public static final ResourceLocation supply_crate = new ResourceLocation(RefStrings.MODID, "textures/blocks/crate_can.png"); public static final ResourceLocation soyuz_module_dome_tex = new ResourceLocation(RefStrings.MODID, "textures/models/soyuz_capsule/module_dome.png"); public static final ResourceLocation soyuz_module_lander_tex = new ResourceLocation(RefStrings.MODID, "textures/models/soyuz_capsule/module_lander.png"); diff --git a/src/main/java/com/hbm/packet/PacketDispatcher.java b/src/main/java/com/hbm/packet/PacketDispatcher.java index 2d5cd9583..762d5482f 100644 --- a/src/main/java/com/hbm/packet/PacketDispatcher.java +++ b/src/main/java/com/hbm/packet/PacketDispatcher.java @@ -40,8 +40,6 @@ public class PacketDispatcher { wrapper.registerMessage(ParticleBurstPacket.Handler.class, ParticleBurstPacket.class, i++, Side.CLIENT); //Packet to send chunk radiation info to individual players wrapper.registerMessage(ExtPropPacket.Handler.class, ExtPropPacket.class, i++, Side.CLIENT); - //Entity sound packet that keeps client and server separated - wrapper.registerMessage(LoopedEntitySoundPacket.Handler.class, LoopedEntitySoundPacket.class, i++, Side.CLIENT); //Packet for force fields wrapper.registerMessage(TEFFPacket.Handler.class, TEFFPacket.class, i++, Side.CLIENT); //Sends button information for ItemGunBase diff --git a/src/main/java/com/hbm/packet/toclient/LoopedEntitySoundPacket.java b/src/main/java/com/hbm/packet/toclient/LoopedEntitySoundPacket.java deleted file mode 100644 index f5282515a..000000000 --- a/src/main/java/com/hbm/packet/toclient/LoopedEntitySoundPacket.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.hbm.packet.toclient; - -import com.hbm.entity.logic.EntityBomber; -import com.hbm.sound.MovingSoundBomber; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.util.ResourceLocation; - -public class LoopedEntitySoundPacket implements IMessage { - - int entityID; - - public LoopedEntitySoundPacket() - { - - } - - public LoopedEntitySoundPacket(int entityID) - { - this.entityID = entityID; - } - - @Override - public void fromBytes(ByteBuf buf) { - entityID = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(entityID); - } - - public static class Handler implements IMessageHandler { - - @Override - //Tamaized, I love you! - @SideOnly(Side.CLIENT) - public IMessage onMessage(LoopedEntitySoundPacket m, MessageContext ctx) { - - Entity e = Minecraft.getMinecraft().theWorld.getEntityByID(m.entityID); - - if(e instanceof EntityBomber) { - - int n = 1; - int x = e.getDataWatcher().getWatchableObjectByte(16); - - switch(x) { - case 0: - case 1: - case 2: - case 3: - case 4: n = 2; break; - case 5: - case 6: - case 7: - case 8: n = 1; break; - default: n = 2; break; - } - - boolean flag = true; - for(int i = 0; i < MovingSoundBomber.globalSoundList.size(); i++) { - if(MovingSoundBomber.globalSoundList.get(i).bomber == e && !MovingSoundBomber.globalSoundList.get(i).isDonePlaying()) - flag = false; - } - - if(flag) { - if(n == 2) - Minecraft.getMinecraft().getSoundHandler().playSound(new MovingSoundBomber(new ResourceLocation("hbm:entity.bomberSmallLoop"), (EntityBomber)e)); - if(n == 1) - Minecraft.getMinecraft().getSoundHandler().playSound(new MovingSoundBomber(new ResourceLocation("hbm:entity.bomberLoop"), (EntityBomber)e)); - } - } - - return null; - } - } -} diff --git a/src/main/java/com/hbm/particle/ParticleAshes.java b/src/main/java/com/hbm/particle/ParticleAshes.java new file mode 100644 index 000000000..4b76c52ac --- /dev/null +++ b/src/main/java/com/hbm/particle/ParticleAshes.java @@ -0,0 +1,87 @@ +package com.hbm.particle; + +import com.hbm.main.ModEventHandlerClient; +import com.hbm.util.Vec3NT; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.world.World; + +@SideOnly(Side.CLIENT) +public class ParticleAshes extends EntityFXRotating { + + public ParticleAshes(World world, double x, double y, double z, float scale) { + super(world, x, y, z); + particleIcon = ModEventHandlerClient.particleBase; + this.particleMaxAge = 1200 + rand.nextInt(20); + this.particleScale = scale * 0.9F + rand.nextFloat() * 0.2F; + + this.particleGravity = 0.01F; + + this.particleRed = this.particleGreen = this.particleBlue = this.rand.nextFloat() * 0.1F + 0.1F; + } + + @Override + public void onUpdate() { + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + + this.particleAge++; + + if(this.particleAge >= this.particleMaxAge) { + this.setDead(); + } + + this.motionY -= particleGravity; + this.prevRotationPitch = this.rotationPitch; + + if(!this.onGround) this.rotationPitch += 2 * ((this.getEntityId() % 2) - 0.5); + + this.motionX *= 0.95D; + this.motionY *= 0.99D; + this.motionZ *= 0.95D; + + boolean wasOnGround = this.onGround; + this.moveEntity(this.motionX, this.motionY, this.motionZ); + if(!wasOnGround && this.onGround) this.rotationPitch = rand.nextFloat() * 360F; + + if(this.getEntityId() % 5 == 0 && this.onGround && rand.nextInt(15) == 0) { + worldObj.spawnParticle("smoke", posX, posY + 0.125, posZ, 0, 0.05, 0); + } + } + + @Override + public void renderParticle(Tessellator tess, float interp, float sX, float sY, float sZ, float dX, float dZ) { + + float timeLeft = this.particleMaxAge - (this.particleAge + interp); + + if(timeLeft < 40) { + this.particleAlpha = timeLeft / 40F; + } else { + this.particleAlpha = 1F; + } + + tess.setColorRGBA_F(this.particleRed, this.particleGreen, this.particleBlue, this.particleAlpha); + tess.setNormal(0.0F, 1.0F, 0.0F); + + if(this.onGround) { + float pX = (float) (this.prevPosX + (this.posX - this.prevPosX) * (double) interp - interpPosX); + float pY = (float) (this.prevPosY + (this.posY - this.prevPosY) * (double) interp - interpPosY); + float pZ = (float) (this.prevPosZ + (this.posZ - this.prevPosZ) * (double) interp - interpPosZ); + + Vec3NT vec = new Vec3NT(particleScale, 0, particleScale).rotateAroundYDeg(this.rotationPitch); + + tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMaxU(), particleIcon.getMaxV()); + vec.rotateAroundYDeg(90); + tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMaxU(), particleIcon.getMinV()); + vec.rotateAroundYDeg(90); + tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMinU(), particleIcon.getMinV()); + vec.rotateAroundYDeg(90); + tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMinU(), particleIcon.getMaxV()); + } else { + renderParticleRotated(tess, interp, sX, sY, sZ, dX, dZ, this.particleScale); + } + } +} diff --git a/src/main/java/com/hbm/particle/ParticleGiblet.java b/src/main/java/com/hbm/particle/ParticleGiblet.java index c09a00799..a5fdd3439 100644 --- a/src/main/java/com/hbm/particle/ParticleGiblet.java +++ b/src/main/java/com/hbm/particle/ParticleGiblet.java @@ -9,10 +9,12 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; import net.minecraft.client.particle.EntityFX; +import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; +import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; @@ -66,6 +68,7 @@ public class ParticleGiblet extends EntityFX { GL11.glPushMatrix(); GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_BLEND); this.theRenderEngine.bindTexture(texture); /* use this instead of EntityFX.interpPosN since interpPosN isn't set up correctly for the current tick for layer 3 particles */ @@ -79,9 +82,17 @@ public class ParticleGiblet extends EntityFX { float f12 = (float) (this.prevPosY + (this.posY - this.prevPosY) * (double) interp - dY); float f13 = (float) (this.prevPosZ + (this.posZ - this.prevPosZ) * (double) interp - dZ); + double pX = prevPosX + (posX - prevPosX) * interp; + double pY = prevPosY + (posY - prevPosY) * interp; + double pZ = prevPosZ + (posZ - prevPosZ) * interp; + int brightness = worldObj.getLightBrightnessForSkyBlocks(MathHelper.floor_double(pX), MathHelper.floor_double(pY), MathHelper.floor_double(pZ), 0); + int lX = brightness % 65536; + int lY = brightness / 65536; + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)lX / 1.0F, (float)lY / 1.0F); + tess.startDrawingQuads(); tess.setNormal(0.0F, 1.0F, 0.0F); - tess.setBrightness(240); + //tess.setBrightness(240); tess.setColorRGBA_F(this.particleRed, this.particleGreen, this.particleBlue, this.particleAlpha); tess.addVertexWithUV((double) (f11 - x * f10 - tx * f10), (double) (f12 - y * f10), (double) (f13 - z * f10 - tz * f10), (double) 0, (double) 0); tess.addVertexWithUV((double) (f11 - x * f10 + tx * f10), (double) (f12 + y * f10), (double) (f13 - z * f10 + tz * f10), (double) 0, (double) 1); diff --git a/src/main/java/com/hbm/particle/ParticlePlasmaBlast.java b/src/main/java/com/hbm/particle/ParticlePlasmaBlast.java index 18430e811..413dd35b9 100644 --- a/src/main/java/com/hbm/particle/ParticlePlasmaBlast.java +++ b/src/main/java/com/hbm/particle/ParticlePlasmaBlast.java @@ -7,6 +7,7 @@ import com.hbm.lib.RefStrings; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.particle.EntityFX; +import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.TextureManager; @@ -84,9 +85,9 @@ public class ParticlePlasmaBlast extends EntityFX { if(fog) GL11.glEnable(GL11.GL_FOG); GL11.glPolygonOffset(0.0F, 0.0F); - GL11.glEnable(GL11.GL_CULL_FACE); GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); GL11.glEnable(GL11.GL_LIGHTING); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); GL11.glPopMatrix(); } } diff --git a/src/main/java/com/hbm/particle/ParticleSkeleton.java b/src/main/java/com/hbm/particle/ParticleSkeleton.java new file mode 100644 index 000000000..a3eb3f4c9 --- /dev/null +++ b/src/main/java/com/hbm/particle/ParticleSkeleton.java @@ -0,0 +1,161 @@ +package com.hbm.particle; + +import org.lwjgl.opengl.GL11; + +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.particle.helper.SkeletonCreator.EnumSkeletonType; +import com.hbm.render.loader.HFRWavefrontObject; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; +import net.minecraft.client.particle.EntityFX; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; +import net.minecraftforge.client.model.IModelCustom; + +@SideOnly(Side.CLIENT) +public class ParticleSkeleton extends EntityFX { + + public static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/particle/skeleton.png"); + public static final ResourceLocation texture_ext = new ResourceLocation(RefStrings.MODID + ":textures/particle/skoilet.png"); + public static final IModelCustom skeleton = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/effect/skeleton.obj"), false).asVBO(); + protected EnumSkeletonType type; + + private float momentumYaw; + private float momentumPitch; + private int initialDelay; + + private final TextureManager textureManager; + + public ParticleSkeleton(TextureManager textureManager, World world, double x, double y, double z, float r, float g, float b, EnumSkeletonType type) { + super(world, x, y, z); + this.textureManager = textureManager; + this.type = type; + + this.particleMaxAge = 1200 + rand.nextInt(20); + + this.particleRed = r; + this.particleGreen = g; + this.particleBlue = b; + this.particleGravity = 0.02F; + this.initialDelay = 20; + + this.momentumPitch = rand.nextFloat() * 5 * (rand.nextBoolean() ? 1 : -1); + this.momentumYaw = rand.nextFloat() * 5 * (rand.nextBoolean() ? 1 : -1); + } + + @Override + public void onUpdate() { + + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + this.prevRotationPitch = this.rotationPitch; + this.prevRotationYaw = this.rotationYaw; + + if(initialDelay-- > 0) return; + + if(initialDelay == -1) { + this.motionX = rand.nextGaussian() * 0.025; + this.motionZ = rand.nextGaussian() * 0.025; + } + + if(this.particleAge++ >= this.particleMaxAge) { + this.setDead(); + } + boolean wasOnGround = this.onGround; + + this.motionY -= this.particleGravity; + this.moveEntity(this.motionX, this.motionY, this.motionZ); + this.motionX *= 0.98D; + this.motionY *= 0.98D; + this.motionZ *= 0.98D; + + if(!this.onGround) { + this.rotationPitch += this.momentumPitch; + this.rotationYaw += this.momentumYaw; + } else { + this.motionX = 0; + this.motionY = 0; + this.motionZ = 0; + + if(!wasOnGround) { + MainRegistry.proxy.playSoundClient(posX, posY, posZ, "mob.skeleton.hurt", 0.25F, 0.8F + rand.nextFloat() * 0.4F); + } + } + } + + @Override + public int getFXLayer() { + return 3; + } + + @Override + public void renderParticle(Tessellator tess, float interp, float x, float y, float z, float tx, float tz) { + + GL11.glPushMatrix(); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_BLEND); + GL11.glAlphaFunc(GL11.GL_GREATER, 0); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + RenderHelper.enableStandardItemLighting(); + + double pX = prevPosX + (posX - prevPosX) * interp; + double pY = prevPosY + (posY - prevPosY) * interp; + double pZ = prevPosZ + (posZ - prevPosZ) * interp; + 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.glTranslated(pX - dX, pY - dY, pZ - dZ); + + GL11.glRotated(this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * interp, 0, 1, 0); + GL11.glRotated(this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * interp, 1, 0, 0); + + float timeLeft = this.particleMaxAge - (this.particleAge + interp); + if(timeLeft < 40) { + this.particleAlpha = timeLeft / 40F; + } else { + this.particleAlpha = 1F; + } + + int brightness = worldObj.getLightBrightnessForSkyBlocks(MathHelper.floor_double(pX), MathHelper.floor_double(pY), MathHelper.floor_double(pZ), 0); + int lX = brightness % 65536; + int lY = brightness / 65536; + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)lX / 1.0F, (float)lY / 1.0F); + + GL11.glColor4f(particleRed, particleGreen, particleBlue, particleAlpha); + GL11.glRotated(-90, 0, 1, 0); + + switch(type) { + case SKULL: + this.textureManager.bindTexture(texture); + skeleton.renderPart("Skull"); break; + case TORSO: + this.textureManager.bindTexture(texture); + skeleton.renderPart("Torso"); break; + case LIMB: + this.textureManager.bindTexture(texture); + skeleton.renderPart("Limb"); break; + case SKULL_VILLAGER: + this.textureManager.bindTexture(texture_ext); + skeleton.renderPart("SkullVillager"); break; + } + + GL11.glColor4f(1F, 1F, 1F, 1F); + GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); + GL11.glDisable(GL11.GL_CULL_FACE); + + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/hbm/particle/helper/AshesCreator.java b/src/main/java/com/hbm/particle/helper/AshesCreator.java new file mode 100644 index 000000000..56a36acc5 --- /dev/null +++ b/src/main/java/com/hbm/particle/helper/AshesCreator.java @@ -0,0 +1,54 @@ +package com.hbm.particle.helper; + +import java.util.Random; + +import com.hbm.main.ClientProxy; +import com.hbm.particle.ParticleAshes; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; +import net.minecraft.client.particle.EntityFlameFX; +import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class AshesCreator implements IParticleCreator { + + public static void composeEffect(World world, Entity toPulverize, int ashesCount, float ashesScale) { + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "ashes"); + data.setInteger("entityID", toPulverize.getEntityId()); + data.setInteger("ashesCount", ashesCount); + data.setFloat("ashesScale", ashesScale); + IParticleCreator.sendPacket(world, toPulverize.posX, toPulverize.posY, toPulverize.posZ, 100, data); + } + + @Override + @SideOnly(Side.CLIENT) + public void makeParticle(World world, EntityPlayer player, TextureManager texman, Random rand, double x, double y, double z, NBTTagCompound data) { + + int entityID = data.getInteger("entityID"); + Entity entity = world.getEntityByID(entityID); + if(entity == null) return; + + ClientProxy.vanish(entityID); + + int amount = data.getInteger("ashesCount"); + float scale = data.getFloat("ashesScale"); + + for(int i = 0; i < amount; i++) { + ParticleAshes particle = new ParticleAshes(world, + entity.posX + (entity.width + scale * 2) * (rand.nextDouble() - 0.5), + entity.posY + entity.height * rand.nextDouble(), + entity.posZ + (entity.width + scale * 2) * (rand.nextDouble() - 0.5), + scale); + Minecraft.getMinecraft().effectRenderer.addEffect(particle); + EntityFlameFX flame = new EntityFlameFX(world, particle.posX, particle.posY, particle.posZ, 0.0, 0.0, 0.0); + Minecraft.getMinecraft().effectRenderer.addEffect(flame); + } + } +} diff --git a/src/main/java/com/hbm/particle/helper/BlackPowderHelper.java b/src/main/java/com/hbm/particle/helper/BlackPowderCreator.java similarity index 97% rename from src/main/java/com/hbm/particle/helper/BlackPowderHelper.java rename to src/main/java/com/hbm/particle/helper/BlackPowderCreator.java index 72aa720c1..6705449f7 100644 --- a/src/main/java/com/hbm/particle/helper/BlackPowderHelper.java +++ b/src/main/java/com/hbm/particle/helper/BlackPowderCreator.java @@ -14,7 +14,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -public class BlackPowderHelper implements IParticleCreator { +public class BlackPowderCreator implements IParticleCreator { public static void composeEffect(World world, double x, double y, double z, double headingX, double headingY, double headingZ, int cloudCount, float cloudScale, float cloudSpeedMult, int sparkCount, float sparkSpeedMult) { diff --git a/src/main/java/com/hbm/particle/helper/ParticleCreators.java b/src/main/java/com/hbm/particle/helper/ParticleCreators.java index 1e93ed27f..2f23f88f4 100644 --- a/src/main/java/com/hbm/particle/helper/ParticleCreators.java +++ b/src/main/java/com/hbm/particle/helper/ParticleCreators.java @@ -11,6 +11,8 @@ public class ParticleCreators { particleCreators.put("casingNT", new CasingCreator()); particleCreators.put("flamethrower", new FlameCreator()); particleCreators.put("explosionSmall", new ExplosionSmallCreator()); - particleCreators.put("blackPowder", new BlackPowderHelper()); + particleCreators.put("blackPowder", new BlackPowderCreator()); + particleCreators.put("ashes", new AshesCreator()); + particleCreators.put("skeleton", new SkeletonCreator()); } } diff --git a/src/main/java/com/hbm/particle/helper/SkeletonCreator.java b/src/main/java/com/hbm/particle/helper/SkeletonCreator.java new file mode 100644 index 000000000..48ee29761 --- /dev/null +++ b/src/main/java/com/hbm/particle/helper/SkeletonCreator.java @@ -0,0 +1,171 @@ +package com.hbm.particle.helper; + +import java.util.HashMap; +import java.util.Random; +import java.util.function.Function; + +import com.hbm.entity.mob.EntityDummy; +import com.hbm.main.ClientProxy; +import com.hbm.particle.ParticleSkeleton; +import com.hbm.util.Vec3NT; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.EntityClientPlayerMP; +import net.minecraft.client.entity.EntityOtherPlayerMP; +import net.minecraft.client.entity.EntityPlayerSP; +import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.monster.EntityPigZombie; +import net.minecraft.entity.monster.EntitySkeleton; +import net.minecraft.entity.monster.EntityWitch; +import net.minecraft.entity.monster.EntityZombie; +import net.minecraft.entity.passive.EntityVillager; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class SkeletonCreator implements IParticleCreator { + + public static HashMap> skullanizer = new HashMap(); + + public static void composeEffect(World world, Entity toSkeletonize, float brightness) { + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "skeleton"); + data.setInteger("entityID", toSkeletonize.getEntityId()); + data.setFloat("brightness", brightness); + IParticleCreator.sendPacket(world, toSkeletonize.posX, toSkeletonize.posY, toSkeletonize.posZ, 100, data); + } + + @Override + @SideOnly(Side.CLIENT) + public void makeParticle(World world, EntityPlayer player, TextureManager texman, Random rand, double x, double y, double z, NBTTagCompound data) { + + if(skullanizer.isEmpty()) init(); + + int entityID = data.getInteger("entityID"); + Entity entity = world.getEntityByID(entityID); + if(!(entity instanceof EntityLivingBase)) return; + EntityLivingBase living = (EntityLivingBase) entity; + + ClientProxy.vanish(entityID); + + float brightness = data.getFloat("brightness"); + + Function bonealizer = skullanizer.get(entity.getClass().getSimpleName()); + + if(bonealizer != null) { + BoneDefinition[] bones = bonealizer.apply(living); + for(BoneDefinition bone : bones) { + ParticleSkeleton skeleton = new ParticleSkeleton(Minecraft.getMinecraft().getTextureManager(), world, bone.x, bone.y, bone.z, brightness, brightness, brightness, bone.type); + skeleton.prevRotationYaw = skeleton.rotationYaw = bone.yaw; + skeleton.prevRotationPitch = skeleton.rotationPitch = bone.pitch; + Minecraft.getMinecraft().effectRenderer.addEffect(skeleton); + } + } + } + + public static class BoneDefinition { + public EnumSkeletonType type; + public float yaw; + public float pitch; + public double x; + public double y; + public double z; + + public BoneDefinition(EnumSkeletonType type, float yaw, float pitch, double x, double y, double z) { + this.type = type; + this.yaw = yaw; + this.pitch = pitch; + this.x = x; + this.y = y; + this.z = z; + } + } + + public static enum EnumSkeletonType { + SKULL, TORSO, LIMB, SKULL_VILLAGER + } + + public static Function BONES_BIPED = (entity) -> { + Vec3NT leftarm = new Vec3NT(0.375, 0, 0).rotateAroundYDeg(-entity.renderYawOffset); + Vec3NT leftleg = new Vec3NT(0.125, 0, 0).rotateAroundYDeg(-entity.renderYawOffset); + return new BoneDefinition[] { + new BoneDefinition(EnumSkeletonType.SKULL, -entity.rotationYawHead, entity.rotationPitch, entity.posX, entity.posY + 1.75, entity.posZ), + new BoneDefinition(EnumSkeletonType.TORSO, -entity.renderYawOffset, 0, entity.posX, entity.posY + 1.125, entity.posZ), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftarm.xCoord, entity.posY + 1.125, entity.posZ + leftarm.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftarm.xCoord, entity.posY + 1.125, entity.posZ - leftarm.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftleg.xCoord, entity.posY + 0.375, entity.posZ + leftleg.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftleg.xCoord, entity.posY + 0.375, entity.posZ - leftleg.zCoord), + }; + }; + + public static Function BONES_ZOMBIE = (entity) -> { + Vec3NT leftarm = new Vec3NT(0.375, 0, 0).rotateAroundYDeg(-entity.renderYawOffset); + Vec3NT forward = new Vec3NT(0, 0, 0.25).rotateAroundYDeg(-entity.renderYawOffset); + Vec3NT leftleg = new Vec3NT(0.125, 0, 0).rotateAroundYDeg(-entity.renderYawOffset); + return new BoneDefinition[] { + new BoneDefinition(EnumSkeletonType.SKULL, -entity.rotationYawHead, entity.rotationPitch, entity.posX, entity.posY + 1.75, entity.posZ), + new BoneDefinition(EnumSkeletonType.TORSO, -entity.renderYawOffset, 0, entity.posX, entity.posY + 1.125, entity.posZ), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, -90, entity.posX + leftarm.xCoord + forward.xCoord, entity.posY + 1.375, entity.posZ + leftarm.zCoord + forward.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, -90, entity.posX - leftarm.xCoord + forward.xCoord, entity.posY + 1.375, entity.posZ - leftarm.zCoord + forward.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftleg.xCoord, entity.posY + 0.375, entity.posZ + leftleg.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftleg.xCoord, entity.posY + 0.375, entity.posZ - leftleg.zCoord), + }; + }; + + public static Function BONES_VILLAGER = (entity) -> { + Vec3NT leftarm = new Vec3NT(0.375, 0, 0).rotateAroundYDeg(-entity.renderYawOffset); + Vec3NT forward = new Vec3NT(0, 0, 0.25).rotateAroundYDeg(-entity.renderYawOffset); + Vec3NT leftleg = new Vec3NT(0.125, 0, 0).rotateAroundYDeg(-entity.renderYawOffset); + return new BoneDefinition[] { + new BoneDefinition(EnumSkeletonType.SKULL_VILLAGER, -entity.rotationYawHead, entity.rotationPitch, entity.posX, entity.posY + 1.6875, entity.posZ), + new BoneDefinition(EnumSkeletonType.TORSO, -entity.renderYawOffset, 0, entity.posX, entity.posY + 1, entity.posZ), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, -45, entity.posX + leftarm.xCoord + forward.xCoord, entity.posY + 1.125, entity.posZ + leftarm.zCoord + forward.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, -45, entity.posX - leftarm.xCoord + forward.xCoord, entity.posY + 1.125, entity.posZ - leftarm.zCoord + forward.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftleg.xCoord, entity.posY + 0.375, entity.posZ + leftleg.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftleg.xCoord, entity.posY + 0.375, entity.posZ - leftleg.zCoord), + }; + }; + + public static Function BONES_DUMMY = (entity) -> { + Vec3NT leftarm = new Vec3NT(0.375, 0, 0).rotateAroundYDeg(-entity.renderYawOffset); + Vec3NT leftleg = new Vec3NT(0.125, 0, 0).rotateAroundYDeg(-entity.renderYawOffset); + return new BoneDefinition[] { + new BoneDefinition(EnumSkeletonType.SKULL, -entity.rotationYawHead, entity.rotationPitch, entity.posX, entity.posY + 1.75, entity.posZ), + new BoneDefinition(EnumSkeletonType.TORSO, -entity.renderYawOffset, 0, entity.posX, entity.posY + 1.125, entity.posZ), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftarm.xCoord, entity.posY + 1.125, entity.posZ + leftarm.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftarm.xCoord, entity.posY + 1.125, entity.posZ - leftarm.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftleg.xCoord, entity.posY + 0.375, entity.posZ + leftleg.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftleg.xCoord, entity.posY + 0.375, entity.posZ - leftleg.zCoord), + }; + }; + + public static void init() { + skullanizer.put(EntityOtherPlayerMP.class.getSimpleName(), BONES_BIPED); + skullanizer.put(EntityClientPlayerMP.class.getSimpleName(), BONES_BIPED); + skullanizer.put(EntityPlayerSP.class.getSimpleName(), BONES_BIPED); + + skullanizer.put(EntityZombie.class.getSimpleName(), BONES_ZOMBIE); + skullanizer.put(EntitySkeleton.class.getSimpleName(), BONES_ZOMBIE); + skullanizer.put(EntityPigZombie.class.getSimpleName(), BONES_ZOMBIE); + + skullanizer.put(EntityVillager.class.getSimpleName(), BONES_VILLAGER); + skullanizer.put(EntityWitch.class.getSimpleName(), BONES_VILLAGER); + + skullanizer.put(EntityDummy.class.getSimpleName(), BONES_DUMMY); + + //techguns compat, for some reason + //not alwayss accurate because of variable arm position, but better than nothing + skullanizer.put("ArmySoldier", BONES_ZOMBIE); + skullanizer.put("PsychoSteve", BONES_ZOMBIE); + skullanizer.put("SkeletonSoldier", BONES_ZOMBIE); + skullanizer.put("ZombieFarmer", BONES_ZOMBIE); + skullanizer.put("ZombieMiner", BONES_ZOMBIE); + skullanizer.put("ZombiePigmanSoldier", BONES_ZOMBIE); + skullanizer.put("ZombieSoldier", BONES_ZOMBIE); + } +} diff --git a/src/main/java/com/hbm/render/entity/item/RenderBomber.java b/src/main/java/com/hbm/render/entity/item/RenderBomber.java index 16d32f88f..4cc33a349 100644 --- a/src/main/java/com/hbm/render/entity/item/RenderBomber.java +++ b/src/main/java/com/hbm/render/entity/item/RenderBomber.java @@ -28,36 +28,16 @@ public class RenderBomber extends Render { int i = entity.getDataWatcher().getWatchableObjectByte(16); switch(i) { - case 0: - bindTexture(ResourceManager.dornier_0_tex); - break; - case 1: - bindTexture(ResourceManager.dornier_1_tex); - break; - case 2: - bindTexture(ResourceManager.dornier_2_tex); - break; - case 3: - bindTexture(ResourceManager.dornier_3_tex); - break; - case 4: - bindTexture(ResourceManager.dornier_4_tex); - break; - case 5: - bindTexture(ResourceManager.b29_0_tex); - break; - case 6: - bindTexture(ResourceManager.b29_1_tex); - break; - case 7: - bindTexture(ResourceManager.b29_2_tex); - break; - case 8: - bindTexture(ResourceManager.b29_3_tex); - break; - default: - bindTexture(ResourceManager.dornier_1_tex); - break; + case 0: bindTexture(ResourceManager.dornier_1_tex); break; + case 1: bindTexture(ResourceManager.dornier_1_tex); break; + case 2: bindTexture(ResourceManager.dornier_2_tex); break; + case 3: bindTexture(ResourceManager.dornier_1_tex); break; + case 4: bindTexture(ResourceManager.dornier_4_tex); break; + case 5: bindTexture(ResourceManager.b29_0_tex); break; + case 6: bindTexture(ResourceManager.b29_1_tex); break; + case 7: bindTexture(ResourceManager.b29_2_tex); break; + case 8: bindTexture(ResourceManager.b29_3_tex); break; + default: bindTexture(ResourceManager.dornier_1_tex); break; } GL11.glRotatef((float) Math.sin((entity.ticksExisted + interp) * 0.05) * 10, 1F, 0F, 0F); diff --git a/src/main/java/com/hbm/render/entity/item/RenderC130.java b/src/main/java/com/hbm/render/entity/item/RenderC130.java new file mode 100644 index 000000000..9d2d7d4d4 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/item/RenderC130.java @@ -0,0 +1,67 @@ +package com.hbm.render.entity.item; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; + +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; + +public class RenderC130 extends Render { + + @Override + public void doRender(Entity entity, double x, double y, double z, float f0, float interp) { + + GL11.glPushMatrix(); + GL11.glTranslatef((float) x, (float) y, (float) z); + GL11.glRotatef(entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * interp - 90.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(90, 0F, 0F, 1F); + GL11.glRotatef(entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * interp, 0.0F, 0.0F, 1.0F); + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.c130_0_tex); + ResourceManager.c130.renderPart("Plane"); + + double spin = System.currentTimeMillis() * 15D % 360D; + + GL11.glPushMatrix(); + GL11.glTranslated(10, 4.2, -20.5); + GL11.glRotated(spin, 1, 0, 0); + GL11.glTranslated(-10, -4.2, 20.5); + ResourceManager.c130.renderPart("Prop1"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(10, 4.2, -11.16); + GL11.glRotated(spin, 1, 0, 0); + GL11.glTranslated(-10, -4.2, 11.16); + ResourceManager.c130.renderPart("Prop2"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(10, 4.2, 11.16); + GL11.glRotated(spin, 1, 0, 0); + GL11.glTranslated(-10, -4.2, -11.16); + ResourceManager.c130.renderPart("Prop3"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(10, 4.2, 20.5); + GL11.glRotated(spin, 1, 0, 0); + GL11.glTranslated(-10, -4.2, -20.5); + ResourceManager.c130.renderPart("Prop4"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return ResourceManager.c130_0_tex; + } + +} diff --git a/src/main/java/com/hbm/render/entity/item/RenderParachuteCrate.java b/src/main/java/com/hbm/render/entity/item/RenderParachuteCrate.java new file mode 100644 index 000000000..3bf1ab7c5 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/item/RenderParachuteCrate.java @@ -0,0 +1,50 @@ +package com.hbm.render.entity.item; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; + +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; + +public class RenderParachuteCrate extends Render { + + @Override + public void doRender(Entity entity, double x, double y, double z, float i, float j) { + + GL11.glPushMatrix(); + + GL11.glTranslated(x, y, z); + + double time = (entity.worldObj.getTotalWorldTime()); + double sine = Math.sin(time * 0.05) * 5; + double sin3 = Math.sin(time * 0.05 + Math.PI * 0.5) * 5; + + int height = 7; + + GL11.glTranslated(0.0F, height, 0.0F); + GL11.glRotated(sine, 0, 0, 1); + GL11.glRotated(sin3, 1, 0, 0); + GL11.glTranslated(0.0F, -height, 0.0F); + + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + + bindTexture(ResourceManager.supply_crate); + ResourceManager.conservecrate.renderAll(); + + GL11.glTranslated(0, -1, 0); + + bindTexture(ResourceManager.soyuz_chute_tex); + ResourceManager.soyuz_lander.renderPart("Chute"); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity p_110775_1_) { + return ResourceManager.soyuz_lander_tex; + } +} diff --git a/src/main/java/com/hbm/render/entity/mob/RenderDummy.java b/src/main/java/com/hbm/render/entity/mob/RenderDummy.java new file mode 100644 index 000000000..a85d4ea5e --- /dev/null +++ b/src/main/java/com/hbm/render/entity/mob/RenderDummy.java @@ -0,0 +1,31 @@ +package com.hbm.render.entity.mob; + +import com.hbm.entity.mob.EntityDummy; +import com.hbm.lib.RefStrings; + +import net.minecraft.client.model.ModelBiped; +import net.minecraft.client.renderer.entity.RenderBiped; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.util.ResourceLocation; + +public class RenderDummy extends RenderBiped { + + public RenderDummy() { + super(new ModelBiped(0.0F), 0.5F, 1.0F); + } + + @Override + protected ResourceLocation getEntityTexture(EntityLiving entity) { + return this.getEntityTexture((EntityDummy) entity); + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return this.getEntityTexture((EntityDummy) entity); + } + + protected ResourceLocation getEntityTexture(EntityDummy entity) { + return new ResourceLocation(RefStrings.MODID + ":textures/entity/dummy.png"); + } +} diff --git a/src/main/java/com/hbm/render/entity/projectile/RenderBeam.java b/src/main/java/com/hbm/render/entity/projectile/RenderBeam.java index 10db6d628..2ee6039ed 100644 --- a/src/main/java/com/hbm/render/entity/projectile/RenderBeam.java +++ b/src/main/java/com/hbm/render/entity/projectile/RenderBeam.java @@ -20,6 +20,9 @@ public class RenderBeam extends Render { GL11.glPushMatrix(); GL11.glTranslatef((float) x, (float) y, (float) z); + boolean fog = GL11.glIsEnabled(GL11.GL_FOG); + GL11.glDisable(GL11.GL_FOG); + if(bullet.config.renderRotations) { GL11.glRotatef(bullet.prevRotationYaw + (bullet.rotationYaw - bullet.prevRotationYaw) * interp - 90.0F, 0.0F, 1.0F, 0.0F); GL11.glRotatef(bullet.prevRotationPitch + (bullet.rotationPitch - bullet.prevRotationPitch) * interp + 180, 0.0F, 0.0F, 1.0F); @@ -29,6 +32,8 @@ public class RenderBeam extends Render { bullet.config.rendererBeam.accept(bullet, interp); } + if(fog) GL11.glEnable(GL11.GL_FOG); + GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java index bcee704d8..5923c0337 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java @@ -481,12 +481,12 @@ public class ItemRenderLibrary { GL11.glScaled(8, 8, 8); } public void renderCommon() { - GL11.glScaled(6, 6, 6); - GL11.glRotatef(22.5F, 0F, 1F, 0F); - GL11.glDisable(GL11.GL_CULL_FACE); - bindTexture(ResourceManager.mine_ap_tex); - ResourceManager.mine_ap.renderAll(); - GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glScaled(1.25, 1.25, 1.25); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.mine_ap_grass_tex); ResourceManager.mine_ap.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); }}); renderers.put(Item.getItemFromBlock(ModBlocks.mine_he), new ItemRenderBase() { @@ -510,12 +510,15 @@ public class ItemRenderLibrary { renderers.put(Item.getItemFromBlock(ModBlocks.mine_shrap), new ItemRenderBase() { public void renderInventory() { - GL11.glScaled(6, 6, 6); + GL11.glScaled(8, 8, 8); } public void renderCommon() { - GL11.glScaled(4, 4, 4); - bindTexture(ResourceManager.mine_shrap_tex); - ResourceManager.mine_he.renderAll(); + GL11.glScaled(1.25, 1.25, 1.25); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.mine_shrap_tex); ResourceManager.mine_ap.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); }}); renderers.put(Item.getItemFromBlock(ModBlocks.mine_fat), new ItemRenderBase() { diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderBioRevolver.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderBioRevolver.java deleted file mode 100644 index ec65b0ef2..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderBioRevolver.java +++ /dev/null @@ -1,185 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.weapon.ItemGunBio; -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderBioRevolver 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); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.bio_revolver_tex); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.1D; - GL11.glRotated(25, 0, 0, 1); - GL11.glTranslated(1.0, 0.25, -0.25); - GL11.glRotated(80, 0, 1, 0); - GL11.glScaled(s0, s0, s0); - double width = 0.5D; - - GL11.glPushMatrix(); - GL11.glTranslated(0.0, 1.75, 10.0); - - double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); - GL11.glTranslated(0, -recoil[2] * 1.5, recoil[2]); - - GL11.glShadeModel(GL11.GL_SMOOTH); - - if(ItemGunBio.smokeNodes.size() > 1) { - - Tessellator tess = Tessellator.instance; - tess.startDrawingQuads(); - tess.setNormal(0F, 1F, 0F); - - for(int i = 0; i < ItemGunBio.smokeNodes.size() - 1; i++) { - double[] node = ItemGunBio.smokeNodes.get(i); - double[] past = ItemGunBio.smokeNodes.get(i + 1); - - tess.setColorRGBA_F(1F, 1F, 1F, (float) node[3]); - tess.addVertex(node[0], node[1], node[2]); - tess.setColorRGBA_F(1F, 1F, 1F, 0F); - tess.addVertex(node[0] + width, node[1], node[2]); - tess.setColorRGBA_F(1F, 1F, 1F, 0F); - tess.addVertex(past[0] + width, past[1], past[2]); - tess.setColorRGBA_F(1F, 1F, 1F, (float) past[3]); - tess.addVertex(past[0], past[1], past[2]); - - tess.setColorRGBA_F(1F, 1F, 1F, (float) node[3]); - tess.addVertex(node[0], node[1], node[2]); - tess.setColorRGBA_F(1F, 1F, 1F, 0F); - tess.addVertex(node[0] - width, node[1], node[2]); - tess.setColorRGBA_F(1F, 1F, 1F, 0F); - tess.addVertex(past[0] - width, past[1], past[2]); - tess.setColorRGBA_F(1F, 1F, 1F, (float) past[3]); - tess.addVertex(past[0], past[1], past[2]); - } - GL11.glAlphaFunc(GL11.GL_GREATER, 0F); - GL11.glEnable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_TEXTURE_2D); - tess.draw(); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glDisable(GL11.GL_BLEND); - GL11.glAlphaFunc(GL11.GL_GEQUAL, 0.1F); - } - - GL11.glPopMatrix(); - GL11.glTranslated(recoil[0], recoil[1], recoil[2]); - GL11.glRotated(recoil[2] * 10, 1, 0, 0); - - double[] reloadMove = HbmAnimations.getRelevantTransformation("RELOAD_MOVE"); - GL11.glTranslated(reloadMove[0], reloadMove[1], reloadMove[2]); - - double[] reloadRot = HbmAnimations.getRelevantTransformation("RELOAD_ROT"); - GL11.glRotated(reloadRot[0], 1, 0, 0); - GL11.glRotated(reloadRot[2], 0, 0, 1); - GL11.glRotated(reloadRot[1], 0, 1, 0); - ResourceManager.bio_revolver.renderPart("Grip"); - - GL11.glPushMatrix(); /// FRONT PUSH /// - GL11.glRotated(HbmAnimations.getRelevantTransformation("FRONT")[2], 1, 0, 0); - ResourceManager.bio_revolver.renderPart("Barrel"); - GL11.glPushMatrix(); /// LATCH PUSH /// - GL11.glTranslated(0, 2.3125, -0.875); - GL11.glRotated(HbmAnimations.getRelevantTransformation("LATCH")[2], 1, 0, 0); - GL11.glTranslated(0, -2.3125, 0.875); - ResourceManager.bio_revolver.renderPart("Latch"); - GL11.glPopMatrix(); /// LATCH POP /// - - GL11.glPushMatrix(); /// DRUM PUSH /// - GL11.glTranslated(0, 1, 0); - GL11.glRotated(HbmAnimations.getRelevantTransformation("DRUM")[2] * 60, 0, 0, 1); - GL11.glTranslated(0, -1, 0); - GL11.glTranslated(0, 0, HbmAnimations.getRelevantTransformation("DRUM_PUSH")[2]); - ResourceManager.bio_revolver.renderPart("Drum"); - GL11.glPopMatrix(); /// DRUM POP /// - - GL11.glPopMatrix(); /// FRONT POP /// - - GL11.glPushMatrix(); /// HAMMER /// - GL11.glTranslated(0, 0, -4.5); - GL11.glRotated(-45 + 45 * HbmAnimations.getRelevantTransformation("HAMMER")[2], 1, 0, 0); - GL11.glTranslated(0, 0, 4.5); - ResourceManager.bio_revolver.renderPart("Hammer"); - GL11.glPopMatrix(); - - GL11.glShadeModel(GL11.GL_FLAT); - - break; - - case EQUIPPED: - - double scale = 0.1D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(15F, 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(4F, 1F, 4F); - - break; - - case ENTITY: - - double s1 = 0.075D; - GL11.glScaled(s1, s1, s1); - GL11.glRotatef(90, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(0F, 1F, 0F); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 0.8D; - GL11.glTranslated(8, 7, 0); - GL11.glRotated(-90, 0, 1, 0); - GL11.glRotated(-135, 1, 0, 0); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - if(type != ItemRenderType.EQUIPPED_FIRST_PERSON) { - GL11.glShadeModel(GL11.GL_SMOOTH); - ResourceManager.bio_revolver.renderAll(); - GL11.glShadeModel(GL11.GL_FLAT); - } - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderGunAnim.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderGunAnim.java index 492a2be44..77455bf52 100644 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderGunAnim.java +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderGunAnim.java @@ -4,7 +4,6 @@ import org.lwjgl.opengl.GL11; import com.hbm.items.ModItems; import com.hbm.items.weapon.GunB92; -import com.hbm.items.weapon.GunLeverActionS; import com.hbm.lib.RefStrings; import com.hbm.render.model.ModelB92; import com.hbm.render.model.ModelB93; @@ -71,12 +70,6 @@ public class ItemRenderGunAnim implements IItemRenderer { GL11.glTranslatef(2.3F, 0.2F, 0.8F); } - if((item.getItem() == ModItems.gun_lever_action_sonata) && GunLeverActionS.getRotationFromAnim(item) > 0) { - GL11.glRotatef(GunLeverActionS.getRotationFromAnim(item) * -25, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(GunLeverActionS.getOffsetFromAnim(item) * 1.5F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, GunLeverActionS.getOffsetFromAnim(item) * -1.5F, 0.0F); - } - if(item.getItem() == ModItems.gun_b92 && GunB92.getRotationFromAnim(item) > 0) { float off = GunB92.getRotationFromAnim(item) * 2; GL11.glRotatef(GunB92.getRotationFromAnim(item) * -90, 0.0F, 0.0F, 1.0F); @@ -88,9 +81,6 @@ public class ItemRenderGunAnim implements IItemRenderer { GL11.glRotatef(GunB92.getRotationFromAnim(item) * -90, 0.0F, 0.0F, 1.0F); GL11.glTranslatef(off * -0.5F, off * -0.5F, 0.0F); } - - if(item.getItem() == ModItems.gun_lever_action_sonata) - flippedGun.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunLeverActionS.getRotationFromAnim(item)); if(item.getItem() == ModItems.gun_b92) b92.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunB92.getTransFromAnim(item)); if(item.getItem() == ModItems.gun_b93) @@ -131,8 +121,6 @@ public class ItemRenderGunAnim implements IItemRenderer { GL11.glTranslatef(2.3F, 0.2F, 0.8F); } - if(item.getItem() == ModItems.gun_lever_action_sonata) - flippedGun.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunLeverActionS.getRotationFromAnim(item)); if(item.getItem() == ModItems.gun_b92) b92.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunB92.getTransFromAnim(item)); if(item.getItem() == ModItems.gun_b93) diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderOverkill.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderOverkill.java index bccd1c411..b2e9e2d6e 100644 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderOverkill.java +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderOverkill.java @@ -3,12 +3,10 @@ package com.hbm.render.item.weapon; import org.lwjgl.opengl.GL11; import com.hbm.items.ModItems; -import com.hbm.items.weapon.GunFolly; import com.hbm.items.weapon.ItemGunBase; import com.hbm.lib.RefStrings; import com.hbm.render.model.ModelDefabricator; import com.hbm.render.model.ModelEuthanasia; -import com.hbm.render.model.ModelFolly; import com.hbm.render.model.ModelHP; import com.hbm.render.model.ModelJack; import com.hbm.render.model.ModelLacunae; @@ -29,7 +27,6 @@ public class ItemRenderOverkill implements IItemRenderer { protected ModelEuthanasia euthanasia; protected ModelDefabricator defab; protected ModelLacunae lacunae; - protected ModelFolly folly; public ItemRenderOverkill() { powerJack = new ModelJack(); @@ -38,7 +35,6 @@ public class ItemRenderOverkill implements IItemRenderer { euthanasia = new ModelEuthanasia(); defab = new ModelDefabricator(); lacunae = new ModelLacunae(); - folly = new ModelFolly(); } @Override @@ -91,8 +87,6 @@ public class ItemRenderOverkill implements IItemRenderer { Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelPipRed.png")); if(item.getItem() == ModItems.gun_lacunae) Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelLacunaeReal.png")); - if(item.getItem() == ModItems.gun_folly) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelFolly.png")); GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); GL11.glTranslatef(-0.5F, 0.0F, -0.2F); @@ -122,12 +116,6 @@ public class ItemRenderOverkill implements IItemRenderer { GL11.glTranslatef(0.5F, 0.3F, -0.2F); } - if(item.getItem() == ModItems.gun_folly) { - GL11.glRotatef(-20.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(5.0F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-0.2F, 0.0F, -0.2F); - } - if(item.getItem() == ModItems.gun_jack) powerJack.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); if(item.getItem() == ModItems.gun_spark) @@ -142,12 +130,6 @@ public class ItemRenderOverkill implements IItemRenderer { if(item.getItem() == ModItems.gun_lacunae) lacunae.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, ItemGunBase.readNBT(item, "rot")); - if(item.getItem() == ModItems.gun_folly) { - int state = GunFolly.getState(item); - int time = GunFolly.getTimer(item); - folly.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, state, time); - } - GL11.glPopMatrix(); break; case EQUIPPED: @@ -175,8 +157,6 @@ public class ItemRenderOverkill implements IItemRenderer { Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelPipRed.png")); if(item.getItem() == ModItems.gun_lacunae) Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelLacunaeReal.png")); - if(item.getItem() == ModItems.gun_folly) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelFolly.png")); GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); @@ -208,9 +188,6 @@ public class ItemRenderOverkill implements IItemRenderer { GL11.glRotatef(185, 0, 1, 0); GL11.glTranslatef(0.5F, 0.6F, 0.2F); } - if(item.getItem() == ModItems.gun_folly) { - GL11.glTranslatef(0.6F, 0.0F, 0.0F); - } if(item.getItem() == ModItems.gun_jack) powerJack.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); @@ -226,11 +203,6 @@ public class ItemRenderOverkill implements IItemRenderer { if(item.getItem() == ModItems.gun_lacunae) lacunae.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, f); - if(item.getItem() == ModItems.gun_folly) { - int state = GunFolly.getState(item); - int time = GunFolly.getTimer(item); - folly.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, state, time); - } GL11.glPopMatrix(); break; case ENTITY: @@ -258,8 +230,6 @@ public class ItemRenderOverkill implements IItemRenderer { Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelPipRed.png")); if(item.getItem() == ModItems.gun_lacunae) Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelLacunaeReal.png")); - if(item.getItem() == ModItems.gun_folly) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelFolly.png")); GL11.glRotatef(180.0F, 1.0F, 0.0F, 0.0F); @@ -293,11 +263,6 @@ public class ItemRenderOverkill implements IItemRenderer { if(item.getItem() == ModItems.gun_lacunae) lacunae.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, f); - if(item.getItem() == ModItems.gun_folly) { - int state = GunFolly.getState(item); - int time = GunFolly.getTimer(item); - folly.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, state, time); - } GL11.glPopMatrix(); break; default: break; diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponAR15.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponAR15.java deleted file mode 100644 index 27e348b32..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponAR15.java +++ /dev/null @@ -1,123 +0,0 @@ -package com.hbm.render.item.weapon; - -import com.hbm.render.anim.HbmAnimations; -import net.minecraftforge.client.model.IModelCustom; -import org.lwjgl.opengl.GL11; - -import com.hbm.main.ResourceManager; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponAR15 implements IItemRenderer { - - public ItemRenderWeaponAR15() { } - - @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.ar15_tex); - - IModelCustom model = ResourceManager.ar15; - - switch (type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.25D; - GL11.glRotated(25, 0, 0, 1); - GL11.glTranslated(1.25, 0, -0.25); - GL11.glRotated(-100, 0, 1, 0); - GL11.glScaled(s0, s0, s0); - - double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); - GL11.glRotated(recoil[0] * 2.5, 1, 0, 0); - GL11.glTranslated(0, 0, recoil[0]); - - - double[] tilt = HbmAnimations.getRelevantTransformation("TILT"); - GL11.glTranslated(0, tilt[0], 3); - GL11.glRotated(tilt[0] * -35, 0, 0, 1); - GL11.glTranslated(0, 0, -3); - - model.renderPart("main"); - - double[] mag = HbmAnimations.getRelevantTransformation("MAG"); - GL11.glPushMatrix(); - GL11.glTranslated(0, 0, 5); - GL11.glRotated(mag[0] * 60 * (mag[2] == 1 ? 2.5 : 1), -1, 0, 0); - GL11.glTranslated(0, 0, -5); - model.renderPart("mag"); - GL11.glPopMatrix(); - - break; - - case EQUIPPED: - - double scale = 0.25D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(-170, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-15F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(-2F, -0.9F, -0.75F); - - break; - - case ENTITY: - - double s1 = 0.2D; - GL11.glScaled(s1, s1, s1); - GL11.glTranslated(0, 1, 0); - GL11.glRotatef(90, 0, 1, 0); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 1.45D; - - GL11.glTranslated(6, 9, 0); - GL11.glRotated(90, 0, 1, 0); - GL11.glRotated(135, 1, 0, 0); - GL11.glScaled(s, s, -s); - - break; - - default: - break; - } - - if (type != ItemRenderType.EQUIPPED_FIRST_PERSON) { - model.renderAll(); - } - - GL11.glShadeModel(GL11.GL_FLAT); - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponChemthrower.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponChemthrower.java deleted file mode 100644 index 4996d353e..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponChemthrower.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.weapon.ItemGunChemthrower; -import com.hbm.main.ResourceManager; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponChemthrower 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); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.chemthrower_tex); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.25D; - GL11.glRotated(25, 0, 0, 1); - GL11.glTranslated(1.0, 0.0, 0.0); - GL11.glRotated(170, 0, 1, 0); - GL11.glScaled(s0, s0, s0); - - break; - - case EQUIPPED: - - double scale = 0.25D; - GL11.glScaled(scale, scale, scale); - GL11.glRotated(100, 0, 1, 0); - GL11.glRotated(-10, 1, 0, 0); - GL11.glRotated(10, 0, 0, 1); - GL11.glTranslatef(-0.25F, -2.5F, 1.75F); - - break; - - case ENTITY: - - double s1 = 0.25D; - GL11.glScaled(s1, s1, s1); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 1.5D; - GL11.glTranslated(9, 9, 0); - GL11.glRotated(180, 1, 0, 0); - GL11.glRotated(45, 0, 0, -1); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - ItemGunChemthrower chem = (ItemGunChemthrower) item.getItem(); - - GL11.glShadeModel(GL11.GL_SMOOTH); - - ResourceManager.chemthrower.renderPart("Gun"); - ResourceManager.chemthrower.renderPart("Hose"); - ResourceManager.chemthrower.renderPart("Nozzle"); - - GL11.glTranslated(0, 0.875, 1.75); - double d = (double) chem.getMag(item) / (double) chem.mainConfig.ammoCap; - GL11.glRotated(135 - d * 270, 1, 0, 0); - GL11.glTranslated(0, -0.875, -1.75); - - ResourceManager.chemthrower.renderPart("Gauge"); - - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCoilgun.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCoilgun.java deleted file mode 100644 index 4bca0361c..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCoilgun.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponCoilgun implements IItemRenderer { - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - case INVENTORY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - - return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - - GL11.glPushMatrix(); - - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_LIGHTING); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.coilgun_tex); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.25D; - GL11.glRotated(20, 0, 0, 1); - GL11.glTranslated(0.75, 0.3, -0.5); - GL11.glRotated(-10, 0, 1, 0); - GL11.glScaled(s0, s0, s0); - - double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); - GL11.glTranslated(-1.5 - recoil[0] * 0.5, 0, 0); - GL11.glRotated(recoil[0] * 45, 0, 0, 1); - GL11.glTranslated(1.5, 0, 0); - - double[] reload = HbmAnimations.getRelevantTransformation("RELOAD"); - GL11.glTranslated(-2.5, 0, 0); - GL11.glRotated(reload[0] * -45, 0, 0, 1); - GL11.glTranslated(2.5, 0, 0); - - break; - - case EQUIPPED: - - double scale = 0.25D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(-80, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-15F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(1.25F, 0.5F, -1.75F); - - break; - - case ENTITY: - - double s1 = 0.2D; - GL11.glScaled(s1, s1, s1); - - break; - - case INVENTORY: - - double s = 3.5D; - GL11.glTranslated(6, 8, 0); - GL11.glRotated(-135, 0, 0, 1); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - GL11.glShadeModel(GL11.GL_SMOOTH); - ResourceManager.coilgun.renderAll(); - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCongo.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCongo.java deleted file mode 100644 index 07cac42d7..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCongo.java +++ /dev/null @@ -1,164 +0,0 @@ -package com.hbm.render.item.weapon; - -import java.awt.Color; - -import org.lwjgl.opengl.GL11; - -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; -import com.hbm.items.weapon.ItemGunBase; -import com.hbm.main.ResourceManager; -import com.hbm.particle.SpentCasing; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponCongo 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.glShadeModel(GL11.GL_SMOOTH); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.congolake_tex); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.25D; - GL11.glRotated(20, 0, 0, 1); - GL11.glTranslated(0.5, 0.0, -0.5); - GL11.glRotated(-10, 0, 1, 0); - GL11.glRotated(90, 0, 1, 0); - GL11.glScaled(s0, s0, s0); - - HbmAnimations.applyRelevantTransformation("Gun"); - ResourceManager.congolake.renderPart("Gun"); - - - GL11.glPushMatrix(); - { - HbmAnimations.applyRelevantTransformation("Pump"); - ResourceManager.congolake.renderPart("Pump"); - } - GL11.glPopMatrix(); - - - GL11.glPushMatrix(); - { - HbmAnimations.applyRelevantTransformation("Sight"); - ResourceManager.congolake.renderPart("Sight"); - } - GL11.glPopMatrix(); - - - GL11.glPushMatrix(); - { - HbmAnimations.applyRelevantTransformation("Loop"); - ResourceManager.congolake.renderPart("Loop"); - } - GL11.glPopMatrix(); - - - GL11.glPushMatrix(); - { - HbmAnimations.applyRelevantTransformation("GuardOuter"); - ResourceManager.congolake.renderPart("GuardOuter"); - - GL11.glPushMatrix(); - { - HbmAnimations.applyRelevantTransformation("GuardInner"); - ResourceManager.congolake.renderPart("GuardInner"); - } - GL11.glPopMatrix(); - } - GL11.glPopMatrix(); - - - GL11.glPushMatrix(); - { - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.casings_tex); - - HbmAnimations.applyRelevantTransformation("Shell"); - - ItemGunBase gun = (ItemGunBase)item.getItem(); - BulletConfiguration bullet = BulletConfigSyncingUtil.pullConfig(gun.mainConfig.config.get(ItemGunBase.getMagType(item))); - int[] colors = bullet.spentCasing != null ? bullet.spentCasing.getColors() : new int[] { SpentCasing.COLOR_CASE_40MM }; - - Color shellColor = new Color(colors[0]); - GL11.glColor3f(shellColor.getRed() / 255F, shellColor.getGreen() / 255F, shellColor.getBlue() / 255F); - ResourceManager.congolake.renderPart("Shell"); - - Color shellForeColor = new Color(colors.length > 1 ? colors[1] : colors[0]); - GL11.glColor3f(shellForeColor.getRed() / 255F, shellForeColor.getGreen() / 255F, shellForeColor.getBlue() / 255F); - ResourceManager.congolake.renderPart("ShellFore"); - - GL11.glColor3f(1F, 1F, 1F); - } - GL11.glPopMatrix(); - - break; - - case EQUIPPED: - - double scale = 0.35D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(15F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(15, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(1.25F, -1F, 1.5F); - - break; - - case ENTITY: - - double s1 = 0.2D; - GL11.glScaled(s1, s1, s1); - - break; - - case INVENTORY: - - double s = 2D; - GL11.glTranslated(6, 9, 0); - GL11.glRotated(-135, 0, 0, 1); - GL11.glRotated(-90, 0, 1, 0); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - if(type != ItemRenderType.EQUIPPED_FIRST_PERSON) { - ResourceManager.congolake.renderAll(); - } - - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFBolt.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFBolt.java deleted file mode 100644 index d1c7b88aa..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFBolt.java +++ /dev/null @@ -1,146 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.ModItems; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; -import net.minecraftforge.client.model.IModelCustom; - -public class ItemRenderWeaponFFBolt implements IItemRenderer { - - ResourceLocation texture; - IModelCustom model; - - public ItemRenderWeaponFFBolt(IModelCustom model, ResourceLocation texture) { - this.model = model; - this.texture = texture; - } - - @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); - boolean renderBolt = true; - Minecraft.getMinecraft().renderEngine.bindTexture(texture); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - if(item.getItem() == ModItems.gun_bolt_action_saturnite && Minecraft.getMinecraft().thePlayer.isSneaking()) { - GL11.glPopMatrix(); - return; - } - - double s0 = 0.5D; - GL11.glTranslated(0.5, 0.25, -0.2); - GL11.glScaled(s0, s0, s0); - GL11.glRotated(15, 0, 0, 1); - GL11.glRotated(20, 0, -1, 0); - - double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); - GL11.glTranslated(recoil[0] * -0.5, 0, 0); - - double[] pull = HbmAnimations.getRelevantTransformation("LEVER_PULL"); - double[] rotate = HbmAnimations.getRelevantTransformation("LEVER_ROTATE"); - - GL11.glPushMatrix(); - GL11.glTranslated(pull[0], 0, 0); - double heightOffset = 0.52D; - GL11.glTranslated(0, heightOffset, 0); - GL11.glRotated(rotate[0] * 35, -1, 0, 0); - GL11.glTranslated(0, -heightOffset, 0); - model.renderPart("Bolt"); - GL11.glPopMatrix(); - - renderBolt = false; - - /*if(item.getItem() == ModItems.gun_bolt_action_saturnite) { - GL11.glPushMatrix(); - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glDisable(GL11.GL_LIGHTING); - - Tessellator tessellator = Tessellator.instance; - int color = 0x00FF00; - - tessellator.startDrawing(3); - tessellator.setColorOpaque_I(color); - tessellator.addVertex(5, 0, 0); - tessellator.addVertex(150, 0, 0); - tessellator.draw(); - - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glPopMatrix(); - }*/ - - break; - - case EQUIPPED: - - double scale = 0.25D; - GL11.glRotated(-75, 0, 1, 0); - GL11.glRotated(-10, 0, 0, 1); - GL11.glRotated(10, 1, 0, 0); - GL11.glTranslated(0.3, 0.15, -0.5); - GL11.glScaled(scale, scale, scale); - - break; - - case ENTITY: - - double s1 = 0.25D; - GL11.glScaled(s1, s1, s1); - GL11.glRotated(90, 0, 1, 0); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 1.5D; - GL11.glTranslated(10, 11, 0); - GL11.glRotated(-135, 0, 0, 1); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - model.renderPart("Gun"); - if(renderBolt) - model.renderPart("Bolt"); - - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFColt.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFColt.java deleted file mode 100644 index 9e02394a5..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFColt.java +++ /dev/null @@ -1,124 +0,0 @@ -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.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponFFColt implements IItemRenderer { - - ResourceLocation main; - ResourceLocation hammer; - ResourceLocation grip; - - public ItemRenderWeaponFFColt(ResourceLocation main, ResourceLocation hammer, ResourceLocation grip) { - this.main = main; - this.hammer = hammer; - this.grip = grip; - } - - @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); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 1.5D; - GL11.glTranslated(0.75, 0.5, 0); - GL11.glScaled(s0, s0, s0); - GL11.glRotated(100, 0, -1, 0); - GL11.glRotated(25, 1, 0, 0); - - HbmAnimations.applyRelevantTransformation("Body"); - Minecraft.getMinecraft().renderEngine.bindTexture(main); - ResourceManager.ff_python.renderPart("Body"); - - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("Cylinder"); - ResourceManager.ff_python.renderPart("Cylinder"); - GL11.glPopMatrix(); - - Minecraft.getMinecraft().renderEngine.bindTexture(grip); - ResourceManager.ff_python.renderPart("Grip"); - - HbmAnimations.applyRelevantTransformation("Hammer"); - Minecraft.getMinecraft().renderEngine.bindTexture(hammer); - ResourceManager.ff_python.renderPart("Hammer"); - - GL11.glPopMatrix(); - - return; - - case EQUIPPED: - - double scale = 1.5D; - GL11.glRotated(195, 0, 1, 0); - GL11.glRotated(-10, 0, 0, 1); - GL11.glRotated(-10, 1, 0, 0); - GL11.glTranslated(-0.5, 0.1, -0.25); - GL11.glScaled(scale, scale, scale); - - break; - - case ENTITY: - - double s1 = 1D; - GL11.glScaled(s1, s1, s1); - GL11.glRotated(90, 0, 1, 0); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 17D; - GL11.glTranslated(8, 8, 0); - GL11.glRotated(-135, 0, 0, 1); - GL11.glRotated(90, 0, 1, 0); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - Minecraft.getMinecraft().renderEngine.bindTexture(main); - ResourceManager.ff_python.renderPart("Body"); - ResourceManager.ff_python.renderPart("Cylinder"); - Minecraft.getMinecraft().renderEngine.bindTexture(grip); - ResourceManager.ff_python.renderPart("Grip"); - Minecraft.getMinecraft().renderEngine.bindTexture(hammer); - ResourceManager.ff_python.renderPart("Hammer"); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFCursed.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFCursed.java deleted file mode 100644 index a53e3147b..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFCursed.java +++ /dev/null @@ -1,114 +0,0 @@ -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 ItemRenderWeaponFFCursed 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); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 1.5D; - GL11.glTranslated(0.75, 0.5, 0); - GL11.glScaled(s0, s0, s0); - GL11.glRotated(100, 0, -1, 0); - GL11.glRotated(20, 1, 0, 0); - - GL11.glShadeModel(GL11.GL_SMOOTH); - - HbmAnimations.applyRelevantTransformation("Body"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.ff_cursed); - ResourceManager.cursed_revolver.renderPart("Body"); - ResourceManager.cursed_revolver.renderPart("Barrel"); - ResourceManager.cursed_revolver.renderPart("Grip"); - - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("Slide"); - ResourceManager.cursed_revolver.renderPart("Slide"); - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("Magazine"); - ResourceManager.cursed_revolver.renderPart("Magazine"); - GL11.glPopMatrix(); - - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - - return; - - case EQUIPPED: - - double scale = 1.5D; - GL11.glRotated(195, 0, 1, 0); - GL11.glRotated(-10, 0, 0, 1); - GL11.glRotated(-10, 1, 0, 0); - GL11.glTranslated(-0.5, 0.1, -0.25); - GL11.glScaled(scale, scale, scale); - - break; - - case ENTITY: - - double s1 = 1D; - GL11.glScaled(s1, s1, s1); - GL11.glRotated(90, 0, 1, 0); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 17D; - GL11.glTranslated(10, 11.5, 0); - GL11.glRotated(-135, 0, 0, 1); - GL11.glRotated(90, 0, 1, 0); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - GL11.glShadeModel(GL11.GL_SMOOTH); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.ff_cursed); - ResourceManager.cursed_revolver.renderAll(); - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFMG42.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFMG42.java deleted file mode 100644 index 880faa2b5..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFMG42.java +++ /dev/null @@ -1,112 +0,0 @@ -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 ItemRenderWeaponFFMG42 implements IItemRenderer { - - public ItemRenderWeaponFFMG42() { } - - @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.mg42_tex); - boolean renderMag = true; - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.65D; - GL11.glRotated(170, 0, 1, 0); - GL11.glRotated(-25, 0, 0, 1); - GL11.glTranslated(-0.125, 0, 0); - GL11.glScaled(s0, s0, s0); - - double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); - GL11.glTranslated(recoil[0] * 0.25, 0, 0); - - double[] reload = HbmAnimations.getRelevantTransformation("MAG"); - GL11.glRotated(reload[1] * 15, 1, 0, 0); - - GL11.glPushMatrix(); - - GL11.glRotated(reload[1] * -45, 1, 0, 0); - GL11.glTranslated(0, reload[1] * 0.25, -reload[1]); - ResourceManager.mg42.renderPart("Mag"); - GL11.glPopMatrix(); - - renderMag = false; - - break; - - case EQUIPPED: - - double scale = 0.35D; - GL11.glScaled(scale, scale, scale); - GL11.glRotated(100, 0, 1, 0); - GL11.glRotated(-10, 1, 0, 0); - GL11.glRotated(10, 0, 0, 1); - GL11.glTranslated(-0.5, 0.75, 1.25); - - break; - - case ENTITY: - - double s1 = 0.3D; - GL11.glScaled(s1, s1, s1); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 1.75D; - GL11.glTranslated(10, 9.5, 0); - GL11.glRotated(180, 1, 0, 0); - GL11.glRotated(-45, 0, 0, 1); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - ResourceManager.mg42.renderPart("Gun"); - if(renderMag) ResourceManager.mg42.renderPart("Mag"); - - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFMaresLeg.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFMaresLeg.java deleted file mode 100644 index f63f1d68e..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFMaresLeg.java +++ /dev/null @@ -1,131 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponFFMaresLeg implements IItemRenderer { - - ResourceLocation main; - ResourceLocation grip; - - public ItemRenderWeaponFFMaresLeg(ResourceLocation main, ResourceLocation grip) { - this.main = main; - this.grip = grip; - } - - @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); - - EntityPlayer player = Minecraft.getMinecraft().thePlayer; - - double lever = 0; - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 1.25D; - GL11.glTranslated(0.75, 0.5, 0); - GL11.glScaled(s0, s0, s0); - - if(!player.isSneaking()) { - GL11.glRotated(100, 0, -1, 0); - GL11.glRotated(-5, 0, 1, 0); - GL11.glRotated(20, 1, 0, 0); - } else { - GL11.glRotated(97.5, 0, -1, 0); - GL11.glTranslated(-0.71, 0.375, 0); - GL11.glRotated(25, 1, 0, 0); - GL11.glRotated(1, 0, 1, 0); - GL11.glRotated(-3, 0, 0, 1); - GL11.glRotated(0.2, 0, 1, 0); - GL11.glTranslated(-0.006, -0.005, 0.4); - } - - double[] recoil = HbmAnimations.getRelevantTransformation("LEVER_RECOIL"); - GL11.glTranslated(0, 0, recoil[0] * 0.5); - - double[] rotation = HbmAnimations.getRelevantTransformation("LEVER_ROTATE"); - lever = rotation[2]; - GL11.glTranslated(0, 0, 0.5); - GL11.glRotated(Math.min(lever, 30), 1, 0, 0); - GL11.glTranslated(0, 0, -0.5); - - break; - - case EQUIPPED: - - double scale = 1.25D; - GL11.glRotated(195, 0, 1, 0); - GL11.glRotated(-10, 0, 0, 1); - GL11.glRotated(-10, 1, 0, 0); - GL11.glTranslated(-0.45, 0.1, -0.5); - GL11.glScaled(scale, scale, scale); - - break; - - case ENTITY: - - double s1 = 1D; - GL11.glScaled(s1, s1, s1); - GL11.glRotated(90, 0, 1, 0); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 9D; - GL11.glTranslated(8, 9, 0); - GL11.glRotated(-135, 0, 0, 1); - GL11.glRotated(90, 0, 1, 0); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - Minecraft.getMinecraft().renderEngine.bindTexture(grip); - ResourceManager.ff_maresleg.renderPart("Grip"); - Minecraft.getMinecraft().renderEngine.bindTexture(main); - ResourceManager.ff_maresleg.renderPart("Gun"); - GL11.glTranslated(0, 0.1, 0.25); - GL11.glRotated(lever * 1.5, 1, 0, 0); - GL11.glTranslated(0, -0.1, -0.25); - ResourceManager.ff_maresleg.renderPart("Lever"); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFNightmare.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFNightmare.java deleted file mode 100644 index 6a7b3f37c..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFNightmare.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.weapon.ItemGunBase; -import com.hbm.main.ResourceManager; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponFFNightmare 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); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.2D; - GL11.glTranslated(0.75, 0.55, 0); - GL11.glScaled(s0, s0, s0); - GL11.glRotated(100, 0, -1, 0); - GL11.glRotated(25, 1, 0, 0); - - break; - - case EQUIPPED: - - double scale = 0.2D; - GL11.glRotated(195, 0, 1, 0); - GL11.glRotated(-10, 0, 0, 1); - GL11.glRotated(-10, 1, 0, 0); - GL11.glTranslated(-0.5, 0.3, -0.25); - GL11.glScaled(scale, scale, scale); - - break; - - case ENTITY: - - double s1 = 0.15D; - GL11.glScaled(s1, s1, s1); - GL11.glRotated(90, 0, 1, 0); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 1.75D; - GL11.glTranslated(10, 9, 0); - GL11.glRotated(-135, 0, 0, 1); - GL11.glRotated(90, 0, 1, 0); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - GL11.glShadeModel(GL11.GL_SMOOTH); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.ff_nightmare_orig_tex); - ResourceManager.ff_nightmare.renderPart("Gun"); - - int ammo = ItemGunBase.getMag(item); - for(int i = 0; i < ammo; i++) { - ResourceManager.ff_nightmare.renderPart("Bullet" + (i + 1)); - } - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponKS23.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponKS23.java deleted file mode 100644 index 4160ee3f9..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponKS23.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.hbm.render.item.weapon; - -import java.awt.Color; - -import org.lwjgl.opengl.GL11; - -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; -import com.hbm.items.weapon.ItemGunBase; -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponKS23 implements IItemRenderer { - - public ItemRenderWeaponKS23() { } - - @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); - - EntityPlayer player = Minecraft.getMinecraft().thePlayer; - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.ks23_tex); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - GL11.glTranslatef(1.0F, 0.5F, -0.25F); - GL11.glRotatef(25F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(-100, 0.0F, 1.0F, 0.0F); - GL11.glScaled(0.75, 0.75, 0.75); - - if(player.isSneaking()) { - GL11.glRotatef(4.5F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-2F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-0.9F, 0.2F, 0.325F); - } - - HbmAnimations.applyRelevantTransformation("Body"); - - GL11.glShadeModel(GL11.GL_SMOOTH); - - ResourceManager.ks23.renderPart("Body"); - ResourceManager.ks23.renderPart("Trigger"); - - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("Bolt"); - ResourceManager.ks23.renderPart("Bolt"); - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("Guard"); - ResourceManager.ks23.renderPart("Guard"); - GL11.glPopMatrix(); - - - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.casings_tex); - - HbmAnimations.applyRelevantTransformation("Shell"); - - ItemGunBase gun = (ItemGunBase)item.getItem(); - BulletConfiguration bullet = BulletConfigSyncingUtil.pullConfig(gun.mainConfig.config.get(ItemGunBase.getMagType(item))); - int[] colors = bullet.spentCasing.getColors(); - - Color shellColor = new Color(colors[1]); - GL11.glColor3f(shellColor.getRed() / 255F, shellColor.getGreen() / 255F, shellColor.getBlue() / 255F); - ResourceManager.ks23.renderPart("Shell"); - - Color shellForeColor = new Color(colors[0]); - GL11.glColor3f(shellForeColor.getRed() / 255F, shellForeColor.getGreen() / 255F, shellForeColor.getBlue() / 255F); - ResourceManager.ks23.renderPart("ShellFore"); - - GL11.glColor3f(1F, 1F, 1F); - GL11.glPopMatrix(); - - - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glPopMatrix(); - - return; - - case EQUIPPED: - - GL11.glRotatef(20F, 1.0F, 0.0F, 1.0F); - GL11.glRotatef(-170F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-0.5F, 0.0F, -0.9F); - GL11.glScaled(0.5, 0.5, 0.5); - - break; - - case ENTITY: - - GL11.glTranslatef(0.3F, 0.2F, 0.0F); - GL11.glScaled(0.5, 0.5, 0.5); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - GL11.glTranslatef(7F, 8F, 0.0F); - GL11.glScaled(4, 4, -4); - GL11.glRotatef(-90, 0, 1, 0); - GL11.glRotatef(-135F, 1.0F, 0.0F, 0.0F); - - break; - - default: break; - } - - GL11.glShadeModel(GL11.GL_SMOOTH); - ResourceManager.ks23.renderAll(); - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glPopMatrix(); - } - -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponLilMac.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponLilMac.java deleted file mode 100644 index 9417e7d8a..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponLilMac.java +++ /dev/null @@ -1,256 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.ModItems; -import com.hbm.items.weapon.ItemGunPip; -import com.hbm.lib.RefStrings; -import com.hbm.main.MainRegistry; -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponLilMac implements IItemRenderer { - - public static final ResourceLocation lilmac_plume = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lilmac_plume.png"); - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - case INVENTORY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - - //prevent rendering when using scope - if(item.getItem() == ModItems.gun_revolver_pip && type == ItemRenderType.EQUIPPED_FIRST_PERSON && MainRegistry.proxy.me().isSneaking()) return; - - GL11.glPushMatrix(); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.1D; - GL11.glRotated(25, 0, 0, 1); - GL11.glTranslated(1.0, 0.25, -0.25); - GL11.glRotated(170, 0, 1, 0); - GL11.glScaled(s0, s0, s0); - double width = 0.5D; - - double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); - double[] reloadLift = HbmAnimations.getRelevantTransformation("RELOAD_LIFT"); - double[] reloadJolt = HbmAnimations.getRelevantTransformation("RELOAD_JOLT"); - double[] equipSpin = HbmAnimations.getRelevantTransformation("ROTATE"); - GL11.glTranslated(2, 0, 0); - GL11.glRotated(equipSpin[0], 0, 0, 1); - GL11.glTranslated(-2, 0, 0); - - GL11.glShadeModel(GL11.GL_SMOOTH); - - GL11.glPushMatrix(); - Tessellator tess = Tessellator.instance; - - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_BLEND); - - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glAlphaFunc(GL11.GL_GREATER, 0F); - GL11.glTranslated(-10, 2.25, 0); - GL11.glTranslated(-recoil[2] * 3.5, -recoil[2] * 1.375, 0); - - if(ItemGunPip.smokeNodes.size() > 1 && equipSpin[0] == 0) { - - tess.startDrawingQuads(); - tess.setNormal(0F, 1F, 0F); - - for(int i = 0; i < ItemGunPip.smokeNodes.size() - 1; i++) { - double[] node = ItemGunPip.smokeNodes.get(i); - double[] past = ItemGunPip.smokeNodes.get(i + 1); - - tess.setColorRGBA_F(1F, 1F, 1F, (float) node[3]); - tess.addVertex(node[0], node[1], node[2]); - tess.setColorRGBA_F(1F, 1F, 1F, 0F); - tess.addVertex(node[0], node[1], node[2] + width); - tess.setColorRGBA_F(1F, 1F, 1F, 0F); - tess.addVertex(past[0], past[1], past[2] + width); - tess.setColorRGBA_F(1F, 1F, 1F, (float) past[3]); - tess.addVertex(past[0], past[1], past[2]); - - tess.setColorRGBA_F(1F, 1F, 1F, (float) node[3]); - tess.addVertex(node[0], node[1], node[2]); - tess.setColorRGBA_F(1F, 1F, 1F, 0F); - tess.addVertex(node[0], node[1], node[2] - width); - tess.setColorRGBA_F(1F, 1F, 1F, 0F); - tess.addVertex(past[0], past[1], past[2] - width); - tess.setColorRGBA_F(1F, 1F, 1F, (float) past[3]); - tess.addVertex(past[0], past[1], past[2]); - } - GL11.glDepthMask(false); - tess.draw(); - GL11.glDepthMask(true); - } - - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glDisable(GL11.GL_BLEND); - GL11.glAlphaFunc(GL11.GL_GEQUAL, 0.1F); - GL11.glEnable(GL11.GL_CULL_FACE); - - GL11.glPopMatrix(); - - GL11.glTranslated(0, reloadLift[0] / -22D, 0); - - GL11.glTranslated(recoil[0], recoil[1], recoil[2]); - GL11.glRotated(recoil[2] * 10, 0, 0, 1); - GL11.glRotated(reloadLift[0], 0, 0, 1); - GL11.glTranslated(reloadJolt[0], 0, 0); - - double[] reloadTilt = HbmAnimations.getRelevantTransformation("RELAOD_TILT"); - GL11.glRotated(reloadTilt[0], 1, 0, 0); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.lilmac_scope_tex); - ResourceManager.lilmac.renderPart("Scope"); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.lilmac_tex); - ResourceManager.lilmac.renderPart("Gun"); - - double[] cylinderFlip = HbmAnimations.getRelevantTransformation("RELOAD_CYLINDER"); - GL11.glPushMatrix(); /// DRUM PUSH /// - GL11.glRotated(cylinderFlip[0], 1, 0, 0); - ResourceManager.lilmac.renderPart("Pivot"); - GL11.glTranslated(0, 1.75, 0); - GL11.glRotated(HbmAnimations.getRelevantTransformation("DRUM")[2] * -60, 1, 0, 0); - GL11.glTranslated(0, -1.75, 0); - ResourceManager.lilmac.renderPart("Cylinder"); - double[] reloadBullets = HbmAnimations.getRelevantTransformation("RELOAD_BULLETS"); - GL11.glTranslated(reloadBullets[0], reloadBullets[1], reloadBullets[2]); - if(HbmAnimations.getRelevantTransformation("RELOAD_BULLETS_CON")[0] != 1) - ResourceManager.lilmac.renderPart("Bullets"); - ResourceManager.lilmac.renderPart("Casings"); - GL11.glPopMatrix(); /// DRUM POP /// - - GL11.glPushMatrix(); /// HAMMER /// - GL11.glTranslated(4, 1.25, 0); - GL11.glRotated(-30 + 30 * HbmAnimations.getRelevantTransformation("HAMMER")[2], 0, 0, 1); - GL11.glTranslated(-4, -1.25, 0); - ResourceManager.lilmac.renderPart("Hammer"); - GL11.glPopMatrix(); - - GL11.glShadeModel(GL11.GL_FLAT); - - int flash = 75; - if(System.currentTimeMillis() - ItemGunPip.lastShot < flash) { - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); - GL11.glPushMatrix(); - GL11.glTranslated(0.125, 2.25, 0); - - double fire = (System.currentTimeMillis() - ItemGunPip.lastShot) / (double) flash; - - double height = 4 * fire; - double length = 15 * fire; - double lift = 3 * fire; - double offset = 1 * fire; - double lengthOffset = 0.125; - Minecraft.getMinecraft().renderEngine.bindTexture(lilmac_plume); - tess.startDrawingQuads(); - tess.setNormal(0F, 1F, 0F); - tess.setColorRGBA_F(1F, 1F, 1F, 1F); - - tess.addVertexWithUV(0, -height, -offset, 1, 1); - tess.addVertexWithUV(0, height, -offset, 0, 1); - tess.addVertexWithUV(0, height + lift, length - offset, 0 ,0); - tess.addVertexWithUV(0, -height + lift, length - offset, 1, 0); - - tess.addVertexWithUV(0, height, offset, 0, 1); - tess.addVertexWithUV(0, -height, offset, 1, 1); - tess.addVertexWithUV(0, -height + lift, -length + offset, 1, 0); - tess.addVertexWithUV(0, height + lift, -length + offset, 0 ,0); - - tess.addVertexWithUV(0, -height, -offset, 1, 1); - tess.addVertexWithUV(0, height, -offset, 0, 1); - tess.addVertexWithUV(lengthOffset, height, length - offset, 0 ,0); - tess.addVertexWithUV(lengthOffset, -height, length - offset, 1, 0); - - tess.addVertexWithUV(0, height, offset, 0, 1); - tess.addVertexWithUV(0, -height, offset, 1, 1); - tess.addVertexWithUV(lengthOffset, -height, -length + offset, 1, 0); - tess.addVertexWithUV(lengthOffset, height, -length + offset, 0 ,0); - - tess.draw(); - GL11.glPopMatrix(); - GL11.glDisable(GL11.GL_BLEND); - } - - break; - - case EQUIPPED: - - double scale = 0.1D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(100, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-3F, 1F, 4F); - - break; - - case ENTITY: - - double s1 = 0.075D; - GL11.glScaled(s1, s1, s1); - GL11.glTranslatef(0F, 1F, 0F); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glAlphaFunc(GL11.GL_GREATER, 0F); - GL11.glEnable(GL11.GL_ALPHA_TEST); - - double s = 0.8D; - GL11.glTranslated(8, 8, 0); - GL11.glRotated(180, 0, 1, 0); - GL11.glRotated(135, 0, 0, 1); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - if(type != ItemRenderType.EQUIPPED_FIRST_PERSON) { - GL11.glShadeModel(GL11.GL_SMOOTH); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.lilmac_scope_tex); - ResourceManager.lilmac.renderPart("Scope"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.lilmac_tex); - ResourceManager.lilmac.renderPart("Gun"); - ResourceManager.lilmac.renderPart("Cylinder"); - ResourceManager.lilmac.renderPart("Bullets"); - ResourceManager.lilmac.renderPart("Casings"); - ResourceManager.lilmac.renderPart("Pivot"); - ResourceManager.lilmac.renderPart("Hammer"); - GL11.glShadeModel(GL11.GL_FLAT); - } - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponNovac.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponNovac.java deleted file mode 100644 index 9d744207c..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponNovac.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.ModItems; -import com.hbm.main.MainRegistry; -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 ItemRenderWeaponNovac implements IItemRenderer { - - public ItemRenderWeaponNovac() { } - - @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) { - - //prevent rendering when using scope - if(item.getItem() == ModItems.gun_revolver_pip && type == ItemRenderType.EQUIPPED_FIRST_PERSON && MainRegistry.proxy.me().isSneaking()) return; - - GL11.glPushMatrix(); - - GL11.glEnable(GL11.GL_CULL_FACE); - - if(item.getItem() == ModItems.gun_revolver_nopip) Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.novac_tex); - if(item.getItem() == ModItems.gun_revolver_blackjack) Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.blackjack_tex); - if(item.getItem() == ModItems.gun_revolver_silver) Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.lent_gun_tex); - if(item.getItem() == ModItems.gun_revolver_red) Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.red_key_tex); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.4D; - GL11.glRotated(25, 0, 0, 1); - GL11.glRotated(80, 0, 1, 0); - GL11.glRotatef(180, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-0.0F, 0.0F, -1.25F); - GL11.glScaled(s0, s0, s0); - - GL11.glShadeModel(GL11.GL_SMOOTH); - - HbmAnimations.applyRelevantTransformation("Body"); - ResourceManager.novac.renderPart("Body"); - - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("Cylinder"); - ResourceManager.novac.renderPart("Cylinder"); - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("Hammer"); - ResourceManager.novac.renderPart("Hammer"); - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("Trigger"); - ResourceManager.novac.renderPart("Trigger"); - GL11.glPopMatrix(); - - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - - return; - - case EQUIPPED: - - double scale = 0.35D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(20F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(-5, 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.glRotatef(180, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-1.25F, 0.25F, -1F); - - break; - - case ENTITY: - - double s1 = 0.3D; - GL11.glScaled(s1, s1, s1); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 3D; - GL11.glTranslated(7, 8, 0); - GL11.glRotated(90, 0, 1, 0); - GL11.glRotated(135, 1, 0, 0); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - GL11.glShadeModel(GL11.GL_SMOOTH); - ResourceManager.novac.renderAllExcept("Scope"); - - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponObj.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponObj.java deleted file mode 100644 index 938d55aa9..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponObj.java +++ /dev/null @@ -1,227 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.ModItems; -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponObj implements IItemRenderer { - - public ItemRenderWeaponObj() { } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - case INVENTORY: - return item.getItem() == ModItems.gun_hk69 - || item.getItem() == ModItems.gun_deagle - || item.getItem() == ModItems.gun_flechette; - 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); - - EntityPlayer player = Minecraft.getMinecraft().thePlayer; - - if(item.getItem() == ModItems.gun_hk69) - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.hk69_tex); - - if(item.getItem() == ModItems.gun_deagle) - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.universal_bright); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - - if(item.getItem() == ModItems.gun_hk69) { - GL11.glTranslatef(1.0F, 0.5F, 0.0F); - GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-25F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(-10F, 0.0F, 1.0F, 0.0F); - GL11.glScaled(0.75, 0.75, 0.75); - - if(player.isSneaking()) { - GL11.glTranslatef(1.16F, 0.35F, -0.8F); - GL11.glRotatef(5.5F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(4F, 1.0F, 0.0F, 0.0F); - } - } - - if(item.getItem() == ModItems.gun_deagle) { - GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(25F, -1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.2F, 0.2F, 0.8F); - GL11.glScaled(0.2, 0.2, 0.2); - - if(player.isSneaking()) { - GL11.glTranslatef(3.7F, 1.7F, 0F); - GL11.glRotatef(-5F, 0.0F, 1.0F, 0.0F); - } - } - - if(item.getItem() == ModItems.gun_flechette) { - - GL11.glRotatef(25F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(1.0F, -1.0F, -0.0F); - GL11.glRotatef(170F, 0.0F, 1.0F, 0.0F); - GL11.glScaled(0.25, 0.25, 0.25); - - if(player.isSneaking()) { - GL11.glRotatef(5F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-2F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-2.0F, 1.2F, 3.7F); - } - - double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); - GL11.glTranslated(recoil[0], recoil[1], recoil[2]); - } - - break; - - case EQUIPPED: - - if(item.getItem() == ModItems.gun_hk69) { - GL11.glRotatef(20F, 1.0F, 0.0F, 1.0F); - GL11.glRotatef(10F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(0.4F, 0.0F, 0.55F); - GL11.glScaled(0.75, 0.75, 0.75); - } - - if(item.getItem() == ModItems.gun_deagle) { - GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(35F, -1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.1F, 0.8F); - GL11.glScaled(0.15, 0.15, 0.15); - } - - if(item.getItem() == ModItems.gun_flechette) { - GL11.glRotatef(35F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(180F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-1.4F, -0.55F, 0.0F); - GL11.glScaled(0.125, 0.125, 0.125); - } - - break; - - case ENTITY: - - if(item.getItem() == ModItems.gun_hk69) { - GL11.glTranslatef(0.0F, 0.2F, 0.0F); - GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F); - GL11.glScaled(0.75, 0.75, 0.75); - } - - if(item.getItem() == ModItems.gun_deagle) { - GL11.glTranslatef(0.0F, 0.2F, 0.0F); - GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F); - GL11.glScaled(0.25, 0.25, 0.25); - } - - if(item.getItem() == ModItems.gun_flechette) { - GL11.glTranslatef(-0.25F, 0.0F, 0.0F); - GL11.glScaled(0.125, 0.125, 0.125); - } - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - if(item.getItem() == ModItems.gun_hk69) { - GL11.glScaled(7.5, 7.5, -7.5); - GL11.glTranslatef(0.85F, 1.2F, 0.0F); - GL11.glRotatef(180F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-45F, 1.0F, 0.0F, 0.0F); - } - - if(item.getItem() == ModItems.gun_deagle) { - GL11.glScaled(2.5, 2.5, -2.5); - GL11.glTranslatef(3.5F, 3F, 0.0F); - GL11.glRotatef(180F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-45F, 1.0F, 0.0F, 0.0F); - } - - if(item.getItem() == ModItems.gun_flechette) { - GL11.glScaled(1.2, 1.2, -1.2); - GL11.glTranslatef(2.5F, 8.0F, 0.0F); - GL11.glRotatef(180F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(-45F, 0.0F, 0.0F, 1.0F); - } - - break; - - default: break; - } - - if(item.getItem() == ModItems.gun_hk69) { - GL11.glShadeModel(GL11.GL_SMOOTH); - ResourceManager.hk69.renderAll(); - GL11.glShadeModel(GL11.GL_FLAT); - } - - if(item.getItem() == ModItems.gun_deagle) { - GL11.glShadeModel(GL11.GL_SMOOTH); - ResourceManager.deagle.renderAll(); - GL11.glShadeModel(GL11.GL_FLAT); - } - - if(item.getItem() == ModItems.gun_flechette) { - renderFlechette(); - } - - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glPopMatrix(); - } - - public void renderFlechette() { - GL11.glShadeModel(GL11.GL_SMOOTH); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_body); - ResourceManager.flechette.renderPart("body"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_chamber); - ResourceManager.flechette.renderPart("chamber"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_barrel); - ResourceManager.flechette.renderPart("barrel"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_gren_tube); - ResourceManager.flechette.renderPart("gren_tube"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_grenades); - ResourceManager.flechette.renderPart("grenades"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_pivot); - ResourceManager.flechette.renderPart("pivot"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_top); - ResourceManager.flechette.renderPart("top"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_drum); - ResourceManager.flechette.renderPart("drum"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_base); - ResourceManager.flechette.renderPart("base"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_trigger); - ResourceManager.flechette.renderPart("trigger"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_stock); - ResourceManager.flechette.renderPart("stock"); - GL11.glShadeModel(GL11.GL_FLAT); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponQuadro.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponQuadro.java deleted file mode 100644 index ecfa3056c..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponQuadro.java +++ /dev/null @@ -1,135 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.ModItems; -import com.hbm.items.weapon.ItemGunBase; -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponQuadro implements IItemRenderer { - - public ItemRenderWeaponQuadro() { } - - @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); - - EntityPlayer player = Minecraft.getMinecraft().thePlayer; - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - if(item.getItem() == ModItems.gun_quadro) { - GL11.glTranslatef(0.75F, 0.0F, -0.15F); - GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-25F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(-10F, 0.0F, 1.0F, 0.0F); - GL11.glScaled(0.5, 0.5, 0.5); - - if(player.isSneaking()) { - GL11.glRotatef(5F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(1.0F, 0.5F, 0.3F); - } - - double[] recoil = HbmAnimations.getRelevantTransformation("QUADRO_RECOIL"); - GL11.glTranslated(0, 0, recoil[2]); - - double[] reload = HbmAnimations.getRelevantTransformation("QUADRO_RELOAD_ROTATE"); - GL11.glRotated(reload[2], 1, 0, 0); - } - - break; - - case EQUIPPED: - - if(item.getItem() == ModItems.gun_quadro) { - GL11.glRotatef(20F, 1.0F, 0.0F, 1.0F); - GL11.glRotatef(10F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(0.4F, -0.35F, -0.4F); - GL11.glScaled(0.75, 0.75, 0.75); - } - - break; - - case ENTITY: - - if(item.getItem() == ModItems.gun_quadro) { - GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(0.0F, 0.0F, 0.0F); - GL11.glScaled(0.75, 0.75, 0.75); - } - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - if(item.getItem() == ModItems.gun_quadro) { - GL11.glScaled(4.5, 4.5, -4.5); - GL11.glTranslatef(1.0F, 2.5F, 0.0F); - GL11.glRotatef(180F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-45F, 1.0F, 0.0F, 0.0F); - } - - break; - - default: break; - } - - if(item.getItem() == ModItems.gun_quadro) { - GL11.glShadeModel(GL11.GL_SMOOTH); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.quadro_tex); - ResourceManager.quadro.renderPart("Launcher"); - - if(ItemGunBase.getMag(item) > 0 || ItemGunBase.getIsReloading(item) && type != ItemRenderType.INVENTORY) { - GL11.glPushMatrix(); - - GL11.glTranslated(0, -1, 0); - - double[] push = HbmAnimations.getRelevantTransformation("QUADRO_RELOAD_PUSH"); - GL11.glTranslated(0, 3, 0); - GL11.glRotated(push[1] * 30, 1, 0, 0); - GL11.glTranslated(0, -3, 0); - GL11.glTranslated(0, 0, push[0] * 3); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.quadro_rocket_tex); - ResourceManager.quadro.renderPart("Rockets"); - GL11.glPopMatrix(); - } - - GL11.glShadeModel(GL11.GL_FLAT); - } - - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponRemington.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponRemington.java deleted file mode 100644 index e49b57531..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponRemington.java +++ /dev/null @@ -1,108 +0,0 @@ -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/ItemRenderWeaponSauer.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponSauer.java deleted file mode 100644 index 9d4d204de..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponSauer.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponSauer implements IItemRenderer { - - public ItemRenderWeaponSauer() { } - - @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.sauergun_tex); - - EntityPlayer player = Minecraft.getMinecraft().thePlayer; - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double[] recoil = HbmAnimations.getRelevantTransformation("SAUER_RECOIL"); - double[] tilt = HbmAnimations.getRelevantTransformation("SAUER_TILT"); - double[] cock = HbmAnimations.getRelevantTransformation("SAUER_COCK"); - double[] eject = HbmAnimations.getRelevantTransformation("SAUER_SHELL_EJECT"); - - double s0 = 0.5D; - GL11.glScaled(s0, s0, s0); - - GL11.glTranslatef(0.0F, -0.5F, 0.0F); - GL11.glRotatef(-100F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(20F, 1.0F, 0.0F, 0.0F); - - if(recoil != null) - GL11.glTranslated(0, 0, recoil[0]); - - if(player.isSneaking()) { - GL11.glRotatef(-3F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(2F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(3F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(-2.0F, 0.5F, 0.3F); - } - - if(tilt != null) { - GL11.glTranslated(0, -5, 0); - GL11.glRotated(tilt[2] * -0.5, 1, 0, 0); - GL11.glTranslated(0, 5, 0); - GL11.glRotated(tilt[0], 0, 0, 1); - - GL11.glTranslated(0, 0, cock[0] * 2); - ResourceManager.sauergun.renderPart("Lever"); - GL11.glTranslated(0, 0, -cock[0] * 2); - - GL11.glTranslated(eject[2] * 10, -eject[2], 0); - GL11.glRotated(eject[2] * 90, -1, 0, 0); - ResourceManager.sauergun.renderPart("Shell"); - GL11.glRotated(eject[2] * 90, 1, 0, 0); - GL11.glTranslated(-eject[2] * 10, eject[2], 0); - - } else { - - ResourceManager.sauergun.renderPart("Lever"); - } - - break; - - case EQUIPPED: - - double scale = 0.5D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(20F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(-170, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-15F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(-1F, -0.3F, 0.0F); - ResourceManager.sauergun.renderPart("Lever"); - break; - - case ENTITY: - - double s1 = 0.25D; - GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(0.0F, 0.0F, 0.5F); - GL11.glScaled(s1, s1, s1); - ResourceManager.sauergun.renderPart("Lever"); - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 2.25D; - GL11.glScaled(s, s, -s); - GL11.glTranslatef(4.0F, 4.5F, 0.0F); - GL11.glRotatef(180F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(45F, 1.0F, 0.0F, 0.0F); - ResourceManager.sauergun.renderPart("Lever"); - - break; - - default: break; - } - - ResourceManager.sauergun.renderPart("Gun"); - - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponShotty.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponShotty.java deleted file mode 100644 index bcf4670e2..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponShotty.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.config.WeaponConfig; -import com.hbm.items.weapon.ItemGunBase; -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; -import com.hbm.render.anim.HbmAnimations.Animation; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponShotty implements IItemRenderer { - - public ItemRenderWeaponShotty() { } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - case INVENTORY: - return false; - 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.shotty_tex); - - EntityPlayer player = Minecraft.getMinecraft().thePlayer; - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - String animSuffix = WeaponConfig.linearAnimations ? "Lame" : ""; - - GL11.glScalef(0.5F, 0.5F, 0.5F); - GL11.glRotatef(20F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(-95F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-2.0F, 0.25F, -2.5F); - - HbmAnimations.applyRelevantTransformation("Body" + animSuffix); - ResourceManager.shotty.renderPart("Body"); - - HbmAnimations.applyRelevantTransformation("Barrel" + animSuffix); - ResourceManager.shotty.renderPart("Barrel"); - - // If we've run out of ammo, stop drawing the shells after ejection has completed - Animation anim = HbmAnimations.getRelevantAnim(); - int millis = anim != null ? (int)(System.currentTimeMillis() - anim.startMillis) : 0; - - if(ItemGunBase.getBeltSize(player, ItemGunBase.getBeltType(player, item, true)) > 0 || millis < 1000) { - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("ShellL" + animSuffix); - ResourceManager.shotty.renderPart("ShellL"); - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("ShellR" + animSuffix); - ResourceManager.shotty.renderPart("ShellR"); - GL11.glPopMatrix(); - } - - break; - - case EQUIPPED: - - GL11.glRotatef(-170F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-10F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(-10F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(5F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-0.4F, 0.0F, -0.5F); - GL11.glScaled(0.35, 0.35, 0.35); - ResourceManager.shotty.renderPart("Body"); - ResourceManager.shotty.renderPart("Barrel"); - - break; - - case ENTITY: - - GL11.glScaled(0.5, 0.5, 0.5); - GL11.glTranslatef(0.0F, 0.2F, 0.0F); - ResourceManager.shotty.renderPart("Body"); - ResourceManager.shotty.renderPart("Barrel"); - break; - - default: break; - } - - 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 deleted file mode 100644 index 4fff46dd0..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponSpas12.java +++ /dev/null @@ -1,131 +0,0 @@ -package com.hbm.render.item.weapon; - -import java.awt.Color; - -import org.lwjgl.opengl.GL11; - -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; -import com.hbm.items.weapon.ItemGunBase; -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponSpas12 implements IItemRenderer { - - public ItemRenderWeaponSpas12() { } - - @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.spas_12_tex); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.5D; - GL11.glRotated(25, 0, 0, 1); - GL11.glTranslated(0, -0.8, 0.1); - GL11.glRotated(-100, 0, 1, 0); - GL11.glScaled(s0, s0, s0); - - HbmAnimations.applyRelevantTransformation("MainBody"); - ResourceManager.spas_12.renderPart("MainBody"); - - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("PumpGrip"); - ResourceManager.spas_12.renderPart("PumpGrip"); - GL11.glPopMatrix(); - - - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.casings_tex); - - HbmAnimations.applyRelevantTransformation("Shell"); - - ItemGunBase gun = (ItemGunBase)item.getItem(); - BulletConfiguration bullet = BulletConfigSyncingUtil.pullConfig(gun.mainConfig.config.get(ItemGunBase.getMagType(item))); - int[] colors = bullet.spentCasing.getColors(); - - Color shellColor = new Color(colors[1]); - GL11.glColor3f(shellColor.getRed() / 255F, shellColor.getGreen() / 255F, shellColor.getBlue() / 255F); - ResourceManager.spas_12.renderPart("Shell"); - - Color shellForeColor = new Color(colors[0]); - GL11.glColor3f(shellForeColor.getRed() / 255F, shellForeColor.getGreen() / 255F, shellForeColor.getBlue() / 255F); - ResourceManager.spas_12.renderPart("ShellFore"); - - GL11.glColor3f(1F, 1F, 1F); - GL11.glPopMatrix(); - - break; - - case EQUIPPED: - - double scale = 0.25D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(20F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(190, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-15F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(-2F, -1F, 2F); - - ResourceManager.spas_12.renderAll(); - - break; - - case ENTITY: - - double s1 = 0.25D; - GL11.glScaled(s1, s1, s1); - GL11.glTranslated(0, 0, 4); - - ResourceManager.spas_12.renderAll(); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 1.6D; - GL11.glTranslated(12, 13.5, 0); - GL11.glRotated(-90, 0, 1, 0); - GL11.glRotated(-135, 1, 0, 0); - GL11.glScaled(s, s, s); - - ResourceManager.spas_12.renderAll(); - - break; - - default: break; - } - - 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 deleted file mode 100644 index b46f19474..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponTau.java +++ /dev/null @@ -1,116 +0,0 @@ -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/ItemRenderWeaponThompson.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponThompson.java deleted file mode 100644 index f8bd5c12c..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponThompson.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.main.ResourceManager; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponThompson implements IItemRenderer { - - public ItemRenderWeaponThompson() { } - - @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); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.thompson_tex); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.25D; - GL11.glRotated(25, 0, 0, 1); - GL11.glTranslated(0.5, -0.5, -0.5); - GL11.glRotated(-100, 0, 1, 0); - GL11.glScaled(s0, s0, s0); - - break; - - case EQUIPPED: - - double scale = 0.25D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(20F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(-170, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-15F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(-2F, -3F, -0.5F); - - break; - - case ENTITY: - - double s1 = 0.2D; - GL11.glScaled(s1, s1, s1); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 1.75D; - GL11.glTranslated(4, 11, 0); - GL11.glRotated(90, 0, 1, 0); - GL11.glRotated(135, 1, 0, 0); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - ResourceManager.thompson.renderAll(); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAtlas.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAtlas.java index 394415ace..85be22898 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAtlas.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAtlas.java @@ -8,8 +8,15 @@ import com.hbm.render.anim.HbmAnimations; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; public class ItemRenderAtlas extends ItemRenderWeaponBase { + + public ResourceLocation texture; + + public ItemRenderAtlas(ResourceLocation texture) { + this.texture = texture; + } @Override protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; } @@ -34,7 +41,7 @@ public class ItemRenderAtlas extends ItemRenderWeaponBase { public void renderFirstPerson(ItemStack stack) { ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.bio_revolver_tex); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); double scale = 0.125D; GL11.glScaled(scale, scale, scale); @@ -104,8 +111,9 @@ public class ItemRenderAtlas extends ItemRenderWeaponBase { @Override public void setupThirdPerson(ItemStack stack) { super.setupThirdPerson(stack); + double scale = 0.75D; + GL11.glScaled(scale, scale, scale); GL11.glTranslated(0, 1, 3); - } @Override @@ -123,7 +131,7 @@ public class ItemRenderAtlas extends ItemRenderWeaponBase { GL11.glEnable(GL11.GL_LIGHTING); GL11.glShadeModel(GL11.GL_SMOOTH); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.bio_revolver_tex); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); ResourceManager.bio_revolver.renderAll(); GL11.glShadeModel(GL11.GL_FLAT); } diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderBolter.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderBolter.java index ba3af6235..165cd20cc 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderBolter.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderBolter.java @@ -89,9 +89,9 @@ public class ItemRenderBolter extends ItemRenderWeaponBase { @Override public void setupThirdPerson(ItemStack stack) { super.setupThirdPerson(stack); - double scale = 3D; + double scale = 2.5D; GL11.glScaled(scale, scale, scale); - GL11.glTranslated(0, 0.25, 1.25); + GL11.glTranslated(0, -0.75, 1.25); } diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFlamer.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFlamer.java index 238150adc..5ec21511a 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFlamer.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFlamer.java @@ -2,6 +2,7 @@ package com.hbm.render.item.weapon.sedna; import org.lwjgl.opengl.GL11; +import com.hbm.items.ModItems; import com.hbm.items.weapon.sedna.ItemGunBaseNT; import com.hbm.items.weapon.sedna.mags.IMagazine; import com.hbm.main.MainRegistry; @@ -10,8 +11,15 @@ import com.hbm.render.anim.HbmAnimations; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; public class ItemRenderFlamer extends ItemRenderWeaponBase { + + public ResourceLocation texture; + + public ItemRenderFlamer(ResourceLocation texture) { + this.texture = texture; + } @Override protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.5F; } @@ -36,7 +44,7 @@ public class ItemRenderFlamer extends ItemRenderWeaponBase { public void renderFirstPerson(ItemStack stack) { ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flamethrower_tex); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); double scale = 0.375D; GL11.glScaled(scale, scale, scale); @@ -56,6 +64,7 @@ public class ItemRenderFlamer extends ItemRenderWeaponBase { GL11.glPushMatrix(); HbmAnimations.applyRelevantTransformation("Gun"); ResourceManager.flamethrower.renderPart("Gun"); + if(hasShield(stack)) ResourceManager.flamethrower.renderPart("HeatShield"); GL11.glPopMatrix(); GL11.glPushMatrix(); @@ -63,7 +72,6 @@ public class ItemRenderFlamer extends ItemRenderWeaponBase { ResourceManager.flamethrower.renderPart("Tank"); GL11.glPopMatrix(); - GL11.glPushMatrix(); HbmAnimations.applyRelevantTransformation("Gauge"); GL11.glTranslated(1.25, 1.25, 0); @@ -100,9 +108,15 @@ public class ItemRenderFlamer extends ItemRenderWeaponBase { GL11.glEnable(GL11.GL_LIGHTING); GL11.glShadeModel(GL11.GL_SMOOTH); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flamethrower_tex); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); ResourceManager.flamethrower.renderPart("Gun"); ResourceManager.flamethrower.renderPart("Tank"); + ResourceManager.flamethrower.renderPart("Gauge"); + if(hasShield(stack)) ResourceManager.flamethrower.renderPart("HeatShield"); GL11.glShadeModel(GL11.GL_FLAT); } + + public boolean hasShield(ItemStack stack) { + return stack.getItem() == ModItems.gun_flamer_daybreaker; + } } diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFolly.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFolly.java new file mode 100644 index 000000000..a38c70419 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFolly.java @@ -0,0 +1,250 @@ +package com.hbm.render.item.weapon.sedna; + +import java.awt.Color; +import java.util.ArrayList; +import java.util.List; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.mags.IMagazine; +import com.hbm.main.MainRegistry; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; +import com.hbm.util.EntityDamageUtil; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; + +public class ItemRenderFolly extends ItemRenderWeaponBase { + + public static long timeAiming; + public static boolean jingle = false; + public static boolean wasAiming = false; + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2F : 2.5F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + float aim = 0.75F; + standardAimingTransform(stack, + -2.5F * offset, -1.5F * offset, 2.75F * offset, + -2 * aim, -1 * aim, 2.25F * offset); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.folly_tex); + double scale = 0.75D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] load = HbmAnimations.getRelevantTransformation("LOAD"); + double[] shell = HbmAnimations.getRelevantTransformation("SHELL"); + double[] screw = HbmAnimations.getRelevantTransformation("SCREW"); + double[] breech = HbmAnimations.getRelevantTransformation("BREECH"); + + GL11.glTranslated(0, 1, -4); + GL11.glRotated(-equip[0], 1, 0, 0); + GL11.glTranslated(0, -1, 4); + + GL11.glTranslated(0, -2, -2); + GL11.glRotated(load[0], 1, 0, 0); + GL11.glTranslated(0, 2, 2); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + ResourceManager.folly.renderPart("Cannon"); + + GL11.glPushMatrix(); + GL11.glTranslated(recoil[0], recoil[1], recoil[2]); + ResourceManager.folly.renderPart("Barrel"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(shell[0], shell[1], shell[2]); + ResourceManager.folly.renderPart("Shell"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(breech[0], breech[1], breech[2]); + ResourceManager.folly.renderPart("Breech"); + GL11.glTranslated(0, 1, 0); + GL11.glRotated(screw[2], 0, 0, 1); + GL11.glTranslated(0, -1, 0); + ResourceManager.folly.renderPart("Cog"); + GL11.glPopMatrix(); + + + boolean isAiming = gun.prevAimingProgress >= 1F && gun.aimingProgress >= 1F; + if(isAiming & !wasAiming) timeAiming = System.currentTimeMillis(); + + if(isAiming) { + + String splash = getBootSplash(); + + if(!jingle && !splash.isEmpty()) { + MainRegistry.proxy.playSoundClient(player.posX, player.posY, player.posZ, "hbm:weapon.fire.vstar", 0.5F, 1F); + jingle = true; + } + + GL11.glPushMatrix(); + GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); + FontRenderer font = Minecraft.getMinecraft().fontRenderer; + float variance = 0.85F + player.getRNG().nextFloat() * 0.15F; + + if(System.currentTimeMillis() - timeAiming > 5000 && load[0] == 0) { + IMagazine mag = gun.getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack); + String msg = mag.getAmount(stack, player.inventory) > 0 ? "+" : "No ammo"; + GL11.glPushMatrix(); + float crosshairSize = 0.01F; + GL11.glTranslatef((font.getStringWidth(msg) / 2) * crosshairSize + 2, 1F + font.FONT_HEIGHT * crosshairSize / 2F, -2.75F); + GL11.glScalef(crosshairSize, -crosshairSize, crosshairSize); + GL11.glRotated(180D, 0, 1, 0); + GL11.glNormal3f(0.0F, 0.0F, -1.0F * crosshairSize); + font.drawString(msg, 0, 0, new Color(variance, variance * 0.5F, 0F).getRGB()); + GL11.glPopMatrix(); + } + + GL11.glPushMatrix(); + float splashSize = 0.02F; + GL11.glTranslatef((font.getStringWidth(splash) / 2) * splashSize + 2, 1F + font.FONT_HEIGHT * splashSize / 2F, -2.75F); + GL11.glScalef(splashSize, -splashSize, splashSize); + GL11.glRotated(180D, 0, 1, 0); + GL11.glNormal3f(0.0F, 0.0F, -1.0F * splashSize); + font.drawString(splash, 0, 0, new Color(variance, variance * 0.5F, 0F).getRGB()); + GL11.glPopMatrix(); + + List tty = getTTY(); + if(!tty.isEmpty()) { + GL11.glPushMatrix(); + float fontSize = 0.005F; + GL11.glTranslatef(2.5F, 1.375F, -2.75F); + GL11.glScalef(fontSize, -fontSize, fontSize); + GL11.glRotated(180D, 0, 1, 0); + GL11.glNormal3f(0.0F, 0.0F, -1.0F * fontSize); + for(String line : tty) { + font.drawString(line, 0, 0, new Color(variance, variance * 0.5F, 0F).getRGB()); + GL11.glTranslated(0, (font.FONT_HEIGHT + 2), 0); + } + GL11.glPopMatrix(); + } + + GL11.glColor3f(1F, 1F, 1F); + + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glPopAttrib(); + GL11.glPopMatrix(); + + int brightness = player.worldObj.getLightBrightnessForSkyBlocks(MathHelper.floor_double(player.posX), MathHelper.floor_double(player.posY), MathHelper.floor_double(player.posZ), 0); + int j = brightness % 65536; + int k = brightness / 65536; + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float) j / 1.0F, (float) k / 1.0F); + } else { + jingle = false; + } + + wasAiming = isAiming; + + GL11.glShadeModel(GL11.GL_FLAT); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 3D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(-0.25, 0.5, 3); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 1.25D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(0, -0.5, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.folly_tex); + ResourceManager.folly.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + + public static String getBootSplash() { + long now = System.currentTimeMillis(); + if(timeAiming + 5000 < now) return ""; + if(timeAiming + 3000 > now) return ""; + int splashIndex = (int)((now - timeAiming - 3000) * 35 / 2000) - 10; + //use the StringBuilder this, can't eat the drywall that, this used to be a free country + char[] letters = "VStarOS".toCharArray(); + String splash = ""; + for(int i = 0; i < letters.length; i++) { + if(i < splashIndex - 1) splash += EnumChatFormatting.LIGHT_PURPLE; + if(i == splashIndex - 1) splash += EnumChatFormatting.AQUA; + if(i == splashIndex) splash += EnumChatFormatting.WHITE; + if(i == splashIndex + 1) splash += EnumChatFormatting.AQUA; + if(i == splashIndex + 2) splash += EnumChatFormatting.LIGHT_PURPLE; + if(i > splashIndex + 2) splash += EnumChatFormatting.BLACK; + splash += letters[i]; + } + return splash; + } + + public static List getTTY() { + List tty = new ArrayList(); + long now = System.currentTimeMillis(); + int time = (int)((now - timeAiming)); + if(time < 3000) { + if(time > 250) tty.add(EnumChatFormatting.GREEN + "POST successful - Code 0"); + if(time > 500) tty.add(EnumChatFormatting.GREEN + "8,388,608 bytes of RAM installed"); + if(time > 500) tty.add(EnumChatFormatting.GREEN + "5,187,427 bytes available"); + if(time > 750) tty.add(EnumChatFormatting.GREEN + "Reticulating splines..."); + if(time > 1500) tty.add(EnumChatFormatting.GREEN + "No keyboard found!"); + if(time > 2000) tty.add(EnumChatFormatting.GREEN + "Booting from /dev/sda1..."); + } + if(time > 5000) { + EntityPlayer player = MainRegistry.proxy.me(); + MovingObjectPosition mop = EntityDamageUtil.getMouseOver(player, 250); + String target = EnumChatFormatting.GREEN + "Target: "; + if(mop.typeOfHit == mop.typeOfHit.MISS) target += "N/A"; + if(mop.typeOfHit == mop.typeOfHit.BLOCK) target += mop.blockX + "/" + mop.blockY + "/" + mop.blockZ; + if(mop.typeOfHit == mop.typeOfHit.ENTITY) target += mop.entityHit.getCommandSenderName(); + tty.add(target); + tty.add(EnumChatFormatting.GREEN + "Angle: " + ((int)(-player.rotationPitch * 100) / 100D)); + } + return tty; + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderG3.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderG3.java index 5edb45d39..c647d6f2c 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderG3.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderG3.java @@ -70,7 +70,7 @@ public class ItemRenderG3 extends ItemRenderWeaponBase { GL11.glRotated(speen[1], 0, 1, 0); GL11.glTranslated(0, 1.75, 0.5); ResourceManager.g3.renderPart("Magazine"); - if(bullet[0] != 1) ResourceManager.g3.renderPart("Bullet"); + if(bullet[0] == 0) ResourceManager.g3.renderPart("Bullet"); GL11.glPopMatrix(); GL11.glPushMatrix(); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHangman.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHangman.java index 732cf2abf..f02c22562 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHangman.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHangman.java @@ -104,9 +104,9 @@ public class ItemRenderHangman extends ItemRenderWeaponBase { @Override public void setupThirdPerson(ItemStack stack) { super.setupThirdPerson(stack); - double scale = 0.375D; + double scale = 0.5D; GL11.glScaled(scale, scale, scale); - GL11.glTranslated(0, 4.25, 8); + GL11.glTranslated(0, 4.25, 11); } diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderLAG.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderLAG.java index 75e4db426..1a3f532a5 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderLAG.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderLAG.java @@ -4,6 +4,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.items.weapon.sedna.ItemGunBaseNT; import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; @@ -38,12 +39,56 @@ public class ItemRenderLAG extends ItemRenderWeaponBase { GL11.glScaled(scale, scale, scale); GL11.glRotated(90, 0, 1, 0); + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + //double[] hammer = HbmAnimations.getRelevantTransformation("HAMMER"); + double[] addTrans = HbmAnimations.getRelevantTransformation("ADD_TRANS"); + double[] addRot = HbmAnimations.getRelevantTransformation("ADD_ROT"); + //Animation anim = HbmAnimations.getRelevantAnim(0); + + GL11.glTranslated(4, -4, 0); + GL11.glRotated(-equip[0], 0, 0, 1); + GL11.glTranslated(-4, 4, 0); + + GL11.glTranslated(addTrans[0], addTrans[1], addTrans[2]); + GL11.glRotated(addRot[2], 0, 0, 1); + GL11.glRotated(addRot[1], 0, 1, 0); + GL11.glShadeModel(GL11.GL_SMOOTH); + + GL11.glPushMatrix(); + HbmAnimations.applyRelevantTransformation("Grip"); ResourceManager.mike_hawk.renderPart("Grip"); + + GL11.glPushMatrix(); + HbmAnimations.applyRelevantTransformation("Slide"); + + /*if(anim != null) { + BusAnimationSequence slideSeq = anim.animation.getBus("Hammer"); + if(slideSeq != null) GL11.glTranslated(0, 0.75, 0); + }*/ + ResourceManager.mike_hawk.renderPart("Slide"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(3.125, 0.125, 0); + GL11.glRotated(-25, 0, 0, 1); + GL11.glTranslated(-3.125, -0.125, 0); + HbmAnimations.applyRelevantTransformation("Hammer"); ResourceManager.mike_hawk.renderPart("Hammer"); - ResourceManager.mike_hawk.renderPart("Bullet"); + GL11.glPopMatrix(); + + if(gun.getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, null) > 0) { + GL11.glPushMatrix(); + HbmAnimations.applyRelevantTransformation("Bullet"); + ResourceManager.mike_hawk.renderPart("Bullet"); + GL11.glPopMatrix(); + } + + GL11.glPushMatrix(); + HbmAnimations.applyRelevantTransformation("Magazine"); ResourceManager.mike_hawk.renderPart("Magazine"); + GL11.glPopMatrix(); double smokeScale = 0.5; @@ -60,6 +105,8 @@ public class ItemRenderLAG extends ItemRenderWeaponBase { GL11.glRotated(90 * gun.shotRand, 1, 0, 0); this.renderMuzzleFlash(gun.lastShot[0], 75, 7.5); GL11.glPopMatrix(); + + GL11.glPopMatrix(); } @Override diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMareslegAkimbo.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMareslegAkimbo.java index 367d6a62c..5a60a4aaf 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMareslegAkimbo.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMareslegAkimbo.java @@ -127,6 +127,8 @@ public class ItemRenderMareslegAkimbo extends ItemRenderWeaponBase { @Override public void setupInv(ItemStack stack) { + GL11.glAlphaFunc(GL11.GL_GREATER, 0F); + GL11.glEnable(GL11.GL_ALPHA_TEST); GL11.glScaled(1, 1, -1); GL11.glTranslated(8, 8, 0); double scale = 2.5D; diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMinigun.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMinigun.java index b4d55e4ca..ed44d201f 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMinigun.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMinigun.java @@ -8,8 +8,15 @@ import com.hbm.render.anim.HbmAnimations; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; public class ItemRenderMinigun extends ItemRenderWeaponBase { + + protected ResourceLocation texture; + + public ItemRenderMinigun(ResourceLocation texture) { + this.texture = texture; + } @Override protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.5F; } @@ -34,7 +41,7 @@ public class ItemRenderMinigun extends ItemRenderWeaponBase { public void renderFirstPerson(ItemStack stack) { ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.minigun_tex); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); double scale = 0.375D; GL11.glScaled(scale, scale, scale); @@ -101,7 +108,7 @@ public class ItemRenderMinigun extends ItemRenderWeaponBase { GL11.glEnable(GL11.GL_LIGHTING); GL11.glShadeModel(GL11.GL_SMOOTH); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.minigun_tex); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); ResourceManager.minigun.renderAll(); GL11.glShadeModel(GL11.GL_FLAT); } diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderSTG77.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderSTG77.java index b2d674e0c..a7f3bf9cd 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderSTG77.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderSTG77.java @@ -12,7 +12,7 @@ import net.minecraft.item.ItemStack; public class ItemRenderSTG77 extends ItemRenderWeaponBase { @Override - protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; } + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 0.5F : -0.25F; } @Override public void setupFirstPerson(ItemStack stack) { @@ -21,7 +21,7 @@ public class ItemRenderSTG77 extends ItemRenderWeaponBase { float offset = 0.8F; standardAimingTransform(stack, -1.5F * offset, -1F * offset, 2.5F * offset, - 0, -5.75 / 8D, 1); + 0, -5.75 / 8D, 2); } @Override @@ -33,7 +33,7 @@ public class ItemRenderSTG77 extends ItemRenderWeaponBase { @Override protected float getBaseFOV(ItemStack stack) { float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; - return 70F - aimingProgress * 55; + return 70F - aimingProgress * 65; } @Override diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderUziAkimbo.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderUziAkimbo.java new file mode 100644 index 000000000..dded1cc0d --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderUziAkimbo.java @@ -0,0 +1,204 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderUziAkimbo extends ItemRenderWeaponBase { + + @Override public boolean isAkimbo() { return true; } + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + + float offset = 0.8F; + + for(int i = -1; i <= 1; i += 2) { + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.uzi_tex); + + GL11.glPushMatrix(); + int index = i == -1 ? 0 : 1; + standardAimingTransform(stack, -2.25F * offset * i, -1.5F * offset, 2.5F * offset, 0, -4.375 / 8D, 1); + + double scale = 0.25D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP", index); + double[] stockFront = HbmAnimations.getRelevantTransformation("STOCKFRONT", index); + double[] stockBack = HbmAnimations.getRelevantTransformation("STOCKBACK", index); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL", index); + double[] lift = HbmAnimations.getRelevantTransformation("LIFT", index); + double[] mag = HbmAnimations.getRelevantTransformation("MAG", index); + double[] bullet = HbmAnimations.getRelevantTransformation("BULLET", index); + double[] slide = HbmAnimations.getRelevantTransformation("SLIDE", index); + double[] yeet = HbmAnimations.getRelevantTransformation("YEET", index); + double[] speen = HbmAnimations.getRelevantTransformation("SPEEN", index); + + GL11.glTranslated(yeet[0], yeet[1], yeet[2]); + GL11.glRotated(speen[0], 0, 0, 1); + + GL11.glTranslated(0, -2, -4); + GL11.glRotated(equip[0], 1, 0, 0); + GL11.glTranslated(0, 2, 4); + + GL11.glTranslated(0, 0, -6); + GL11.glRotated(lift[0], 1, 0, 0); + GL11.glTranslated(0, 0, 6); + + GL11.glTranslated(0, 0, recoil[2]); + + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.uzi.renderPart(index == 0 ? "GunMirror" : "Gun"); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.3125D, -5.75); + GL11.glRotated(180 - stockFront[0], 1, 0, 0); + GL11.glTranslated(0, -0.3125D, 5.75); + ResourceManager.uzi.renderPart("StockFront"); + + GL11.glTranslated(0, -0.3125D, -3); + GL11.glRotated(-200 - stockBack[0], 1, 0, 0); + GL11.glTranslated(0, 0.3125D, 3); + ResourceManager.uzi.renderPart("StockBack"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, slide[2]); + ResourceManager.uzi.renderPart("Slide"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(mag[0], mag[1], mag[2]); + ResourceManager.uzi.renderPart("Magazine"); + if(bullet[0] == 1) ResourceManager.uzi.renderPart("Bullet"); + GL11.glPopMatrix(); + + double smokeScale = 0.5; + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.75, 8.5); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(smokeScale, smokeScale, smokeScale); + this.renderSmokeNodes(gun.getConfig(stack, index).smokeNodes, 0.75D); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.75, 8.5); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(90 * gun.shotRand, 1, 0, 0); + this.renderMuzzleFlash(gun.lastShot[index], 75, 7.5); + GL11.glPopMatrix(); + + GL11.glPopMatrix(); + } + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + GL11.glTranslated(0, 1, 1); + } + + @Override + public void setupThirdPersonAkimbo(ItemStack stack) { + super.setupThirdPersonAkimbo(stack); + GL11.glTranslated(0, 1, 1); + } + + @Override + public void setupInv(ItemStack stack) { + GL11.glAlphaFunc(GL11.GL_GREATER, 0F); + GL11.glEnable(GL11.GL_ALPHA_TEST); + GL11.glScaled(1, 1, -1); + GL11.glTranslated(8, 8, 0); + double scale = 1.5D; + GL11.glScaled(scale, scale, scale); + } + + @Override + public void renderEquipped(ItemStack stack) { + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.uzi_tex); + ResourceManager.uzi.renderPart("Gun"); + ResourceManager.uzi.renderPart("StockBack"); + ResourceManager.uzi.renderPart("StockFront"); + ResourceManager.uzi.renderPart("Slide"); + ResourceManager.uzi.renderPart("Magazine"); + GL11.glShadeModel(GL11.GL_FLAT); + } + + @Override + public void renderEquippedAkimbo(ItemStack stack) { + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.uzi_tex); + ResourceManager.uzi.renderPart("GunMirror"); + ResourceManager.uzi.renderPart("StockBack"); + ResourceManager.uzi.renderPart("StockFront"); + ResourceManager.uzi.renderPart("Slide"); + ResourceManager.uzi.renderPart("Magazine"); + GL11.glShadeModel(GL11.GL_FLAT); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.uzi_tex); + + GL11.glPushMatrix(); + GL11.glRotated(225, 0, 0, 1); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(0, 1, 0); + ResourceManager.uzi.renderPart("Gun"); + ResourceManager.uzi.renderPart("StockBack"); + ResourceManager.uzi.renderPart("StockFront"); + ResourceManager.uzi.renderPart("Slide"); + ResourceManager.uzi.renderPart("Magazine"); + GL11.glPopMatrix(); + + GL11.glTranslated(0, 0, 5); + + GL11.glPushMatrix(); + GL11.glRotated(225, 0, 0, 1); + GL11.glRotated(-90, 0, 1, 0); + GL11.glRotated(-90, 1, 0, 0); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(-45, 0, 1, 0); + GL11.glTranslated(0, 1, 0); + ResourceManager.uzi.renderPart("GunMirror"); + ResourceManager.uzi.renderPart("StockBack"); + ResourceManager.uzi.renderPart("StockFront"); + ResourceManager.uzi.renderPart("Slide"); + ResourceManager.uzi.renderPart("Magazine"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java index a97f4425c..bd4f3d2c1 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java @@ -48,6 +48,7 @@ public abstract class ItemRenderWeaponBase implements IItemRenderer { @Override public void renderItem(ItemRenderType type, ItemStack item, Object... data) { GL11.glPushMatrix(); + GL11.glEnable(GL11.GL_CULL_FACE); switch(type) { case EQUIPPED_FIRST_PERSON: setupFirstPerson(item); renderFirstPerson(item); break; case EQUIPPED: setupThirdPerson(item); renderEquipped(item); break; diff --git a/src/main/java/com/hbm/render/model/ModelFolly.java b/src/main/java/com/hbm/render/model/ModelFolly.java deleted file mode 100644 index cdf189d7d..000000000 --- a/src/main/java/com/hbm/render/model/ModelFolly.java +++ /dev/null @@ -1,322 +0,0 @@ -// Date: 13.01.2019 13:32:43 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import org.lwjgl.opengl.GL11; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.entity.Entity; - -public class ModelFolly extends ModelBase { - // fields - ModelRenderer SB1; - ModelRenderer SB2; - ModelRenderer SB3; - ModelRenderer SB4; - ModelRenderer SB5; - ModelRenderer SB6; - ModelRenderer SB7; - ModelRenderer SB8; - ModelRenderer SP; - ModelRenderer B1; - ModelRenderer B2; - ModelRenderer B3; - ModelRenderer SF1; - ModelRenderer SF2; - ModelRenderer SF3; - ModelRenderer SF4; - ModelRenderer P1; - ModelRenderer P2; - ModelRenderer P3; - ModelRenderer P4; - ModelRenderer Grip; - ModelRenderer SPointer; - - public ModelFolly() { - textureWidth = 64; - textureHeight = 64; - - SB1 = new ModelRenderer(this, 0, 0); - SB1.addBox(-16F, -1F, 0F, 16, 1, 3); - SB1.setRotationPoint(0F, 4F, -1.5F); - SB1.setTextureSize(64, 32); - SB1.mirror = true; - setRotation(SB1, 0F, 0F, 0F); - SB2 = new ModelRenderer(this, 0, 16); - SB2.addBox(-16F, -1.5F, 0F, 16, 1, 1); - SB2.setRotationPoint(0F, 4F, 1F); - SB2.setTextureSize(64, 32); - SB2.mirror = true; - setRotation(SB2, 0F, 0F, 0F); - SB3 = new ModelRenderer(this, 0, 18); - SB3.addBox(-16F, -1.5F, 0F, 16, 1, 1); - SB3.setRotationPoint(0F, 4F, -2F); - SB3.setTextureSize(64, 32); - SB3.mirror = true; - setRotation(SB3, 0F, 0F, 0F); - SB4 = new ModelRenderer(this, 0, 8); - SB4.addBox(-16F, -4F, 0F, 16, 3, 1); - SB4.setRotationPoint(0F, 4F, -2.5F); - SB4.setTextureSize(64, 32); - SB4.mirror = true; - setRotation(SB4, 0F, 0F, 0F); - SB5 = new ModelRenderer(this, 0, 12); - SB5.addBox(-16F, -4F, 0F, 16, 3, 1); - SB5.setRotationPoint(0F, 4F, 1.5F); - SB5.setTextureSize(64, 32); - SB5.mirror = true; - setRotation(SB5, 0F, 0F, 0F); - SB6 = new ModelRenderer(this, 0, 20); - SB6.addBox(-16F, -4.5F, 0F, 16, 1, 1); - SB6.setRotationPoint(0F, 4F, 1F); - SB6.setTextureSize(64, 32); - SB6.mirror = true; - setRotation(SB6, 0F, 0F, 0F); - SB7 = new ModelRenderer(this, 0, 22); - SB7.addBox(-16F, -4.5F, 0F, 16, 1, 1); - SB7.setRotationPoint(0F, 4F, -2F); - SB7.setTextureSize(64, 32); - SB7.mirror = true; - setRotation(SB7, 0F, 0F, 0F); - SB8 = new ModelRenderer(this, 0, 4); - SB8.addBox(-16F, -5F, 0F, 16, 1, 3); - SB8.setRotationPoint(0F, 4F, -1.5F); - SB8.setTextureSize(64, 32); - SB8.mirror = true; - setRotation(SB8, 0F, 0F, 0F); - SP = new ModelRenderer(this, 58, 0); - SP.addBox(0F, -4F, 0F, 0, 3, 3); - SP.setRotationPoint(-0.5F, 4F, -1.5F); - SP.setTextureSize(64, 32); - SP.mirror = true; - setRotation(SP, 0F, 0F, 0F); - B1 = new ModelRenderer(this, 0, 40); - B1.addBox(0F, 0F, 0F, 5, 5, 3); - B1.setRotationPoint(0F, -1F, -1.5F); - B1.setTextureSize(64, 32); - B1.mirror = true; - setRotation(B1, 0F, 0F, 0F); - B2 = new ModelRenderer(this, 0, 48); - B2.addBox(0F, 0F, 0F, 5, 3, 5); - B2.setRotationPoint(0F, 0F, -2.5F); - B2.setTextureSize(64, 32); - B2.mirror = true; - setRotation(B2, 0F, 0F, 0F); - B3 = new ModelRenderer(this, 0, 56); - B3.addBox(0F, 0F, 0F, 5, 4, 4); - B3.setRotationPoint(0F, -0.5F, -2F); - B3.setTextureSize(64, 32); - B3.mirror = true; - setRotation(B3, 0F, 0F, 0F); - SF1 = new ModelRenderer(this, 0, 24); - SF1.addBox(-32F, -1.5F, 0F, 16, 1, 3); - SF1.setRotationPoint(0F, 4F, -1.5F); - SF1.setTextureSize(64, 32); - SF1.mirror = true; - setRotation(SF1, 0F, 0F, 0F); - SF2 = new ModelRenderer(this, 0, 28); - SF2.addBox(-32F, -4.5F, 0F, 16, 1, 3); - SF2.setRotationPoint(0F, 4F, -1.5F); - SF2.setTextureSize(64, 32); - SF2.mirror = true; - setRotation(SF2, 0F, 0F, 0F); - SF3 = new ModelRenderer(this, 0, 32); - SF3.addBox(-32F, -4F, 0F, 16, 3, 1); - SF3.setRotationPoint(0F, 4F, -2F); - SF3.setTextureSize(64, 32); - SF3.mirror = true; - setRotation(SF3, 0F, 0F, 0F); - SF4 = new ModelRenderer(this, 0, 36); - SF4.addBox(-32F, -4F, 0F, 16, 3, 1); - SF4.setRotationPoint(0F, 4F, 1F); - SF4.setTextureSize(64, 32); - SF4.mirror = true; - setRotation(SF4, 0F, 0F, 0F); - P1 = new ModelRenderer(this, 58, 6); - P1.addBox(0F, 0F, 0F, 1, 4, 2); - P1.setRotationPoint(5F, 1F, -1F); - P1.setTextureSize(64, 32); - P1.mirror = true; - setRotation(P1, 0F, 0F, 0F); - P2 = new ModelRenderer(this, 52, 0); - P2.addBox(-1F, -2F, 0F, 1, 2, 2); - P2.setRotationPoint(6F, 1F, -1F); - P2.setTextureSize(64, 32); - P2.mirror = true; - setRotation(P2, 0F, 0F, -0.5235988F); - P3 = new ModelRenderer(this, 42, 0); - P3.addBox(0F, 0F, 0F, 1, 1, 4); - P3.setRotationPoint(4.5F, 1F, -2F); - P3.setTextureSize(64, 32); - P3.mirror = true; - setRotation(P3, 0F, 0F, 0F); - P4 = new ModelRenderer(this, 44, 5); - P4.addBox(0F, 0F, 0F, 5, 1, 2); - P4.setRotationPoint(0F, 4F, -1F); - P4.setTextureSize(64, 32); - P4.mirror = true; - setRotation(P4, 0F, 0F, 0F); - Grip = new ModelRenderer(this, 52, 8); - Grip.addBox(0F, 0F, 0F, 2, 4, 1); - Grip.setRotationPoint(2F, 5F, -0.5F); - Grip.setTextureSize(64, 32); - Grip.mirror = true; - setRotation(Grip, 0F, 0F, -0.2617994F); - SPointer = new ModelRenderer(this, 56, 13); - SPointer.addBox(-32F, -0.5F, 0F, 3, 1, 1); - SPointer.setRotationPoint(0F, 4F, -0.5F); - SPointer.setTextureSize(64, 32); - SPointer.mirror = true; - setRotation(SPointer, 0F, 0F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - SB1.render(f5); - SB2.render(f5); - SB3.render(f5); - SB4.render(f5); - SB5.render(f5); - SB6.render(f5); - SB7.render(f5); - SB8.render(f5); - SP.render(f5); - B1.render(f5); - B2.render(f5); - B3.render(f5); - SF1.render(f5); - SF2.render(f5); - SF3.render(f5); - SF4.render(f5); - P1.render(f5); - P2.render(f5); - P3.render(f5); - P4.render(f5); - Grip.render(f5); - SPointer.render(f5); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, int state, int timer) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - - float rotate = (float) (Math.PI * -70D / 180D); - - if(state == 1 || state == 2) { - SB1.rotateAngleZ = rotate; - SB2.rotateAngleZ = rotate; - SB3.rotateAngleZ = rotate; - SB4.rotateAngleZ = rotate; - SB5.rotateAngleZ = rotate; - SB6.rotateAngleZ = rotate; - SB7.rotateAngleZ = rotate; - SB8.rotateAngleZ = rotate; - SP.rotateAngleZ = rotate; - SPointer.rotateAngleZ = rotate; - SF1.rotateAngleZ = rotate; - SF2.rotateAngleZ = rotate; - SF3.rotateAngleZ = rotate; - SF4.rotateAngleZ = rotate; - } else { - SB1.rotateAngleZ = 0; - SB2.rotateAngleZ = 0; - SB3.rotateAngleZ = 0; - SB4.rotateAngleZ = 0; - SB5.rotateAngleZ = 0; - SB6.rotateAngleZ = 0; - SB7.rotateAngleZ = 0; - SB8.rotateAngleZ = 0; - SP.rotateAngleZ = 0; - SPointer.rotateAngleZ = 0; - SF1.rotateAngleZ = 0; - SF2.rotateAngleZ = 0; - SF3.rotateAngleZ = 0; - SF4.rotateAngleZ = 0; - } - - SB1.render(f5); - SB2.render(f5); - SB3.render(f5); - SB4.render(f5); - SB5.render(f5); - SB6.render(f5); - SB7.render(f5); - SB8.render(f5); - - if(state == 2 || state == 3) { - SP.render(f5); - } - - B1.render(f5); - B2.render(f5); - B3.render(f5); - SF1.render(f5); - SF2.render(f5); - SF3.render(f5); - SF4.render(f5); - P1.render(f5); - P2.render(f5); - P3.render(f5); - P4.render(f5); - Grip.render(f5); - SPointer.render(f5); - - if(state == 3 && timer > -1) { - GL11.glPushMatrix(); - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glDisable(GL11.GL_LIGHTING); - - Tessellator tessellator = Tessellator.instance; - int color = 0x00FF00; - - if(timer == 0) - color = 0xFF0000; - - tessellator.startDrawing(3); - tessellator.setColorOpaque_I(color); - tessellator.addVertex(-32F / 16F, 0 + 4F / 16F, 0); - tessellator.addVertex(-150, timer, 0); - tessellator.draw(); - - tessellator.startDrawing(3); - tessellator.setColorOpaque_I(color); - tessellator.addVertex(-32F / 16F, 0 + 4F / 16F, 0); - tessellator.addVertex(-150, -timer, 0); - tessellator.draw(); - - tessellator.startDrawing(3); - tessellator.setColorOpaque_I(color); - tessellator.addVertex(-32F / 16F, 0 + 4F / 16F, 0); - tessellator.addVertex(-150, 0, timer); - tessellator.draw(); - - tessellator.startDrawing(3); - tessellator.setColorOpaque_I(color); - tessellator.addVertex(-32F / 16F, 0 + 4F / 16F, 0); - tessellator.addVertex(-150, 0, -timer); - tessellator.draw(); - - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glPopMatrix(); - } - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/tileentity/RenderAmmoPress.java b/src/main/java/com/hbm/render/tileentity/RenderAmmoPress.java new file mode 100644 index 000000000..3eb232496 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderAmmoPress.java @@ -0,0 +1,75 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import com.hbm.tileentity.machine.TileEntityMachineAmmoPress; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderAmmoPress extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + + TileEntityMachineAmmoPress tile = (TileEntityMachineAmmoPress) tileEntity; + + switch(tileEntity.getBlockMetadata() - BlockDummyable.offset) { + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; + } + + float press = tile.prevPress + (tile.press - tile.prevPress) * f; + float lift = tile.prevLift + (tile.lift - tile.prevLift) * f; + + bindTexture(ResourceManager.ammo_press_tex); + ResourceManager.ammo_press.renderPart("Frame"); + + GL11.glPushMatrix(); + GL11.glTranslatef(0, -press * 0.25F, 0); + ResourceManager.ammo_press.renderPart("Press"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslatef(0, lift * 0.5F - 0.5F, 0); + ResourceManager.ammo_press.renderPart("Shells"); + if(tile.animState == tile.animState.RETRACTING || tile.animState == tile.animState.LOWERING) ResourceManager.ammo_press.renderPart("Bullets"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_ammo_press); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -2.5, 0); + GL11.glScaled(5, 5, 5); + } + public void renderCommon() { + GL11.glRotatef(90, 0F, 1F, 0F); + bindTexture(ResourceManager.ammo_press_tex); + ResourceManager.ammo_press.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderLandmine.java b/src/main/java/com/hbm/render/tileentity/RenderLandmine.java index 33314bb68..4e8ee9def 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderLandmine.java +++ b/src/main/java/com/hbm/render/tileentity/RenderLandmine.java @@ -1,6 +1,7 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; import com.hbm.blocks.ModBlocks; import com.hbm.main.ResourceManager; @@ -8,6 +9,7 @@ import com.hbm.main.ResourceManager; import net.minecraft.block.Block; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.biome.BiomeGenBase; public class RenderLandmine extends TileEntitySpecialRenderer { @@ -17,15 +19,20 @@ public class RenderLandmine extends TileEntitySpecialRenderer { GL11.glTranslated(x + 0.5D, y, z + 0.5D); GL11.glEnable(GL11.GL_LIGHTING); GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); GL11.glRotatef(180, 0F, 1F, 0F); Block block = tileEntity.getWorldObj().getBlock(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord); if(block == ModBlocks.mine_ap) { - GL11.glTranslated(0, -0.075, 0); - GL11.glScaled(1.5D, 1.5D, 1.5D); - bindTexture(ResourceManager.mine_ap_tex); + GL11.glScaled(0.375D, 0.375D, 0.375D); + GL11.glTranslated(0, -0.0625 * 3.5, 0); + BiomeGenBase biome = tileEntity.getWorldObj().getBiomeGenForCoords(tileEntity.xCoord, tileEntity.zCoord); + if(tileEntity.getWorldObj().getHeightValue(tileEntity.xCoord, tileEntity.zCoord) > tileEntity.yCoord + 2) bindTexture(ResourceManager.mine_ap_stone_tex); + else if(biome.getEnableSnow()) bindTexture(ResourceManager.mine_ap_snow_tex); + else if(biome.temperature >= 1.5F && biome.rainfall <= 0.1F) bindTexture(ResourceManager.mine_ap_desert_tex); + else bindTexture(ResourceManager.mine_ap_grass_tex); ResourceManager.mine_ap.renderAll(); } if(block == ModBlocks.mine_he) { @@ -36,8 +43,11 @@ public class RenderLandmine extends TileEntitySpecialRenderer { GL11.glShadeModel(GL11.GL_FLAT); } if(block == ModBlocks.mine_shrap) { + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + GL11.glScaled(0.375D, 0.375D, 0.375D); + GL11.glTranslated(0, -0.0625 * 3.5, 0); bindTexture(ResourceManager.mine_shrap_tex); - ResourceManager.mine_he.renderAll(); + ResourceManager.mine_ap.renderAll(); } if(block == ModBlocks.mine_fat) { GL11.glScaled(0.25D, 0.25D, 0.25D); diff --git a/src/main/java/com/hbm/render/util/RenderInfoSystem.java b/src/main/java/com/hbm/render/util/RenderInfoSystem.java index 136e9d8fe..367d01f10 100644 --- a/src/main/java/com/hbm/render/util/RenderInfoSystem.java +++ b/src/main/java/com/hbm/render/util/RenderInfoSystem.java @@ -50,7 +50,7 @@ public class RenderInfoSystem { if(event.type != ElementType.CROSSHAIRS) return; - //this.messages.put(-666, new InfoEntry("Monarch celebratory special edition (balls tuah director's cut)", 666_666)); + this.messages.put(-666, new InfoEntry("Your arteries are bad cable management, rip them out deluxe edition", 666_666)); if(this.messages.isEmpty()) return; diff --git a/src/main/java/com/hbm/sound/MovingSoundBomber.java b/src/main/java/com/hbm/sound/MovingSoundBomber.java deleted file mode 100644 index c20a0cfe0..000000000 --- a/src/main/java/com/hbm/sound/MovingSoundBomber.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.hbm.sound; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.entity.logic.EntityBomber; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.audio.ISound; -import net.minecraft.client.audio.MovingSound; -import net.minecraft.client.entity.EntityClientPlayerMP; -import net.minecraft.util.ResourceLocation; - -public class MovingSoundBomber extends MovingSound { - - public static List globalSoundList = new ArrayList(); - public EntityBomber bomber; - - public MovingSoundBomber(ResourceLocation loc, EntityBomber bomber) { - super(loc); - this.bomber = bomber; - globalSoundList.add(this); - this.repeat = true; - this.field_147666_i = ISound.AttenuationType.NONE; - } - - @Override - public void update() { - - float iVolume = 150; - - if(this.bomber == null || this.bomber.isDead || this.bomber.health <= 0) { - this.stop(); - } else { - this.xPosF = (float)bomber.posX; - this.yPosF = (float)bomber.posY; - this.zPosF = (float)bomber.posZ; - - EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer; - float f = 0; - - if(player != null) { - f = (float)Math.sqrt(Math.pow(xPosF - player.posX, 2) + Math.pow(yPosF - player.posY, 2) + Math.pow(zPosF - player.posZ, 2)); - volume = (f / iVolume) * -2 + 2; - } else { - volume = iVolume; - } - } - - if(!Minecraft.getMinecraft().getSoundHandler().isSoundPlaying(this)) { - stop(); - } - - } - - public void stop() { - this.donePlaying = true; - this.repeat = false; - - globalSoundList.remove(this); - } - - public void setPitch(float f) { - this.field_147663_c = f; - } - - public void setVolume(float f) { - this.volume = f; - } - - public void setDone(boolean b) { - this.donePlaying = b; - } - -} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 5b3843b9b..d2edfe72d 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -14,6 +14,7 @@ import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.blocks.generic.BlockPedestal.TileEntityPedestal; import com.hbm.blocks.generic.BlockPlushie.TileEntityPlushie; import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; +import com.hbm.blocks.generic.BlockSupplyCrate.TileEntitySupplyCrate; import com.hbm.blocks.generic.PartEmitter.TileEntityPartEmitter; import com.hbm.blocks.machine.BlockICF.TileEntityBlockICF; import com.hbm.blocks.machine.BlockPWR.TileEntityBlockPWR; @@ -150,6 +151,7 @@ public class TileMappings { put(TileEntityBarrel.class, "tileentity_fluid_barrel"); put(TileEntityCyberCrab.class, "tileentity_crabs"); put(TileEntitySoyuzCapsule.class, "tileentity_soyuz_capsule"); + put(TileEntitySupplyCrate.class, "tileentity_supply_crate"); put(TileEntityMachineRotaryFurnace.class, "tileentity_rotary_furnace"); put(TileEntityMachineCrystallizer.class, "tileentity_acidomatic"); put(TileEntitySoyuzStruct.class, "tileentity_soyuz_struct"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java index d3601d1fa..f42270518 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java @@ -136,8 +136,8 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn int speedLevel = upgradeManager.getLevel(UpgradeType.SPEED); int powerLevel = upgradeManager.getLevel(UpgradeType.POWER); - usageOre = usageOreBase - usageOreBase * powerLevel / 4; - usageFluid = usageFluidBase - usageFluidBase * powerLevel / 4; + usageOre = usageOreBase - usageOreBase * powerLevel / 4 + usageOreBase * speedLevel; + usageFluid = usageFluidBase - usageFluidBase * powerLevel / 4 + usageFluidBase * speedLevel; for(int i = 0; i < getCycleCount(); i++) { if (this.canProcessFluid()) { @@ -599,9 +599,7 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn public int[] getMatsToCopy() { ArrayList types = new ArrayList<>(); if(leftStack != null) types.add(leftStack.material.id); - if(rightStack != null) types.add(rightStack.material.id); - return BobMathUtil.intCollectionToArray(types); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAmmoPress.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAmmoPress.java index ce0c9e3a7..52e8c65a5 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAmmoPress.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAmmoPress.java @@ -15,11 +15,24 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; public class TileEntityMachineAmmoPress extends TileEntityMachineBase implements IControlReceiver, IGUIProvider { public int selectedRecipe = -1; + + public AnimationState animState = AnimationState.LIFTING; + + public int playAnimation = 0; + public float prevLift = 0F; + public float lift = 0F; + public float prevPress = 0F; + public float press = 0F; + + public static enum AnimationState { + LIFTING, PRESSING, RETRACTING, LOWERING + } public TileEntityMachineAmmoPress() { super(10); @@ -33,8 +46,40 @@ public class TileEntityMachineAmmoPress extends TileEntityMachineBase implements @Override public void updateEntity() { if(!worldObj.isRemote) { + if(this.playAnimation > 0) this.playAnimation--; this.performRecipe(); this.networkPackNT(25); + } else { + + this.prevLift = this.lift; + this.prevPress = this.press; + + if(playAnimation > 0 || lift > 0) switch(animState) { + case LIFTING: + this.lift += 1F / 40F; + if(this.lift >= 1F) { + this.lift = 1F; + this.animState = AnimationState.PRESSING; + } break; + case PRESSING: + this.press += 1F / 20F; + if(this.press >= 1F) { + this.press = 1F; + this.animState = AnimationState.RETRACTING; + } break; + case RETRACTING: + this.press -= 1F / 20F; + if(this.press <= 0F) { + this.press = 0F; + this.animState = AnimationState.LOWERING; + } break; + case LOWERING: + this.lift -= 1F / 40F; + if(this.lift <= 0F) { + this.lift = 0F; + this.animState = AnimationState.LIFTING; + } break; + } } } @@ -44,12 +89,14 @@ public class TileEntityMachineAmmoPress extends TileEntityMachineBase implements @Override public void setInventorySlotContents(int slot, ItemStack stack) { super.setInventorySlotContents(slot, stack); + /*if(this.worldObj.isRemote) return; + //while this allowed one shift click to process absolutely everything, it also caused a fuckton of issues if(!recipeLock) { recipeLock = true; if(slot < 10) this.performRecipe(); recipeLock = false; - } + }*/ } public void performRecipe() { @@ -93,6 +140,8 @@ public class TileEntityMachineAmmoPress extends TileEntityMachineBase implements } else { slots[9].stackSize += recipe.output.stackSize; } + + this.playAnimation = 40; } public int[] access = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; @@ -120,12 +169,26 @@ public class TileEntityMachineAmmoPress extends TileEntityMachineBase implements @Override public void serialize(ByteBuf buf) { super.serialize(buf); buf.writeInt(this.selectedRecipe); + buf.writeInt(this.playAnimation); } @Override public void deserialize(ByteBuf buf) { super.deserialize(buf); this.selectedRecipe = buf.readInt(); + this.playAnimation = buf.readInt(); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.selectedRecipe = nbt.getInteger("recipe"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setInteger("recipe", selectedRecipe); } @Override @@ -140,6 +203,31 @@ public class TileEntityMachineAmmoPress extends TileEntityMachineBase implements else this.selectedRecipe = newRecipe; this.markDirty(); } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 2, + zCoord + 2 + ); + } + + return bb; + } + + @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 ContainerMachineAmmoPress(player.inventory, this); } @Override @SideOnly(Side.CLIENT) public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineAmmoPress(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java index 81359800c..c5e41d3b7 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java @@ -9,10 +9,8 @@ import com.hbm.blocks.BlockDummyable; import com.hbm.entity.logic.EntityBomber; import com.hbm.entity.missile.EntityMissileBaseNT; import com.hbm.entity.missile.EntityMissileCustom; -import com.hbm.entity.projectile.EntityBulletBaseNT; +import com.hbm.entity.projectile.EntityBulletBaseMK4; import com.hbm.entity.train.EntityRailCarBase; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IControlReceiver; @@ -20,6 +18,7 @@ import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.container.ContainerTurretBase; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemTurretBiometry; +import com.hbm.items.weapon.sedna.BulletConfig; import com.hbm.lib.Library; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.AuxParticlePacketNT; @@ -318,7 +317,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple public boolean usesCasings() { return false; } public int casingDelay() { return 0; } - public BulletConfiguration getFirstConfigLoaded() { + public BulletConfig getFirstConfigLoaded() { List list = getAmmoList(); @@ -333,10 +332,8 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple for(Integer c : list) { //we can afford all this extra iteration trash on the count that a turret has at most like 4 bullet configs - BulletConfiguration conf = BulletConfigSyncingUtil.pullConfig(c); - - if(conf.ammo != null && conf.ammo.matchesRecipe(slots[i], true)) - return conf; + BulletConfig conf = BulletConfig.configs.get(c); + if(conf.ammo != null && conf.ammo.matchesRecipe(slots[i], true)) return conf; } } } @@ -344,17 +341,15 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple return null; } - public void spawnBullet(BulletConfiguration bullet) { + public void spawnBullet(BulletConfig bullet, float baseDamage) { Vec3 pos = this.getTurretPos(); Vec3 vec = Vec3.createVectorHelper(this.getBarrelLength(), 0, 0); vec.rotateAroundZ((float) -this.rotationPitch); vec.rotateAroundY((float) -(this.rotationYaw + Math.PI * 0.5)); - EntityBulletBaseNT proj = new EntityBulletBaseNT(worldObj, BulletConfigSyncingUtil.getKey(bullet)); - proj.setPositionAndRotation(pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord, 0.0F, 0.0F); - - proj.setThrowableHeading(vec.xCoord, vec.yCoord, vec.zCoord, bullet.velocity, bullet.spread); + EntityBulletBaseMK4 proj = new EntityBulletBaseMK4(worldObj, bullet, baseDamage, bullet.spread, (float) rotationYaw, (float) rotationPitch); + proj.setPositionAndRotation(pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord, proj.rotationYaw, proj.rotationPitch); worldObj.spawnEntityInWorld(proj); if(usesCasings()) { @@ -796,7 +791,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple ammoStacks = new ArrayList(); for(Integer i : getAmmoList()) { - BulletConfiguration config = BulletConfigSyncingUtil.pullConfig(i); + BulletConfig config = BulletConfig.configs.get(i); if(config != null && config.ammo != null) { ammoStacks.add(config.ammo.toStack()); diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretChekhov.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretChekhov.java index fd3a0f743..f7dd78176 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretChekhov.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretChekhov.java @@ -3,10 +3,10 @@ package com.hbm.tileentity.turret; import java.util.ArrayList; import java.util.List; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; import com.hbm.inventory.gui.GUITurretChekhov; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.factory.XFactory50; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.AuxParticlePacketNT; @@ -26,15 +26,11 @@ public class TileEntityTurretChekhov extends TileEntityTurretBaseNT { //also having a floaty `static` like this looks fun //idk if it's just me though static { - configs.add(BulletConfigSyncingUtil.BMG50_NORMAL); - configs.add(BulletConfigSyncingUtil.BMG50_INCENDIARY); - configs.add(BulletConfigSyncingUtil.BMG50_EXPLOSIVE); - configs.add(BulletConfigSyncingUtil.BMG50_AP); - configs.add(BulletConfigSyncingUtil.BMG50_DU); - configs.add(BulletConfigSyncingUtil.BMG50_STAR); - configs.add(BulletConfigSyncingUtil.BMG50_PHOSPHORUS); - configs.add(BulletConfigSyncingUtil.BMG50_SLEEK); - configs.add(BulletConfigSyncingUtil.CHL_BMG50); + configs.add(XFactory50.bmg50_sp.id); + configs.add(XFactory50.bmg50_fmj.id); + configs.add(XFactory50.bmg50_jhp.id); + configs.add(XFactory50.bmg50_ap.id); + configs.add(XFactory50.bmg50_du.id); } @Override @@ -76,11 +72,11 @@ public class TileEntityTurretChekhov extends TileEntityTurretBaseNT { if(timer > 20 && timer % getDelay() == 0) { - BulletConfiguration conf = this.getFirstConfigLoaded(); + BulletConfig conf = this.getFirstConfigLoaded(); if(conf != null) { - this.cachedCasingConfig = conf.spentCasing; - this.spawnBullet(conf); + this.cachedCasingConfig = conf.casing; + this.spawnBullet(conf, 10F); this.conusmeAmmo(conf.ammo); this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:turret.chekhov_fire", 2.0F, 1.0F); diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFriendly.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFriendly.java index 8c3a96667..c4c5c122b 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFriendly.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFriendly.java @@ -3,9 +3,9 @@ package com.hbm.tileentity.turret; import java.util.ArrayList; import java.util.List; -import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.CasingEjector; import com.hbm.inventory.gui.GUITurretFriendly; +import com.hbm.items.weapon.sedna.factory.XFactory556mm; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -17,11 +17,10 @@ public class TileEntityTurretFriendly extends TileEntityTurretChekhov { static List configs = new ArrayList(); static { - configs.add(BulletConfigSyncingUtil.R5_NORMAL); - configs.add(BulletConfigSyncingUtil.R5_EXPLOSIVE); - configs.add(BulletConfigSyncingUtil.R5_DU); - configs.add(BulletConfigSyncingUtil.R5_STAR); - configs.add(BulletConfigSyncingUtil.CHL_R5); + configs.add(XFactory556mm.r556_sp.id); + configs.add(XFactory556mm.r556_fmj.id); + configs.add(XFactory556mm.r556_jhp.id); + configs.add(XFactory556mm.r556_ap.id); } @Override diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java index fe3076f3d..7e0eef9ce 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java @@ -15,6 +15,7 @@ import com.hbm.inventory.fluid.trait.FT_Flammable; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Liquid; import com.hbm.inventory.gui.GUITurretFritz; import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.AuxParticlePacketNT; @@ -58,7 +59,7 @@ public class TileEntityTurretFritz extends TileEntityTurretBaseNT implements IFl ammoStacks = new ArrayList(); - ammoStacks.add(new ItemStack(ModItems.ammo_fuel)); + ammoStacks.add(new ItemStack(ModItems.ammo_standard, 1, EnumAmmo.FLAME_DIESEL.ordinal())); for(FluidType type : Fluids.getInNiceOrder()) { if(type.hasTrait(FT_Combustible.class) && type.hasTrait(FT_Liquid.class)) { @@ -145,7 +146,7 @@ public class TileEntityTurretFritz extends TileEntityTurretBaseNT implements IFl for(int i = 1; i < 10; i++) { - if(slots[i] != null && slots[i].getItem() == ModItems.ammo_fuel) { + if(slots[i] != null && slots[i].getItem() == ModItems.ammo_standard && slots[i].getItemDamage() == EnumAmmo.FLAME_DIESEL.ordinal()) { if(this.tank.getTankType() == Fluids.DIESEL && this.tank.getFill() + 1000 <= this.tank.getMaxFill()) { this.tank.setFill(this.tank.getFill() + 1000); this.decrStackSize(i, 1); diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHoward.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHoward.java index 87e0414bd..71993d569 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHoward.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHoward.java @@ -4,11 +4,11 @@ import java.util.ArrayList; import java.util.List; import com.hbm.config.WeaponConfig; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; import com.hbm.handler.guncfg.GunDGKFactory; import com.hbm.inventory.gui.GUITurretHoward; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.factory.XFactoryTurret; import com.hbm.lib.ModDamageSource; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.AuxParticlePacketNT; @@ -28,7 +28,7 @@ public class TileEntityTurretHoward extends TileEntityTurretBaseNT { static List configs = new ArrayList(); static { - configs.add(BulletConfigSyncingUtil.DGK_NORMAL); + configs.add(XFactoryTurret.dgk_normal.id); } @Override @@ -114,7 +114,7 @@ public class TileEntityTurretHoward extends TileEntityTurretBaseNT { } else { if(loaded <= 0) { - BulletConfiguration conf = this.getFirstConfigLoaded(); + BulletConfig conf = this.getFirstConfigLoaded(); if(conf != null) { this.conusmeAmmo(conf.ammo); diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java index 8c16ce6b4..b2af72b35 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java @@ -3,10 +3,10 @@ package com.hbm.tileentity.turret; import java.util.ArrayList; import java.util.List; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; import com.hbm.inventory.gui.GUITurretJeremy; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.factory.XFactoryTurret; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.AuxParticlePacketNT; @@ -19,15 +19,15 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; public class TileEntityTurretJeremy extends TileEntityTurretBaseNT { - + static List configs = new ArrayList(); static { - configs.add(BulletConfigSyncingUtil.SHELL_NORMAL); - configs.add(BulletConfigSyncingUtil.SHELL_EXPLOSIVE); - configs.add(BulletConfigSyncingUtil.SHELL_AP); - configs.add(BulletConfigSyncingUtil.SHELL_DU); - configs.add(BulletConfigSyncingUtil.SHELL_W9); + configs.add(XFactoryTurret.shell_normal.id); + configs.add(XFactoryTurret.shell_explosive.id); + configs.add(XFactoryTurret.shell_ap.id); + configs.add(XFactoryTurret.shell_du.id); + configs.add(XFactoryTurret.shell_w9.id); } @Override @@ -87,11 +87,11 @@ public class TileEntityTurretJeremy extends TileEntityTurretBaseNT { if(timer % 40 == 0) { - BulletConfiguration conf = this.getFirstConfigLoaded(); + BulletConfig conf = this.getFirstConfigLoaded(); if(conf != null) { - this.cachedCasingConfig = conf.spentCasing; - this.spawnBullet(conf); + this.cachedCasingConfig = conf.casing; + this.spawnBullet(conf, 50F); this.conusmeAmmo(conf.ammo); this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:turret.jeremy_fire", 4.0F, 1.0F); Vec3 pos = this.getTurretPos(); diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java index 61ea04dbd..9e2162412 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java @@ -3,17 +3,14 @@ package com.hbm.tileentity.turret; import java.util.ArrayList; import java.util.List; -import com.hbm.entity.projectile.EntityBulletBaseNT; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; -import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.entity.projectile.EntityBulletBaseMK4; import com.hbm.inventory.gui.GUITurretRichard; -import com.hbm.items.ItemAmmoEnums.AmmoRocket; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.factory.XFactoryRocket; import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; @@ -26,18 +23,7 @@ public class TileEntityTurretRichard extends TileEntityTurretBaseNT { static List configs = new ArrayList(); static { - configs.add(BulletConfigSyncingUtil.ROCKET_NORMAL); - configs.add(BulletConfigSyncingUtil.ROCKET_HE); - configs.add(BulletConfigSyncingUtil.ROCKET_INCENDIARY); - configs.add(BulletConfigSyncingUtil.ROCKET_SHRAPNEL); - configs.add(BulletConfigSyncingUtil.ROCKET_EMP); - configs.add(BulletConfigSyncingUtil.ROCKET_GLARE); - configs.add(BulletConfigSyncingUtil.ROCKET_SLEEK); - configs.add(BulletConfigSyncingUtil.ROCKET_NUKE); - configs.add(BulletConfigSyncingUtil.ROCKET_CHAINSAW); - configs.add(BulletConfigSyncingUtil.ROCKET_TOXIC); - configs.add(BulletConfigSyncingUtil.ROCKET_PHOSPHORUS); - configs.add(BulletConfigSyncingUtil.ROCKET_CANISTER); + for(BulletConfig cfg : XFactoryRocket.rocket_ml) configs.add(cfg.id); } @Override @@ -143,16 +129,15 @@ public class TileEntityTurretRichard extends TileEntityTurretBaseNT { if(timer > 0 && timer % 10 == 0) { - BulletConfiguration conf = this.getFirstConfigLoaded(); + BulletConfig conf = this.getFirstConfigLoaded(); if(conf != null) { - this.spawnBullet(conf); + this.spawnBullet(conf, 30F); this.conusmeAmmo(conf.ammo); this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:turret.richard_fire", 2.0F, 1.0F); this.loaded--; - if(conf.ammo.equals(new ComparableStack(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.NUCLEAR)))) - timer = -50; + //if(conf.ammo.equals(new ComparableStack(ModItems.ammo_standard, EnumAmmo.ROCKET_DEMO))) timer = -50; } else { this.loaded = 0; @@ -161,17 +146,16 @@ public class TileEntityTurretRichard extends TileEntityTurretBaseNT { } @Override - public void spawnBullet(BulletConfiguration bullet) { + public void spawnBullet(BulletConfig bullet, float baseDamage) { Vec3 pos = this.getTurretPos(); Vec3 vec = Vec3.createVectorHelper(this.getBarrelLength(), 0, 0); vec.rotateAroundZ((float) -this.rotationPitch); vec.rotateAroundY((float) -(this.rotationYaw + Math.PI * 0.5)); - EntityBulletBaseNT proj = new EntityBulletBaseNT(worldObj, BulletConfigSyncingUtil.getKey(bullet)); - proj.setPositionAndRotation(pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord, 0.0F, 0.0F); - - proj.setThrowableHeading(vec.xCoord, vec.yCoord, vec.zCoord, bullet.velocity * 0.75F, bullet.spread); + EntityBulletBaseMK4 proj = new EntityBulletBaseMK4(worldObj, bullet, baseDamage, bullet.spread, (float) rotationYaw, (float) rotationPitch); + proj.setPositionAndRotation(pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord, proj.rotationYaw, proj.rotationPitch); + proj.lockonTarget = this.target; worldObj.spawnEntityInWorld(proj); } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentry.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentry.java index 7f3a8bea7..0561ee499 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentry.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentry.java @@ -3,11 +3,11 @@ package com.hbm.tileentity.turret; import java.util.ArrayList; import java.util.List; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; import com.hbm.inventory.container.ContainerTurretBase; import com.hbm.inventory.gui.GUITurretSentry; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.factory.XFactory9mm; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.IGUIProvider; @@ -38,11 +38,10 @@ public class TileEntityTurretSentry extends TileEntityTurretBaseNT implements IG static List configs = new ArrayList(); static { - configs.add(BulletConfigSyncingUtil.R5_NORMAL); - configs.add(BulletConfigSyncingUtil.R5_EXPLOSIVE); - configs.add(BulletConfigSyncingUtil.R5_DU); - configs.add(BulletConfigSyncingUtil.R5_STAR); - configs.add(BulletConfigSyncingUtil.CHL_R5); + configs.add(XFactory9mm.p9_sp.id); + configs.add(XFactory9mm.p9_fmj.id); + configs.add(XFactory9mm.p9_jhp.id); + configs.add(XFactory9mm.p9_ap.id); } @Override @@ -162,11 +161,11 @@ public class TileEntityTurretSentry extends TileEntityTurretBaseNT implements IG if(timer % 10 == 0) { - BulletConfiguration conf = this.getFirstConfigLoaded(); + BulletConfig conf = this.getFirstConfigLoaded(); if(conf != null) { - this.cachedCasingConfig = conf.spentCasing; - this.spawnBullet(conf); + this.cachedCasingConfig = conf.casing; + this.spawnBullet(conf, 5F); this.conusmeAmmo(conf.ammo); this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:turret.sentry_fire", 2.0F, 1.0F); diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentryDamaged.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentryDamaged.java index bc3dc51ff..5fa6c3ef0 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentryDamaged.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentryDamaged.java @@ -1,7 +1,7 @@ package com.hbm.tileentity.turret; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.factory.XFactory9mm; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.AuxParticlePacketNT; @@ -55,7 +55,7 @@ public class TileEntityTurretSentryDamaged extends TileEntityTurretSentry { if(timer % 10 == 0) { - BulletConfiguration conf = BulletConfigSyncingUtil.pullConfig(BulletConfigSyncingUtil.R5_NORMAL); + BulletConfig conf = XFactory9mm.p9_fmj; if(conf != null) { @@ -63,11 +63,11 @@ public class TileEntityTurretSentryDamaged extends TileEntityTurretSentry { Vec3 vec = Vec3.createVectorHelper(0, 0, 0); Vec3 side = Vec3.createVectorHelper(0, 0, 0); - this.cachedCasingConfig = conf.spentCasing; + this.cachedCasingConfig = conf.casing; if(shotSide) { this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:turret.sentry_fire", 2.0F, 1.0F); - this.spawnBullet(conf); + this.spawnBullet(conf, 5F); vec = Vec3.createVectorHelper(this.getBarrelLength(), 0, 0); vec.rotateAroundZ((float) -this.rotationPitch); diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretTauon.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretTauon.java index 7f9b163e6..ea2b2f17d 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretTauon.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretTauon.java @@ -3,9 +3,9 @@ package com.hbm.tileentity.turret; import java.util.ArrayList; import java.util.List; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; import com.hbm.inventory.gui.GUITurretTauon; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.factory.XFactoryAccelerator; import com.hbm.lib.ModDamageSource; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.AuxParticlePacketNT; @@ -24,7 +24,7 @@ public class TileEntityTurretTauon extends TileEntityTurretBaseNT { static List configs = new ArrayList(); static { - configs.add(BulletConfigSyncingUtil.SPECIAL_GAUSS); + configs.add(XFactoryAccelerator.tau_uranium.id); } @Override @@ -124,7 +124,7 @@ public class TileEntityTurretTauon extends TileEntityTurretBaseNT { if(timer % 5 == 0) { - BulletConfiguration conf = this.getFirstConfigLoaded(); + BulletConfig conf = this.getFirstConfigLoaded(); if(conf != null && this.target != null) { this.target.attackEntityFrom(ModDamageSource.electricity, 30F + worldObj.rand.nextInt(11)); diff --git a/src/main/java/com/hbm/util/DamageResistanceHandler.java b/src/main/java/com/hbm/util/DamageResistanceHandler.java index 2c66e712c..fa6c929fe 100644 --- a/src/main/java/com/hbm/util/DamageResistanceHandler.java +++ b/src/main/java/com/hbm/util/DamageResistanceHandler.java @@ -1,15 +1,24 @@ package com.hbm.util; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; +import java.util.Map.Entry; +import com.hbm.items.ModItems; import com.hbm.util.Tuple.Quartet; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.monster.EntityCreeper; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.DamageSource; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.MathHelper; +import net.minecraftforge.event.entity.living.LivingAttackEvent; +import net.minecraftforge.event.entity.living.LivingHurtEvent; /** * Basic handling/registry class for our custom resistance stats. @@ -18,33 +27,240 @@ import net.minecraft.util.MathHelper; * @author hbm */ public class DamageResistanceHandler { + + /** Currently cached DT reduction */ + public static float currentPDT = 0F; + /** Currently cached armor piercing % */ + public static float currentPDR = 0F; + + public static final String CATEGORY_EXPLOSION = "EXPL"; + public static final String CATEGORY_FIRE = "FIRE"; + public static final String CATEGORY_PROJECTILE = "PROJ"; + public static final String CATEGORY_ENERGY = "EN"; public static HashMap itemStats = new HashMap(); public static HashMap, ResistanceStats> setStats = new HashMap(); public static HashMap, ResistanceStats> entityStats = new HashMap(); + + public static HashMap>> itemInfoSet = new HashMap(); public static void init() { + itemStats.clear(); + setStats.clear(); + entityStats.clear(); + itemInfoSet.clear(); + + entityStats.put(EntityCreeper.class, new ResistanceStats().addCategory(CATEGORY_EXPLOSION, 2F, 0.5F)); + + registerSet(ModItems.steel_helmet, ModItems.steel_plate, ModItems.steel_legs, ModItems.steel_boots, new ResistanceStats()); + registerSet(ModItems.titanium_helmet, ModItems.titanium_plate, ModItems.titanium_legs, ModItems.titanium_boots, new ResistanceStats()); + registerSet(ModItems.alloy_helmet, ModItems.alloy_plate, ModItems.alloy_legs, ModItems.alloy_boots, new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 2F, 0.1F)); + registerSet(ModItems.cobalt_helmet, ModItems.cobalt_plate, ModItems.cobalt_legs, ModItems.cobalt_boots, new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 2F, 0.1F)); + registerSet(ModItems.starmetal_helmet, ModItems.starmetal_plate, ModItems.starmetal_legs, ModItems.starmetal_boots, new ResistanceStats()); + registerSet(ModItems.zirconium_legs, ModItems.zirconium_legs, ModItems.zirconium_legs, ModItems.zirconium_legs, new ResistanceStats() + .setOther(0F, 1F)); + registerSet(ModItems.dnt_helmet, ModItems.dnt_plate, ModItems.dnt_legs, ModItems.dnt_boots, new ResistanceStats()); + registerSet(ModItems.schrabidium_helmet, ModItems.schrabidium_plate, ModItems.schrabidium_legs, ModItems.schrabidium_boots, new ResistanceStats()); + registerSet(ModItems.robes_helmet, ModItems.robes_plate, ModItems.robes_legs, ModItems.robes_boots, new ResistanceStats()); + + registerSet(ModItems.steamsuit_helmet, ModItems.steamsuit_plate, ModItems.steamsuit_legs, ModItems.steamsuit_boots, new ResistanceStats()); + registerSet(ModItems.dieselsuit_helmet, ModItems.dieselsuit_plate, ModItems.dieselsuit_legs, ModItems.dieselsuit_boots, new ResistanceStats()); + registerSet(ModItems.t45_helmet, ModItems.t45_plate, ModItems.t45_legs, ModItems.t45_boots, new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 2F, 0.15F) + .addCategory(CATEGORY_FIRE, 0.5F, 0.35F) + .addCategory(CATEGORY_EXPLOSION, 5F, 0.25F) + .setOther(0F, 0.1F)); + registerSet(ModItems.ajr_helmet, ModItems.ajr_plate, ModItems.ajr_legs, ModItems.ajr_boots, new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 4F, 0.15F) + .addCategory(CATEGORY_FIRE, 0.5F, 0.35F) + .addCategory(CATEGORY_EXPLOSION, 7.5F, 0.25F) + .setOther(0F, 0.15F)); + registerSet(ModItems.ajro_helmet, ModItems.ajro_plate, ModItems.ajro_legs, ModItems.ajro_boots, new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 4F, 0.15F) + .addCategory(CATEGORY_FIRE, 0.5F, 0.35F) + .addCategory(CATEGORY_EXPLOSION, 7.5F, 0.25F) + .setOther(0F, 0.15F)); + registerSet(ModItems.rpa_helmet, ModItems.rpa_plate, ModItems.rpa_legs, ModItems.rpa_boots, new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 20F, 0.5F) + .addCategory(CATEGORY_FIRE, 10F, 0.75F) + .addCategory(CATEGORY_EXPLOSION, 15F, 0.25F) + .addExact(DamageClass.LASER.name(), 10F, 0.75F) + .setOther(2F, 0.15F)); + ResistanceStats bj = new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 5F, 0.25F) + .addCategory(CATEGORY_FIRE, 2.5F, 0.5F) + .addCategory(CATEGORY_EXPLOSION, 10F, 0.25F) + .setOther(2F, 0.15F); + registerSet(ModItems.bj_helmet, ModItems.bj_plate, ModItems.bj_legs, ModItems.bj_boots, bj); + registerSet(ModItems.bj_helmet, ModItems.bj_plate_jetpack, ModItems.bj_legs, ModItems.bj_boots, bj); + registerSet(ModItems.envsuit_helmet, ModItems.envsuit_plate, ModItems.envsuit_legs, ModItems.envsuit_boots, new ResistanceStats()); + registerSet(ModItems.hev_helmet, ModItems.hev_plate, ModItems.hev_legs, ModItems.hev_boots, new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 2F, 0.15F) + .addCategory(CATEGORY_FIRE, 0.5F, 0.5F) + .addCategory(CATEGORY_EXPLOSION, 5F, 0.25F) + .addExact(DamageSource.onFire.damageType, 0F, 1F) + .setOther(2F, 0.25F)); + registerSet(ModItems.bismuth_helmet, ModItems.bismuth_plate, ModItems.bismuth_legs, ModItems.bismuth_boots, new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 2F, 0.15F) + .addCategory(CATEGORY_FIRE, 5F, 0.5F) + .addCategory(CATEGORY_EXPLOSION, 5F, 0.25F) + .setOther(2F, 0.25F)); + registerSet(ModItems.fau_helmet, ModItems.fau_plate, ModItems.fau_legs, ModItems.fau_boots, new ResistanceStats()); + registerSet(ModItems.dns_helmet, ModItems.dns_plate, ModItems.dns_legs, ModItems.dns_boots, new ResistanceStats() + .addCategory(CATEGORY_EXPLOSION, 100F, 0.9F) + .setOther(100F, 100F)); + registerSet(ModItems.trenchmaster_helmet, ModItems.trenchmaster_plate, ModItems.trenchmaster_legs, ModItems.trenchmaster_boots, new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 5F, 0.5F) + .addCategory(CATEGORY_FIRE, 5F, 0.5F) + .addCategory(CATEGORY_EXPLOSION, 5F, 0.25F) + .addExact(DamageClass.LASER.name(), 15F, 0.9F) + .setOther(5F, 0.25F)); + + registerSet(ModItems.hazmat_helmet, ModItems.hazmat_plate, ModItems.hazmat_legs, ModItems.hazmat_boots, new ResistanceStats()); + registerSet(ModItems.hazmat_helmet_red, ModItems.hazmat_plate_red, ModItems.hazmat_legs_red, ModItems.hazmat_boots_red, new ResistanceStats()); + registerSet(ModItems.hazmat_helmet_grey, ModItems.hazmat_plate_grey, ModItems.hazmat_legs_grey, ModItems.hazmat_boots_grey, new ResistanceStats()); + registerSet(ModItems.liquidator_helmet, ModItems.liquidator_plate, ModItems.liquidator_legs, ModItems.liquidator_boots, new ResistanceStats()); + registerSet(ModItems.hazmat_paa_helmet, ModItems.hazmat_paa_plate, ModItems.hazmat_paa_legs, ModItems.hazmat_paa_boots, new ResistanceStats()); + registerSet(ModItems.asbestos_helmet, ModItems.asbestos_plate, ModItems.asbestos_legs, ModItems.asbestos_boots, new ResistanceStats()); + } + + public static void registerSet(Item helmet, Item plate, Item legs, Item boots, ResistanceStats stats) { + Quartet set = new Quartet(helmet, plate, legs, boots); + setStats.put(set, stats); + addToListInHashMap(helmet, itemInfoSet, set); + addToListInHashMap(plate, itemInfoSet, set); + addToListInHashMap(legs, itemInfoSet, set); + addToListInHashMap(boots, itemInfoSet, set); + } + + public static void addToListInHashMap(Object key, HashMap map, Object listElement) { + List list = (List) map.get(key); + if(list == null) { + list = new ArrayList(); + map.put(key, list); + } + list.add(listElement); + } + + public static void addInfo(ItemStack stack, List desc) { + if(stack == null || stack.getItem() == null || !itemInfoSet.containsKey(stack.getItem())) return; + + List> sets = itemInfoSet.get(stack.getItem()); + + for(Quartet set : sets) { + + ResistanceStats stats = setStats.get(set); + if(stats == null) continue; + + List toAdd = new ArrayList(); + + //TODO: why don't we cache this? + for(Entry entry : stats.categoryResistances.entrySet()) { + toAdd.add(I18nUtil.resolveKey("damage.category." + entry.getKey()) + ": " + entry.getValue().threshold + "/" + ((int)(entry.getValue().resistance * 100)) + "%"); + } + for(Entry entry : stats.exactResistances.entrySet()) { + toAdd.add(I18nUtil.resolveKey("damage.exact." + entry.getKey()) + ": " + entry.getValue().threshold + "/" + ((int)(entry.getValue().resistance * 100)) + "%"); + } + if(stats.otherResistance != null) toAdd.add(I18nUtil.resolveKey("damage.other") + ": " + stats.otherResistance.threshold + "/" + ((int)(stats.otherResistance.resistance * 100)) + "%"); + + if(!toAdd.isEmpty()) { + desc.add(EnumChatFormatting.DARK_PURPLE + "Resistances when worn in set:"); + //this sucks ass! + if(set.getW() != null) desc.add(EnumChatFormatting.DARK_PURPLE + " " + new ItemStack(set.getW()).getDisplayName()); + if(set.getX() != null) desc.add(EnumChatFormatting.DARK_PURPLE + " " + new ItemStack(set.getX()).getDisplayName()); + if(set.getY() != null) desc.add(EnumChatFormatting.DARK_PURPLE + " " + new ItemStack(set.getY()).getDisplayName()); + if(set.getZ() != null) desc.add(EnumChatFormatting.DARK_PURPLE + " " + new ItemStack(set.getZ()).getDisplayName()); + desc.addAll(toAdd); + } + + return; //TEMP, only show one set for now + } + } + + public static enum DamageClass { + PHYSICAL, + FIRE, + EXPLOSIVE, + ELECTRIC, + LASER, + MICROWAVE, + SUBATOMIC, + OTHER + } + + public static void setup(float dt, float dr) { + currentPDT = dt; + currentPDR = dr; + } + + public static void reset() { + currentPDT = 0; + currentPDR = 0; + } + + @SubscribeEvent + public void onEntityAttacked(LivingAttackEvent event) { + EntityLivingBase e = event.entityLiving; + float amount = event.ammount; + + float[] vals = getDTDR(e, event.source, amount, currentPDT, currentPDR); + float dt = vals[0] - currentPDT; + + if(dt > 0 && dt >= event.ammount) { + event.setCanceled(true); + EntityDamageUtil.damageArmorNT(e, amount); + } + } + + @SubscribeEvent + public void onEntityDamaged(LivingHurtEvent event) { + event.ammount = calculateDamage(event.entityLiving, event.source, event.ammount, currentPDT, currentPDR); + } + + public static String typeToCategory(DamageSource source) { + if(source.isExplosion()) return CATEGORY_EXPLOSION; + if(source.isFireDamage()) return CATEGORY_FIRE; + if(source.isProjectile()) return CATEGORY_PROJECTILE; + if(source.damageType.equals(DamageClass.LASER.name())) return CATEGORY_ENERGY; + if(source.damageType.equals(DamageClass.MICROWAVE.name())) return CATEGORY_ENERGY; + if(source.damageType.equals(DamageClass.SUBATOMIC.name())) return CATEGORY_ENERGY; + return source.damageType; } public static float calculateDamage(EntityLivingBase entity, DamageSource damage, float amount, float pierceDT, float pierce) { - if(damage.isDamageAbsolute() || damage.isUnblockable()) return amount; + if(damage.isDamageAbsolute()) return amount; + + float[] vals = getDTDR(entity, damage, amount, pierceDT, pierce); + float dt = vals[0]; + float dr = vals[1]; + + dt = Math.max(0F, dt - pierceDT); + if(dt >= amount) return 0F; + amount -= dt; + dr *= MathHelper.clamp_float(1F - pierce, 0F, 1F); + + return amount *= (1F - dr); + } + + public static float[] getDTDR(EntityLivingBase entity, DamageSource damage, float amount, float pierceDT, float pierce) { - String key = damage.damageType; float dt = 0; float dr = 0; /// SET HANDLING /// Quartet wornSet = new Quartet( - entity.getEquipmentInSlot(1) != null ? entity.getEquipmentInSlot(1).getItem() : null, - entity.getEquipmentInSlot(2) != null ? entity.getEquipmentInSlot(2).getItem() : null, + entity.getEquipmentInSlot(4) != null ? entity.getEquipmentInSlot(4).getItem() : null, entity.getEquipmentInSlot(3) != null ? entity.getEquipmentInSlot(3).getItem() : null, - entity.getEquipmentInSlot(4) != null ? entity.getEquipmentInSlot(4).getItem() : null + entity.getEquipmentInSlot(2) != null ? entity.getEquipmentInSlot(2).getItem() : null, + entity.getEquipmentInSlot(1) != null ? entity.getEquipmentInSlot(1).getItem() : null ); ResistanceStats setResistance = setStats.get(wornSet); if(setResistance != null) { - Resistance res = setResistance.resistances.get(key); + Resistance res = setResistance.getResistance(damage); if(res != null) { dt += res.threshold; dr += res.resistance; @@ -57,7 +273,7 @@ public class DamageResistanceHandler { if(armor == null) continue; ResistanceStats stats = itemStats.get(armor.getItem()); if(stats == null) continue; - Resistance res = stats.resistances.get(key); + Resistance res = stats.getResistance(damage); if(res == null) continue; dt += res.threshold; dr += res.resistance; @@ -66,30 +282,33 @@ public class DamageResistanceHandler { /// ENTITY CLASS HANDLING /// ResistanceStats innateResistance = entityStats.get(entity.getClass()); if(innateResistance != null) { - Resistance res = innateResistance.resistances.get(key); + Resistance res = innateResistance.getResistance(damage); if(res != null) { dt += res.threshold; dr += res.resistance; } } - - /// MATH /// - dt = Math.max(0F, dt - pierceDT); - if(dt <= amount) return 0F; - amount -= dt; - dr *= MathHelper.clamp_float(1F - pierce, 0F, 1F); - return amount *= (1F - dr); + return new float[] {dt, dr}; } public static class ResistanceStats { + + public HashMap exactResistances = new HashMap(); + public HashMap categoryResistances = new HashMap(); + public Resistance otherResistance; - public HashMap resistances = new HashMap(); - - public ResistanceStats add(String type, float threshold, float resistance) { - resistances.put(type, new Resistance(threshold, resistance)); - return this; + public Resistance getResistance(DamageSource source) { + Resistance exact = exactResistances.get(source.damageType); + if(exact != null) return exact; + Resistance category = categoryResistances.get(typeToCategory(source)); + if(category != null) return category; + return source.isUnblockable() ? null : otherResistance; } + + public ResistanceStats addExact(String type, float threshold, float resistance) { exactResistances.put(type, new Resistance(threshold, resistance)); return this; } + public ResistanceStats addCategory(String type, float threshold, float resistance) { categoryResistances.put(type, new Resistance(threshold, resistance)); return this; } + public ResistanceStats setOther(float threshold, float resistance) { otherResistance = new Resistance(threshold, resistance); return this; } } public static class Resistance { diff --git a/src/main/java/com/hbm/util/EntityDamageUtil.java b/src/main/java/com/hbm/util/EntityDamageUtil.java index 27ec42b6e..95193b3b4 100644 --- a/src/main/java/com/hbm/util/EntityDamageUtil.java +++ b/src/main/java/com/hbm/util/EntityDamageUtil.java @@ -10,6 +10,7 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.passive.EntityTameable; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.potion.Potion; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.DamageSource; @@ -20,27 +21,6 @@ import net.minecraftforge.common.ForgeHooks; public class EntityDamageUtil { - /** - * Attacks the given entity twice, based on a piercing percentage. The second hit sets the damage source to bypass armor. - * The damage source is modified, so you can't reuse damage source instances. - */ - @Deprecated public static boolean attackEntityFromArmorPiercing(Entity victim, DamageSource src, float damage, float piercing) { - - if(src.isUnblockable() || piercing == 0) return victim.attackEntityFrom(src, damage); - - if(piercing == 1) { - src.setDamageBypassesArmor(); - return victim.attackEntityFrom(src, damage); - } - - boolean ret = false; - - ret |= victim.attackEntityFrom(src, damage * (1F - piercing)); - src.setDamageBypassesArmor(); - ret |= victim.attackEntityFrom(src, damage * piercing); - return ret; - } - public static boolean attackEntityFromIgnoreIFrame(Entity victim, DamageSource src, float damage) { if(!victim.attackEntityFrom(src, damage)) { @@ -58,27 +38,24 @@ public class EntityDamageUtil { } } - @Deprecated public static float getDamageAfterTax(EntityLivingBase living, DamageSource source, float amount) { - amount = ForgeHooks.onLivingHurt(living, source, amount); - if(amount <= 0) return 0; - amount = applyArmorCalculations(living, source, amount); - return amount; + public static boolean attackEntityFromNT(EntityLivingBase living, DamageSource source, float amount, boolean ignoreIFrame, boolean allowSpecialCancel, double knockbackMultiplier, float pierceDT, float pierce) { + if(living instanceof EntityPlayerMP && source.getEntity() instanceof EntityPlayer) { + EntityPlayerMP playerMP = (EntityPlayerMP) living; + EntityPlayer attacker = (EntityPlayer) source.getEntity(); + if(!playerMP.canAttackPlayer(attacker)) return false; //handles wack-ass no PVP rule as well as scoreboard friendly fire + } + DamageResistanceHandler.setup(pierceDT, pierce); + boolean ret = attackEntityFromNTInternal(living, source, amount, ignoreIFrame, allowSpecialCancel, knockbackMultiplier); + //boolean ret = living.attackEntityFrom(source, amount); + DamageResistanceHandler.reset(); + return ret; } - @Deprecated public static boolean attackArmorPiercing(EntityLivingBase living, DamageSource sourceDamageCalc, DamageSource sourceArmorPiercing, float amount, float piercing) { - if(piercing <= 0) return living.attackEntityFrom(sourceDamageCalc, amount); - //damage intended to pass the armor - float afterTax = getDamageAfterTax(living, sourceDamageCalc, amount); - //damage removed by the calculation - float reduced = Math.max(amount - afterTax, 0F); - //damage that would pass + damage tthat wouldn't pass * AP percentage - return attackEntityFromIgnoreIFrame(living, sourceArmorPiercing, Math.max(afterTax + (reduced * piercing), 0F)); - } - - public static boolean attackEntityFromNT(EntityLivingBase living, DamageSource source, float amount, boolean ignoreIFrame, boolean allowSpecialCancel, double knockbackMultiplier) { + private static boolean attackEntityFromNTInternal(EntityLivingBase living, DamageSource source, float amount, boolean ignoreIFrame, boolean allowSpecialCancel, double knockbackMultiplier) { if(ForgeHooks.onLivingAttack(living, source, amount) && allowSpecialCancel) return false; if(living.isEntityInvulnerable()) return false; if(living.worldObj.isRemote) return false; + if(living instanceof EntityPlayer && ((EntityPlayer) living).capabilities.disableDamage && !source.canHarmInCreative()) return false; living.entityAge = 0; if(living.getHealth() <= 0.0F) return false; @@ -89,14 +66,14 @@ public class EntityDamageUtil { if(living.hurtResistantTime > living.maxHurtResistantTime / 2.0F && !ignoreIFrame) { if(amount <= living.lastDamage) { return false; } - damageEntityNT(living, source, amount - living.lastDamage); //TODO: override + damageEntityNT(living, source, amount - living.lastDamage); living.lastDamage = amount; didAttackRegister = false; } else { living.lastDamage = amount; living.prevHealth = living.getHealth(); living.hurtResistantTime = living.maxHurtResistantTime; - damageEntityNT(living, source, amount); //TODO: override + damageEntityNT(living, source, amount); living.hurtTime = living.maxHurtTime = 10; } @@ -135,7 +112,7 @@ public class EntityDamageUtil { } living.attackedAtYaw = (float) (Math.atan2(deltaZ, deltaX) * 180.0D / Math.PI) - living.rotationYaw; - if(knockbackMultiplier > 0) living.knockBack(entity, amount, deltaX * knockbackMultiplier, deltaZ * knockbackMultiplier); + if(knockbackMultiplier > 0) knockBack(living, entity, amount, deltaX, deltaZ, knockbackMultiplier); } else { living.attackedAtYaw = (float) ((int) (Math.random() * 2.0D) * 180); } @@ -155,6 +132,24 @@ public class EntityDamageUtil { return true; } + public static void knockBack(EntityLivingBase living, Entity attacker, float damage, double motionX, double motionZ, double multiplier) { + if(living.getRNG().nextDouble() >= living.getEntityAttribute(SharedMonsterAttributes.knockbackResistance).getAttributeValue()) { + living.isAirBorne = true; + double horizontal = Math.sqrt(motionX * motionX + motionZ * motionZ); + double magnitude = 0.4D * multiplier; + living.motionX /= 2.0D; + living.motionY /= 2.0D; + living.motionZ /= 2.0D; + living.motionX -= motionX / horizontal * magnitude; + living.motionY += (double) magnitude; + living.motionZ -= motionZ / horizontal * magnitude; + + if(living.motionY > 0.2D) { + living.motionY = 0.2D * multiplier; + } + } + } + public static void damageEntityNT(EntityLivingBase living, DamageSource source, float amount) { if(!living.isEntityInvulnerable()) { amount = ForgeHooks.onLivingHurt(living, source, amount); @@ -178,12 +173,10 @@ public class EntityDamageUtil { public static float applyArmorCalculationsNT(EntityLivingBase living, DamageSource source, float amount) { if(!source.isUnblockable()) { - int i = 25 - living.getTotalArmorValue(); + float i = 25F - (living.getTotalArmorValue() * (1 - DamageResistanceHandler.currentPDR)); float armor = amount * (float) i; damageArmorNT(living, amount); amount = armor / 25.0F; - - //TODO: special handling depending on armor stats } return amount; diff --git a/src/main/java/com/hbm/util/Vec3NT.java b/src/main/java/com/hbm/util/Vec3NT.java index 8bedb3869..0cb8121a7 100644 --- a/src/main/java/com/hbm/util/Vec3NT.java +++ b/src/main/java/com/hbm/util/Vec3NT.java @@ -79,15 +79,15 @@ public class Vec3NT extends Vec3 { } public Vec3NT rotateAroundXDeg(double alpha) { - return this.rotateAroundXRad(alpha * 180D / Math.PI); + return this.rotateAroundXRad(alpha / 180D * Math.PI); } public Vec3NT rotateAroundYDeg(double alpha) { - return this.rotateAroundYRad(alpha * 180D / Math.PI); + return this.rotateAroundYRad(alpha / 180D * Math.PI); } public Vec3NT rotateAroundZDeg(double alpha) { - return this.rotateAroundZRad(alpha * 180D / Math.PI); + return this.rotateAroundZRad(alpha / 180D * Math.PI); } public static double getMinX(Vec3NT... vecs) { diff --git a/src/main/java/com/hbm/world/dungeon/Radio01.java b/src/main/java/com/hbm/world/dungeon/Radio01.java index 57111ce3c..36aa3d7c9 100644 --- a/src/main/java/com/hbm/world/dungeon/Radio01.java +++ b/src/main/java/com/hbm/world/dungeon/Radio01.java @@ -652,7 +652,7 @@ public class Radio01 extends WorldGenerator world.setBlock(x + 6, y + 0, z + 24, ModBlocks.deco_steel, 0, 3); world.setBlock(x + 7, y + 0, z + 24, Blocks.chest, 2, 3); world.setBlockMetadataWithNotify(x + 7, y + 0, z + 24, 5, 3); - WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsLegacy.POOL_ANTENNA), (TileEntityChest)world.getTileEntity(x + 7, y + 0, z + 24), 8); + if(world.getTileEntity(x + 7, y + 0, z + 24) instanceof TileEntityChest) WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsLegacy.POOL_ANTENNA), (TileEntityChest) world.getTileEntity(x + 7, y + 0, z + 24), 8); world.setBlock(x + 8, y + 0, z + 24, ModBlocks.deco_steel, 0, 3); world.setBlock(x + 9, y + 0, z + 24, ModBlocks.deco_steel, 0, 3); world.setBlock(x + 10, y + 0, z + 24, Library.getRandomConcrete(), 0, 3); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 26f535d35..b2e5a8cd3 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -351,6 +351,7 @@ container.launchPad=Startrampe container.launchPadRusted=Startrampe container.launchTable=Große Startrampe container.leadBox=Sicherheitsbehälter +container.machineAmmoPress=Munitionspresse container.machineArcWelder=Lichtbogenschweißer container.machineArcFurnaceLarge=Lichtbogenofen container.machineBoiler=Ölwärmer @@ -1150,12 +1151,24 @@ item.ammo_shell.name=240mm Geschoss item.ammo_shell_apfsds_du.name=240mm APFSDS-DU item.ammo_shell_apfsds_t.name=240mm APFSDS-T item.ammo_shell_explosive.name=240mm HE-Geschoss +item.ammo_secret.bmg50_equestrian.name=.50 BMG Zerstörer +item.ammo_secret.folly_nuke.name=Silberne Kugel, Atomar +item.ammo_secret.folly_sm.name=Silberne Kugel +item.ammo_secret.g12_equestrian.name=Kaliber 12 Gleisnägel +item.ammo_secret.m44_equestrian.name=.44 Magnum Schädelsprenger +item.ammo_standard.b75.name=.75 Bolzen +item.ammo_standard.b75_exp.name=.75 Bolzen (Explosiv) +item.ammo_standard.b75_inc.name=.75 Bolzen (Brand) item.ammo_standard.bmg50_ap.name=.50 BMG Patrone (Panzerbrechend) item.ammo_standard.bmg50_du.name=.50 BMG Patrone (Urangeschoss) -item.ammo_standard.bmg50_equestrian.name=.50 BMG Zerstörer item.ammo_standard.bmg50_fmj.name=.50 BMG Patrone (Vollmantelgeschoss) item.ammo_standard.bmg50_jhp.name=.50 BMG Patrone (Hohlspitz) item.ammo_standard.bmg50_sp.name=.50 BMG Patrone (Teilmantelgeschoss) +item.ammo_standard.capacitor.name=Kondensator +item.ammo_standard.capacitor_ir.name=Capacitor (niedrige Wellenlänge) +item.ammo_standard.capacitor_overcharge.name=Kondensator (Überladung) +item.ammo_standard.coil_ferrouranium.name=Ferrourankugel +item.ammo_standard.coil_tungsten.name=Wolframkugel item.ammo_standard.flame_balefire.name=Flammenwerferbrennstoff, Balefire item.ammo_standard.flame_diesel.name=Flammenwerferbrennstoff, Diesel item.ammo_standard.flame_gas.name=Flammenwerferbrennstoff, Gas @@ -1165,7 +1178,6 @@ item.ammo_standard.g12_anthrax.name=Kaliber 12 Anthrax item.ammo_standard.g12_bp.name=Kaliber 12 Schwarzpulver item.ammo_standard.g12_bp_magnum.name=Kaliber 12 Schwarzpulver Magnum item.ammo_standard.g12_bp_slug.name=Kaliber 12 Schwarzpulver Laufgeschoss -item.ammo_standard.g12_equestrian.name=Kaliber 12 Gleisnägel item.ammo_standard.g12_explosive.name=Kaliber 12 Explosivgeschoss item.ammo_standard.g12_flechette.name=Kaliber 12 Flechett item.ammo_standard.g12_magnum.name=Kaliber 12 Magnum @@ -1178,6 +1190,7 @@ item.ammo_standard.g40_demo.name=40mm Abrissgranate item.ammo_standard.g40_he.name=40mm Sprenggranate item.ammo_standard.g40_heat.name=40mm Hohlladungsgranate item.ammo_standard.g40_inc.name=40mm Brandgranate +item.ammo_standard.g40_phosphorus.name=40mm Weiße Phosphorgranate item.ammo_standard.m357_ap.name=.357 Magnumkugel (Panzerbrechend) item.ammo_standard.m357_bp.name=.357 Magnumkugel (Schwarzpulver) item.ammo_standard.m357_express.name=.357 Magnumkugel (VMG Express) @@ -1186,7 +1199,6 @@ item.ammo_standard.m357_jhp.name=.357 Magnumkugel (Hohlspitz) item.ammo_standard.m357_sp.name=.357 Magnumkugel (Teilmantelgeschoss) item.ammo_standard.m44_ap.name=.44 Magnumkugel (Panzerbrechend) item.ammo_standard.m44_bp.name=.44 Magnumkugel (Schwarzpulver) -item.ammo_standard.m44_equestrian.name=.44 Magnum Schädelsprenger item.ammo_standard.m44_express.name=.44 Magnumkugel (VMG Express) item.ammo_standard.m44_fmj.name=.44 Magnumkugel (Vollmantelgeschoss) item.ammo_standard.m44_jhp.name=.44 Magnumkugel (Hohlspitz) @@ -1217,10 +1229,12 @@ item.ammo_standard.rocket_demo.name=Abrissrakete item.ammo_standard.rocket_he.name=Explosivrakete item.ammo_standard.rocket_heat.name=Hohlladungsrakete item.ammo_standard.rocket_inc.name=Brandrakete +item.ammo_standard.rocket_phosphorus.name=Weiße Phosphorrakete item.ammo_standard.stone.name=Kugel und Pulver item.ammo_standard.stone_ap.name=Feuerstein und Pulver item.ammo_standard.stone_iron.name=Eisenkugel und Pulver item.ammo_standard.stone_shot.name=Schrot und Pulver +item.ammo_standard.tau_uranium.name=Erschöpfte Uran-235-Kiste item.ammo_stinger_rocket.name=Stinger-Rakete item.ammo_stinger_rocket_he.name=Stinger-Rakete (HE) item.ammo_stinger_rocket_incendiary.name=Stinger-Rakete (Brand) @@ -2169,9 +2183,11 @@ item.gun_fatman.name=M42 Nukleares Katapult "Fat Man" item.gun_fatman_ammo.name=Miniatombombe (LEGACY) item.gun_fireext.name=Feuerlöscher item.gun_flamer.name=Flammenwerfer +item.gun_flamer_daybreaker.name=Daybreaker +item.gun_flamer_topaz.name=Mister Topaz item.gun_flaregun.name=Signalpistole item.gun_flechette.name=Flechet-Gewehr -item.gun_folly.name=Prototyp Digamma "Irrsinn" +item.gun_folly.name=Folly item.gun_g3.name=Sturmgewehr item.gun_greasegun.name=Grease Gun item.gun_hangman.name=Hangman @@ -2200,6 +2216,7 @@ item.gun_lever_action_sonata.name=Verkehrter Mare's Leg item.gun_lever_action_sonata_2.name=§cSonatas Mikrophon§r item.gun_liberator.name=Liberator item.gun_light_revolver.name=Kipplaufrevolver +item.gun_light_revolver_atlas.name=Atlas item.gun_light_revolver_dani.name=Tag und Nacht item.gun_lunatic_marksman.name=Lunatic-Scharfschützengewehr item.gun_m2.name=üsMG @@ -2207,6 +2224,7 @@ item.gun_maresleg.name=Repetierflinte item.gun_maresleg_akimbo.name=Repetierflinten item.gun_maresleg_broken.name=Broken item.gun_minigun.name=Minigun +item.gun_minigun_lacunae.name=Lacunae item.gun_mirv.name=M42 Nukleares Katapult "Experimentelles MIRV" item.gun_mirv_ammo.name=Achtfaches MIRV (LEGACY) item.gun_missile_launcher.name=Raketenwerfer @@ -2268,6 +2286,7 @@ item.gun_uac_pistol.name=UAC .45 Pistole item.gun_uboinik.name=Ubojnik item.gun_uboinik_ammo.name=12x70 Schrotmunition (LEGACY) item.gun_uzi.name=Uzi +item.gun_uzi_akimbo.name=Uzis item.gun_uzi_ammo.name=.22 lfB Patrone (LEGACY) item.gun_uzi_saturnite.name=Saturnit-Uzi item.gun_uzi_saturnite_silencer.name=Saturnit-Uzi mit Schalldämpfer @@ -3769,23 +3788,30 @@ rbmk.rod.xenon=Xenonvergiftung: %s rbmk.rod.coreTemp=Kerntemperatur: %s rbmk.rod.skinTemp=Außentemperatur: %s / %s +shape.barrelHeavy=Schwerer Lauf +shape.barrelLight=Leichter Lauf shape.billet=Billet shape.blade=Turbinenblatt shape.blades=Sägeblatt shape.block=Block shape.dust=Haufen shape.dusttiny=Winziger Haufen -shape.hull_big=Große Hülle +shape.grip=Griff +shape.gunMechanism=Mechanism +shape.hull_big=Große Mechanismus shape.hull_small=Kleine Hülle shape.ingot=Barren shape.nugget=Nugget shape.quantum=Quantum shape.quart=Viertel Block +shape.receiverHeavy=Schwerer Verschluss +shape.receiverLight=Leichter Verschluss shape.ntmpipe=Rohr shape.plate=Platte shape.plateTriple=Gussplatte shape.shell=Mantel shape.stamp=Stempel +shape.stock=Schaft shape.wireFine=Drähte shape.wireDense=Dichter Draht shape.wiresDense=Dichte Drähte @@ -4371,6 +4397,7 @@ tile.launch_table.name=Große Startrampe tile.leaves_layer.name=Totes Laub tile.lox_barrel.name=LOX-Fass tile.machine_amgen.name=Umgebungsstrahlungs-Generator +tile.machine_ammo_press.name=Munitionspresse tile.machine_arc_furnace.name=Electrischer Lichtbogenofen tile.machine_arc_furnace_off.name=Lichtbogenofen tile.machine_arc_furnace_on.name=Lichtbogenofen diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 11eb835c3..c2b16bdaa 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -753,6 +753,7 @@ container.launchPad=Launch Pad container.launchPadRusted=Launch Pad container.launchTable=Large Launch Pad container.leadBox=Containment Box +container.machineAmmoPress=Ammo Press container.machineArcWelder=Arc Welder container.machineArcFurnaceLarge=Arc Furnace container.machineBoiler=Oil Heater @@ -1873,12 +1874,24 @@ item.ammo_shell_apfsds_du.name=240mm APFSDS-DU item.ammo_shell_apfsds_t.name=240mm APFSDS-T item.ammo_shell_explosive.name=240mm HE Shell item.ammo_shell_w9.name=240mm W9 Nuclear Shell +item.ammo_secret.bmg50_equestrian.name=.50 BMG Demolisher +item.ammo_secret.folly_nuke.name=Silver Bullet, Nuclear +item.ammo_secret.folly_sm.name=Silver Bullet +item.ammo_secret.g12_equestrian.name=12 Gauge Railway Spike Shot +item.ammo_secret.m44_equestrian.name=.44 Magnum Head-Exploder +item.ammo_standard.b75.name=.75 Bolt +item.ammo_standard.b75_exp.name=.75 Bolt (Explosive) +item.ammo_standard.b75_inc.name=.75 Bolt (Incendiary) item.ammo_standard.bmg50_ap.name=.50 BMG Round (Armor Piercing) item.ammo_standard.bmg50_du.name=.50 BMG Round (Depleted Uranium) -item.ammo_standard.bmg50_equestrian.name=.50 BMG Demolisher item.ammo_standard.bmg50_fmj.name=.50 BMG Round (Full Metal Jacket) item.ammo_standard.bmg50_jhp.name=.50 BMG Round (Jacketed Hollow Point) item.ammo_standard.bmg50_sp.name=.50 BMG Round (Soft Point) +item.ammo_standard.capacitor.name=Capacitor +item.ammo_standard.capacitor_ir.name=Capacitor (Low Wavelength) +item.ammo_standard.capacitor_overcharge.name=Capacitor (Overcharge) +item.ammo_standard.coil_ferrouranium.name=Coilgun Ferrouranium Ball +item.ammo_standard.coil_tungsten.name=Coilgun Tungsten Ball item.ammo_standard.flame_balefire.name=Flamer Fuel, Balefire item.ammo_standard.flame_diesel.name=Flamer Fuel, Diesel item.ammo_standard.flame_gas.name=Flamer Fuel, Gas @@ -1888,7 +1901,6 @@ item.ammo_standard.g12_anthrax.name=12 Gauge Anthrax Shell item.ammo_standard.g12_bp.name=12 Gauge Black Powder Buckshot item.ammo_standard.g12_bp_magnum.name=12 Gauge Black Powder Magnum Shell item.ammo_standard.g12_bp_slug.name=12 Gauge Black Powder Slug -item.ammo_standard.g12_equestrian.name=12 Gauge Railway Spike Shot item.ammo_standard.g12_explosive.name=12 Gauge Explosive Shell item.ammo_standard.g12_flechette.name=12 Gauge Flechette Shell item.ammo_standard.g12_magnum.name=12 Gauge Magnum Shell @@ -1901,6 +1913,7 @@ item.ammo_standard.g40_demo.name=40mm Grenade, Demolition item.ammo_standard.g40_he.name=40mm Grenade, High-Explosive item.ammo_standard.g40_heat.name=40mm Grenade, Shaped Charge item.ammo_standard.g40_inc.name=40mm Grenade, Incendiary +item.ammo_standard.g40_phosphorus.name=40mm Grenade, White Phosphorus item.ammo_standard.m357_ap.name=.357 Magnum Round (Armor Piercing) item.ammo_standard.m357_bp.name=.357 Magnum Round (Black Powder) item.ammo_standard.m357_express.name=.357 Magnum Round (FMJ Express) @@ -1909,7 +1922,6 @@ item.ammo_standard.m357_jhp.name=.357 Magnum Round (Jacketed Hollow Point) item.ammo_standard.m357_sp.name=.357 Magnum Round (Soft Point) item.ammo_standard.m44_ap.name=.44 Magnum Round (Armor Piercing) item.ammo_standard.m44_bp.name=.44 Magnum Round (Black Powder) -item.ammo_standard.m44_equestrian.name=.44 Magnum Head-Exploder item.ammo_standard.m44_express.name=.44 Magnum Round (FMJ Express) item.ammo_standard.m44_fmj.name=.44 Magnum Round (Full Metal Jacket) item.ammo_standard.m44_jhp.name=.44 Magnum Round (Jacketed Hollow Point) @@ -1940,10 +1952,12 @@ item.ammo_standard.rocket_demo.name=Rocket, Demolition item.ammo_standard.rocket_he.name=Rocket, High-Explosive item.ammo_standard.rocket_heat.name=Rocket, Shaped Charge item.ammo_standard.rocket_inc.name=Rocket, Incendiary +item.ammo_standard.rocket_phosphorus.name=Rocket, White Phosphorus item.ammo_standard.stone.name=Ball and Powder item.ammo_standard.stone_ap.name=Flint and Powder item.ammo_standard.stone_iron.name=Iron Ball and Powder item.ammo_standard.stone_shot.name=Shot and Powder +item.ammo_standard.tau_uranium.name=Depleted Uranium-235 Box item.ammo_stinger_rocket.name=Stinger Rocket item.ammo_stinger_rocket_he.name=Stinger Rocket (HE) item.ammo_stinger_rocket_incendiary.name=Stinger Rocket (Incendiary) @@ -2977,9 +2991,11 @@ item.gun_fatman.name=M42 Nuclear Catapult "Fat Man" item.gun_fatman_ammo.name=Mini Nuke (LEGACY) item.gun_fireext.name=Fire Extinguisher item.gun_flamer.name=Flamethrower +item.gun_flamer_daybreaker.name=Daybreaker +item.gun_flamer_topaz.name=Mister Topaz item.gun_flaregun.name=Flare Gun item.gun_flechette.name=Flechette Rifle -item.gun_folly.name=Prototype Digamma "Folly" +item.gun_folly.name=Folly item.gun_g3.name=Assault Rifle item.gun_glass_cannon.name=The Glass Cannon item.gun_greasegun.name=Grease Gun @@ -3009,6 +3025,7 @@ item.gun_lever_action_sonata.name=Flipped Mare's Leg item.gun_lever_action_sonata_2.name=§cSonata's Microphone§r item.gun_liberator.name=Liberator item.gun_light_revolver.name=Break-Action Revolver +item.gun_light_revolver_atlas.name=Atlas item.gun_light_revolver_dani.name=Day And Night item.gun_lunatic_marksman.name=Lunatic Sniper Rifle item.gun_m2.name=Ma Deuce @@ -3016,6 +3033,7 @@ item.gun_maresleg.name=Lever Action Shotgun item.gun_maresleg_akimbo.name=Lever Action Shotguns item.gun_maresleg_broken.name=Broken item.gun_minigun.name=Minigun +item.gun_minigun_lacunae.name=Lacunae item.gun_mirv.name=M42 Nuclear Catapult "Experimental MIRV" item.gun_mirv_ammo.name=Eightfold MIRV (LEGACY) item.gun_missile_launcher.name=Missile Launcher @@ -3078,6 +3096,7 @@ item.gun_uac_pistol.name=UAC .45 Pistol item.gun_uboinik.name=Uboinik item.gun_uboinik_ammo.name=12x70 Buckshot (LEGACY) item.gun_uzi.name=Uzi +item.gun_uzi_akimbo.name=Uzis item.gun_uzi_ammo.name=.22 LR Round (LEGACY) item.gun_uzi_saturnite.name=Saturnite Uzi item.gun_uzi_saturnite_silencer.name=Saturnite Uzi with Silencer @@ -4824,23 +4843,30 @@ rbmk.screen.rod=Control: %s rbmk.screen.temp=Temp: %s rbmk.screen.xenon=Xenon: %s +shape.barrelHeavy=Heavy Barrel +shape.barrelLight=Light Barrel shape.billet=Billet shape.blade=Blade shape.blades=Shredder Blades shape.block=Block shape.dust=Dust shape.dusttiny=Tiny Dust +shape.grip=Grip +shape.gunMechanism=Mechanism shape.hull_big=Big Shell shape.hull_small=Small Shell shape.ingot=Ingot shape.nugget=Nugget shape.quantum=Quantum shape.quart=Quarter Block +shape.receiverHeavy=Heavy Receiver +shape.receiverLight=Light Receiver shape.ntmpipe=Pipe shape.plate=Plate shape.plateTriple=Cast Plate shape.shell=Shell shape.stamp=Press Stamp +shape.stock=Stock shape.wireFine=Wires shape.wireDense=Dense Wire shape.wiresDense=Dense Wires @@ -5467,6 +5493,7 @@ tile.launch_table.name=Large Launch Pad tile.leaves_layer.name=Fallen Leaves tile.lox_barrel.name=LOX Barrel tile.machine_amgen.name=Ambience Radiation Generator +tile.machine_ammo_press.name=Ammo Press tile.machine_arc_furnace.name=Electric Arc Furnace tile.machine_arc_furnace_off.name=Arc Furnace tile.machine_arc_furnace_on.name=Arc Furnace diff --git a/src/main/resources/assets/hbm/models/bombs/ap_mine.obj b/src/main/resources/assets/hbm/models/bombs/ap_mine.obj new file mode 100644 index 000000000..b9762718c --- /dev/null +++ b/src/main/resources/assets/hbm/models/bombs/ap_mine.obj @@ -0,0 +1,749 @@ +# Blender v2.79 (sub 0) OBJ File: 'ap_mine.blend' +# www.blender.org +o Circle +v 0.000000 0.000000 -0.500000 +v -0.250000 0.000000 -0.433013 +v -0.433013 0.000000 -0.250000 +v -0.500000 0.000000 0.000000 +v -0.433013 0.000000 0.250000 +v -0.250000 0.000000 0.433013 +v -0.000000 0.000000 0.500000 +v 0.250000 0.000000 0.433013 +v 0.433013 0.000000 0.250000 +v 0.500000 0.000000 0.000000 +v 0.433013 0.000000 -0.250000 +v 0.250000 0.000000 -0.433013 +v -0.250000 0.250000 -0.433013 +v 0.000000 0.250000 -0.500000 +v -0.433013 0.250000 -0.250000 +v -0.500000 0.250000 0.000000 +v -0.433013 0.250000 0.250000 +v -0.250000 0.250000 0.433013 +v -0.000000 0.250000 0.500000 +v 0.250000 0.250000 0.433013 +v 0.433013 0.250000 0.250000 +v 0.500000 0.250000 0.000000 +v 0.433013 0.250000 -0.250000 +v 0.250000 0.250000 -0.433013 +v 0.000000 0.250000 -0.312500 +v -0.156250 0.250000 -0.270633 +v -0.270633 0.250000 -0.156250 +v -0.312500 0.250000 0.000000 +v -0.270633 0.250000 0.156250 +v -0.156250 0.250000 0.270633 +v -0.000000 0.250000 0.312500 +v 0.156250 0.250000 0.270633 +v 0.270633 0.250000 0.156250 +v 0.312500 0.250000 0.000000 +v 0.270633 0.250000 -0.156250 +v 0.156250 0.250000 -0.270633 +v 0.000000 0.375000 -0.250000 +v -0.125000 0.375000 -0.216506 +v -0.216506 0.375000 -0.125000 +v -0.250000 0.375000 0.000000 +v -0.216506 0.375000 0.125000 +v -0.125000 0.375000 0.216506 +v -0.000000 0.375000 0.250000 +v 0.125000 0.375000 0.216506 +v 0.216506 0.375000 0.125000 +v 0.250000 0.375000 0.000000 +v 0.216506 0.375000 -0.125000 +v 0.125000 0.375000 -0.216506 +v 0.031250 -0.062500 -0.250000 +v 0.031250 -0.062500 -0.562500 +v -0.031250 -0.062500 -0.250000 +v -0.031250 -0.062500 -0.562500 +v 0.031250 0.312500 -0.250000 +v 0.031250 0.312500 -0.562500 +v -0.031250 0.312500 -0.250000 +v -0.031250 0.312500 -0.562500 +v 0.250000 -0.062500 0.031250 +v 0.562500 -0.062500 0.031250 +v 0.250000 -0.062500 -0.031250 +v 0.562500 -0.062500 -0.031250 +v 0.250000 0.312500 0.031250 +v 0.562500 0.312500 0.031250 +v 0.250000 0.312500 -0.031250 +v 0.562500 0.312500 -0.031250 +v -0.562500 0.312500 0.031250 +v -0.250000 0.312500 0.031250 +v -0.562500 0.312500 -0.031250 +v -0.250000 0.312500 -0.031250 +v -0.562500 -0.062500 0.031250 +v -0.250000 -0.062500 0.031250 +v -0.562500 -0.062500 -0.031250 +v -0.250000 -0.062500 -0.031250 +v 0.031250 0.312500 0.562500 +v 0.031250 0.312500 0.250000 +v -0.031250 0.312500 0.562500 +v -0.031250 0.312500 0.250000 +v 0.031250 -0.062500 0.562500 +v 0.031250 -0.062500 0.250000 +v -0.031250 -0.062500 0.562500 +v -0.031250 -0.062500 0.250000 +v 0.187500 0.000000 -0.324759 +v 0.324760 0.000000 -0.187500 +v 0.375000 0.000000 0.000000 +v 0.324759 0.000000 0.187500 +v 0.187500 0.000000 0.324760 +v -0.000000 0.000000 0.375000 +v -0.187500 0.000000 0.324760 +v -0.324760 0.000000 0.187500 +v -0.375000 0.000000 0.000000 +v -0.324760 0.000000 -0.187500 +v -0.187500 0.000000 -0.324759 +v 0.000000 0.000000 -0.375000 +v 0.187500 -0.125000 -0.324759 +v 0.324760 -0.125000 -0.187500 +v 0.375000 -0.125000 0.000000 +v 0.324759 -0.125000 0.187500 +v 0.187500 -0.125000 0.324760 +v -0.000000 -0.125000 0.375000 +v -0.187500 -0.125000 0.324760 +v -0.324760 -0.125000 0.187500 +v -0.375000 -0.125000 0.000000 +v -0.324760 -0.125000 -0.187500 +v -0.187500 -0.125000 -0.324759 +v 0.000000 -0.125000 -0.375000 +v -0.097937 -0.062500 -0.232131 +v -0.254187 -0.062500 -0.502764 +v -0.152063 -0.062500 -0.200881 +v -0.308313 -0.062500 -0.471514 +v -0.097937 0.312500 -0.232131 +v -0.254187 0.312500 -0.502764 +v -0.152063 0.312500 -0.200881 +v -0.308313 0.312500 -0.471514 +v 0.232131 -0.062500 -0.097937 +v 0.502764 -0.062500 -0.254187 +v 0.200881 -0.062500 -0.152063 +v 0.471514 -0.062500 -0.308313 +v 0.232131 0.312500 -0.097937 +v 0.502764 0.312500 -0.254187 +v 0.200881 0.312500 -0.152063 +v 0.471514 0.312500 -0.308313 +v -0.471514 0.312500 0.308313 +v -0.200881 0.312500 0.152063 +v -0.502764 0.312500 0.254187 +v -0.232131 0.312500 0.097937 +v -0.471514 -0.062500 0.308313 +v -0.200881 -0.062500 0.152063 +v -0.502764 -0.062500 0.254187 +v -0.232131 -0.062500 0.097937 +v 0.308313 0.312500 0.471514 +v 0.152063 0.312500 0.200881 +v 0.254187 0.312500 0.502764 +v 0.097937 0.312500 0.232131 +v 0.308313 -0.062500 0.471514 +v 0.152063 -0.062500 0.200881 +v 0.254187 -0.062500 0.502764 +v 0.097937 -0.062500 0.232131 +v -0.200881 -0.062500 -0.152063 +v -0.471514 -0.062500 -0.308313 +v -0.232131 -0.062500 -0.097937 +v -0.502764 -0.062500 -0.254187 +v -0.200881 0.312500 -0.152063 +v -0.471514 0.312500 -0.308313 +v -0.232131 0.312500 -0.097937 +v -0.502764 0.312500 -0.254187 +v 0.152063 -0.062500 -0.200881 +v 0.308313 -0.062500 -0.471514 +v 0.097937 -0.062500 -0.232131 +v 0.254187 -0.062500 -0.502764 +v 0.152063 0.312500 -0.200881 +v 0.308313 0.312500 -0.471514 +v 0.097937 0.312500 -0.232131 +v 0.254187 0.312500 -0.502764 +v -0.254187 0.312500 0.502764 +v -0.097937 0.312500 0.232131 +v -0.308313 0.312500 0.471514 +v -0.152063 0.312500 0.200881 +v -0.254187 -0.062500 0.502764 +v -0.097937 -0.062500 0.232131 +v -0.308313 -0.062500 0.471514 +v -0.152063 -0.062500 0.200881 +v 0.502764 0.312500 0.254187 +v 0.232131 0.312500 0.097937 +v 0.471514 0.312500 0.308313 +v 0.200881 0.312500 0.152063 +v 0.502764 -0.062500 0.254187 +v 0.232131 -0.062500 0.097937 +v 0.471514 -0.062500 0.308313 +v 0.200881 -0.062500 0.152063 +vt 0.166667 0.080000 +vt 0.250000 0.160000 +vt 0.166667 0.160000 +vt 0.291806 0.541901 +vt 0.374860 0.541901 +vt 0.416387 0.680000 +vt 0.500000 0.320000 +vt 0.562500 0.440000 +vt 0.520833 0.440000 +vt 0.583333 0.320000 +vt 0.645833 0.440000 +vt 0.604167 0.440000 +vt 0.750000 0.320000 +vt 0.687500 0.440000 +vt 0.666667 0.320000 +vt 0.812500 0.440000 +vt 0.770833 0.440000 +vt 0.916667 0.320000 +vt 0.854167 0.440000 +vt 0.833333 0.320000 +vt 1.000000 0.320000 +vt 0.937500 0.440000 +vt 0.083333 0.320000 +vt 0.020833 0.440000 +vt -0.000000 0.320000 +vt 0.166667 0.320000 +vt 0.104167 0.440000 +vt 0.250000 0.320000 +vt 0.187500 0.440000 +vt 0.333333 0.320000 +vt 0.270833 0.440000 +vt 0.395833 0.440000 +vt 0.354167 0.440000 +vt 0.416667 0.320000 +vt 0.479167 0.440000 +vt 0.437500 0.440000 +vt 0.416667 0.520000 +vt 0.520833 0.560000 +vt 0.416667 0.560000 +vt 0.520833 0.800000 +vt 0.416667 0.840000 +vt 0.416667 0.800000 +vt 0.541667 0.560000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.541667 0.560000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.416667 0.560000 +vt 0.520833 0.800000 +vt 0.416667 0.520000 +vt 0.416667 0.840000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.416667 0.560000 +vt 0.520833 0.520000 +vt 0.541667 0.560000 +vt 0.520833 0.800000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.416667 0.560000 +vt 0.416667 0.840000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.520833 0.520000 +vt 0.541667 0.560000 +vt 0.520833 0.800000 +vt 0.416667 0.840000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.000000 0.080000 +vt 0.083333 0.160000 +vt -0.000000 0.160000 +vt 0.083333 0.080000 +vt 0.916667 0.080000 +vt 1.000000 0.160000 +vt 0.916667 0.160000 +vt 0.833333 0.080000 +vt 0.833333 0.160000 +vt 0.750000 0.160000 +vt 0.812500 0.080000 +vt 0.666667 0.080000 +vt 0.666667 0.160000 +vt 0.583333 0.160000 +vt 0.645833 0.080000 +vt 0.500000 0.160000 +vt 0.562500 0.080000 +vt 0.416667 0.160000 +vt 0.479167 0.080000 +vt 0.333333 0.160000 +vt 0.395833 0.080000 +vt 0.250000 0.080000 +vt 0.187513 0.552110 +vt 0.187513 0.967890 +vt -0.000027 0.760000 +vt 0.416667 0.560000 +vt 0.520833 0.520000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.520833 0.840000 +vt 0.416667 0.840000 +vt 0.541667 0.560000 +vt 0.520833 0.800000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.541667 0.560000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.416667 0.560000 +vt 0.520833 0.800000 +vt 0.416667 0.520000 +vt 0.416667 0.840000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.416667 0.560000 +vt 0.520833 0.520000 +vt 0.541667 0.560000 +vt 0.520833 0.800000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.416667 0.560000 +vt 0.520833 0.840000 +vt 0.416667 0.840000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.416667 0.520000 +vt 0.541667 0.560000 +vt 0.520833 0.800000 +vt 0.416667 0.840000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.416667 0.560000 +vt 0.520833 0.520000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.520833 0.840000 +vt 0.416667 0.840000 +vt 0.541667 0.560000 +vt 0.520833 0.800000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.541667 0.560000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.416667 0.560000 +vt 0.520833 0.800000 +vt 0.416667 0.520000 +vt 0.416667 0.840000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.416667 0.560000 +vt 0.520833 0.520000 +vt 0.541667 0.560000 +vt 0.520833 0.800000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.416667 0.560000 +vt 0.520833 0.840000 +vt 0.416667 0.840000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.520833 0.520000 +vt 0.541667 0.560000 +vt 0.520833 0.800000 +vt 0.416667 0.840000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.229167 0.080000 +vt 0.405260 0.759732 +vt 0.374860 0.818099 +vt 0.333333 0.839464 +vt 0.291806 0.818099 +vt 0.261407 0.759732 +vt 0.250279 0.680000 +vt 0.261407 0.600268 +vt 0.333333 0.520537 +vt 0.405260 0.600268 +vt 0.729167 0.440000 +vt 0.895833 0.440000 +vt 0.979167 0.440000 +vt 0.062500 0.440000 +vt 0.145833 0.440000 +vt 0.229167 0.440000 +vt 0.312500 0.440000 +vt 0.520833 0.520000 +vt 0.520833 0.840000 +vt 0.645833 0.800000 +vt 0.645833 0.800000 +vt 0.520833 0.520000 +vt 0.520833 0.840000 +vt 0.416667 0.520000 +vt 0.520833 0.840000 +vt 0.645833 0.800000 +vt 0.416667 0.520000 +vt 0.520833 0.840000 +vt 0.645833 0.800000 +vt 0.062500 0.080000 +vt 0.145833 0.080000 +vt 0.979167 0.080000 +vt 0.895833 0.080000 +vt 0.750000 0.080000 +vt 0.729167 0.080000 +vt 0.583333 0.080000 +vt 0.500000 0.080000 +vt 0.416667 0.080000 +vt 0.333333 0.080000 +vt 0.312500 0.080000 +vt 0.016724 0.639974 +vt 0.062487 0.552109 +vt 0.125000 0.519949 +vt 0.233276 0.639974 +vt 0.250027 0.760000 +vt 0.233276 0.880025 +vt 0.125000 1.000051 +vt 0.062487 0.967890 +vt 0.016724 0.880025 +vt 0.416667 0.520000 +vt 0.645833 0.800000 +vt 0.645833 0.800000 +vt 0.520833 0.520000 +vt 0.520833 0.840000 +vt 0.416667 0.520000 +vt 0.645833 0.800000 +vt 0.520833 0.520000 +vt 0.520833 0.840000 +vt 0.645833 0.800000 +vt 0.416667 0.520000 +vt 0.645833 0.800000 +vt 0.645833 0.800000 +vt 0.520833 0.520000 +vt 0.520833 0.840000 +vt 0.416667 0.520000 +vt 0.645833 0.800000 +vt 0.416667 0.520000 +vt 0.520833 0.840000 +vt 0.645833 0.800000 +vt 0.479167 0.520000 +vt 0.437500 0.520000 +vt 0.520833 0.520000 +vt 0.604167 0.520000 +vt 0.687500 0.520000 +vt 0.770833 0.520000 +vt 0.854167 0.520000 +vt 0.937500 0.520000 +vt 0.020833 0.520000 +vt 0.104167 0.520000 +vt 0.187500 0.520000 +vt 0.270833 0.520000 +vt 0.354167 0.520000 +vt 0.062500 -0.000000 +vt 0.645833 -0.000000 +vt 0.895833 -0.000000 +vt 0.562500 -0.000000 +vt 0.979167 -0.000000 +vt 0.479167 -0.000000 +vt 0.395833 -0.000000 +vt 0.312500 -0.000000 +vt 0.229167 -0.000000 +vt 0.812500 -0.000000 +vt 0.729167 -0.000000 +vt 0.145833 -0.000000 +vt 0.562500 0.520000 +vt 0.645833 0.520000 +vt 0.729167 0.520000 +vt 0.812500 0.520000 +vt 0.895833 0.520000 +vt 0.979167 0.520000 +vt 0.062500 0.520000 +vt 0.145833 0.520000 +vt 0.229167 0.520000 +vt 0.312500 0.520000 +vt 0.395833 0.520000 +vt 0.000000 -0.000000 +vt 0.583333 -0.000000 +vt 0.833333 -0.000000 +vt 0.500000 -0.000000 +vt 0.916667 -0.000000 +vt 0.416667 -0.000000 +vt 0.333333 -0.000000 +vt 0.250000 -0.000000 +vt 0.166667 -0.000000 +vt 0.750000 -0.000000 +vt 0.666667 -0.000000 +vt 0.083333 -0.000000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 -0.0000 +vn 0.0000 0.0000 1.0000 +vn -0.5000 0.0000 -0.8660 +vn -0.8660 0.0000 0.5000 +vn 0.8660 0.0000 -0.5000 +vn 0.5000 0.0000 0.8660 +vn -0.8660 0.0000 -0.5000 +vn -0.5000 0.0000 0.8660 +vn 0.5000 0.0000 -0.8660 +vn 0.8660 0.0000 0.5000 +vn 0.7746 0.4472 0.4472 +vn 0.8944 0.4472 0.0000 +vn 0.7746 0.4472 -0.4472 +vn 0.4472 0.4472 -0.7746 +vn 0.0000 0.4472 -0.8944 +vn -0.4472 0.4472 -0.7746 +vn -0.7746 0.4472 -0.4472 +vn -0.8944 0.4472 0.0000 +vn -0.7746 0.4472 0.4472 +vn -0.4472 0.4472 0.7746 +vn -0.0000 0.4472 0.8944 +vn 0.4472 0.4472 0.7746 +s off +f 87/1/1 7/2/1 6/3/1 +f 45/4/2 47/5/2 37/6/2 +f 22/7/2 35/8/2 34/9/2 +f 23/10/2 36/11/2 35/12/2 +f 14/13/2 36/14/2 24/15/2 +f 14/13/2 26/16/2 25/17/2 +f 15/18/2 26/19/2 13/20/2 +f 16/21/2 27/22/2 15/18/2 +f 17/23/2 28/24/2 16/25/2 +f 18/26/2 29/27/2 17/23/2 +f 19/28/2 30/29/2 18/26/2 +f 20/30/2 31/31/2 19/28/2 +f 20/30/2 33/32/2 32/33/2 +f 21/34/2 34/35/2 33/36/2 +f 51/37/1 50/38/1 49/39/1 +f 54/40/2 55/41/2 53/42/2 +f 52/43/3 54/40/3 50/38/3 +f 51/44/4 56/45/4 52/43/4 +f 50/38/5 53/42/5 49/39/5 +f 59/46/3 64/47/3 60/48/3 +f 58/49/6 61/50/6 57/51/6 +f 60/48/5 62/52/5 58/49/5 +f 59/53/1 58/49/1 57/51/1 +f 62/52/2 63/54/2 61/50/2 +f 71/55/3 68/56/3 72/57/3 +f 72/57/1 69/58/1 71/55/1 +f 69/59/4 67/60/4 71/55/4 +f 79/61/4 76/62/4 80/63/4 +f 67/60/2 66/64/2 68/56/2 +f 70/65/6 65/66/6 69/59/6 +f 80/63/1 77/67/1 79/61/1 +f 77/68/6 75/69/6 79/61/6 +f 75/69/2 74/70/2 76/62/2 +f 78/71/5 73/72/5 77/68/5 +f 89/73/1 5/74/1 4/75/1 +f 88/76/1 6/3/1 5/74/1 +f 90/77/1 4/78/1 3/79/1 +f 91/80/1 3/79/1 2/81/1 +f 1/82/1 91/83/1 2/81/1 +f 81/84/1 1/82/1 12/85/1 +f 11/86/1 81/87/1 12/85/1 +f 10/88/1 82/89/1 11/86/1 +f 9/90/1 83/91/1 10/88/1 +f 8/92/1 84/93/1 9/90/1 +f 86/94/1 8/92/1 7/2/1 +f 96/95/1 100/96/1 104/97/1 +f 105/98/1 108/99/1 106/100/1 +f 109/101/2 112/102/2 111/103/2 +f 108/104/7 110/105/7 106/100/7 +f 107/106/8 112/107/8 108/104/8 +f 106/100/9 109/101/9 105/98/9 +f 115/108/7 120/109/7 116/110/7 +f 114/111/10 117/112/10 113/113/10 +f 116/110/9 118/114/9 114/111/9 +f 115/115/1 114/111/1 113/113/1 +f 118/114/2 119/116/2 117/112/2 +f 127/117/7 124/118/7 128/119/7 +f 128/119/1 125/120/1 127/117/1 +f 125/121/8 123/122/8 127/117/8 +f 135/123/8 132/124/8 136/125/8 +f 124/118/2 121/126/2 122/127/2 +f 126/128/10 121/129/10 125/121/10 +f 134/130/1 135/123/1 136/125/1 +f 133/131/10 131/132/10 135/123/10 +f 131/132/2 130/133/2 132/124/2 +f 134/134/9 129/135/9 133/131/9 +f 137/136/1 140/137/1 138/138/1 +f 141/139/2 144/140/2 143/141/2 +f 140/142/11 142/143/11 138/138/11 +f 139/144/12 144/145/12 140/142/12 +f 138/138/13 141/139/13 137/136/13 +f 147/146/11 152/147/11 148/148/11 +f 146/149/14 149/150/14 145/151/14 +f 148/148/13 150/152/13 146/149/13 +f 147/153/1 146/149/1 145/151/1 +f 150/152/2 151/154/2 149/150/2 +f 159/155/11 156/156/11 160/157/11 +f 160/157/1 157/158/1 159/155/1 +f 157/159/12 155/160/12 159/155/12 +f 167/161/12 164/162/12 168/163/12 +f 156/156/2 153/164/2 154/165/2 +f 158/166/14 153/167/14 157/159/14 +f 168/163/1 165/168/1 167/161/1 +f 165/169/14 163/170/14 167/161/14 +f 163/170/2 162/171/2 164/162/2 +f 166/172/13 161/173/13 165/169/13 +f 87/1/1 86/174/1 7/2/1 +f 37/6/2 38/175/2 39/176/2 +f 39/176/2 40/177/2 41/178/2 +f 41/178/2 42/179/2 43/180/2 +f 43/180/2 44/181/2 45/4/2 +f 45/4/2 46/182/2 47/5/2 +f 47/5/2 48/183/2 37/6/2 +f 37/6/2 39/176/2 41/178/2 +f 41/178/2 43/180/2 37/6/2 +f 43/180/2 45/4/2 37/6/2 +f 22/7/2 23/10/2 35/8/2 +f 23/10/2 24/15/2 36/11/2 +f 14/13/2 25/184/2 36/14/2 +f 14/13/2 13/20/2 26/16/2 +f 15/18/2 27/185/2 26/19/2 +f 16/21/2 28/186/2 27/22/2 +f 17/23/2 29/187/2 28/24/2 +f 18/26/2 30/188/2 29/27/2 +f 19/28/2 31/189/2 30/29/2 +f 20/30/2 32/190/2 31/31/2 +f 20/30/2 21/34/2 33/32/2 +f 21/34/2 22/7/2 34/35/2 +f 51/37/1 52/191/1 50/38/1 +f 54/40/2 56/192/2 55/41/2 +f 52/43/3 56/45/3 54/40/3 +f 51/44/4 55/193/4 56/45/4 +f 50/38/5 54/40/5 53/42/5 +f 59/46/3 63/194/3 64/47/3 +f 58/49/6 62/52/6 61/50/6 +f 60/48/5 64/47/5 62/52/5 +f 59/53/1 60/195/1 58/49/1 +f 62/52/2 64/196/2 63/54/2 +f 71/55/3 67/60/3 68/56/3 +f 72/57/1 70/197/1 69/58/1 +f 69/59/4 65/66/4 67/60/4 +f 79/61/4 75/69/4 76/62/4 +f 67/60/2 65/198/2 66/64/2 +f 70/65/6 66/199/6 65/66/6 +f 80/63/1 78/200/1 77/67/1 +f 77/68/6 73/72/6 75/69/6 +f 75/69/2 73/201/2 74/70/2 +f 78/71/5 74/202/5 73/72/5 +f 89/73/1 88/203/1 5/74/1 +f 88/76/1 87/204/1 6/3/1 +f 90/77/1 89/205/1 4/78/1 +f 91/80/1 90/206/1 3/79/1 +f 1/82/1 92/207/1 91/83/1 +f 81/84/1 92/208/1 1/82/1 +f 11/86/1 82/209/1 81/87/1 +f 10/88/1 83/210/1 82/89/1 +f 9/90/1 84/211/1 83/91/1 +f 8/92/1 85/212/1 84/93/1 +f 86/94/1 85/213/1 8/92/1 +f 104/97/1 93/214/1 94/215/1 +f 94/215/1 95/216/1 96/95/1 +f 96/95/1 97/217/1 100/96/1 +f 97/217/1 98/218/1 100/96/1 +f 98/218/1 99/219/1 100/96/1 +f 100/96/1 101/220/1 102/221/1 +f 102/221/1 103/222/1 104/97/1 +f 104/97/1 94/215/1 96/95/1 +f 100/96/1 102/221/1 104/97/1 +f 105/98/1 107/223/1 108/99/1 +f 109/101/2 110/105/2 112/102/2 +f 108/104/7 112/107/7 110/105/7 +f 107/106/8 111/224/8 112/107/8 +f 106/100/9 110/105/9 109/101/9 +f 115/108/7 119/225/7 120/109/7 +f 114/111/10 118/114/10 117/112/10 +f 116/110/9 120/109/9 118/114/9 +f 115/115/1 116/226/1 114/111/1 +f 118/114/2 120/227/2 119/116/2 +f 127/117/7 123/122/7 124/118/7 +f 128/119/1 126/228/1 125/120/1 +f 125/121/8 121/129/8 123/122/8 +f 135/123/8 131/132/8 132/124/8 +f 124/118/2 123/122/2 121/126/2 +f 126/128/10 122/229/10 121/129/10 +f 134/130/1 133/230/1 135/123/1 +f 133/131/10 129/135/10 131/132/10 +f 131/132/2 129/231/2 130/133/2 +f 134/134/9 130/232/9 129/135/9 +f 137/136/1 139/233/1 140/137/1 +f 141/139/2 142/143/2 144/140/2 +f 140/142/11 144/145/11 142/143/11 +f 139/144/12 143/234/12 144/145/12 +f 138/138/13 142/143/13 141/139/13 +f 147/146/11 151/235/11 152/147/11 +f 146/149/14 150/152/14 149/150/14 +f 148/148/13 152/147/13 150/152/13 +f 147/153/1 148/236/1 146/149/1 +f 150/152/2 152/237/2 151/154/2 +f 159/155/11 155/160/11 156/156/11 +f 160/157/1 158/238/1 157/158/1 +f 157/159/12 153/167/12 155/160/12 +f 167/161/12 163/170/12 164/162/12 +f 156/156/2 155/160/2 153/164/2 +f 158/166/14 154/239/14 153/167/14 +f 168/163/1 166/240/1 165/168/1 +f 165/169/14 161/173/14 163/170/14 +f 163/170/2 161/241/2 162/171/2 +f 166/172/13 162/242/13 161/173/13 +s 1 +f 9/90/14 20/30/10 8/92/10 +f 6/3/12 17/23/8 5/74/8 +f 1/82/3 24/15/13 12/85/13 +f 3/79/11 13/20/7 2/81/7 +f 10/88/5 21/34/14 9/90/14 +f 7/2/6 18/26/12 6/3/12 +f 4/78/4 15/18/11 3/79/11 +f 11/86/9 22/7/5 10/88/5 +f 8/92/10 19/28/6 7/2/6 +f 5/74/8 16/25/4 4/75/4 +f 12/85/13 23/10/9 11/86/9 +f 2/81/7 14/13/3 1/82/3 +f 33/36/15 46/243/16 45/244/15 +f 35/8/17 46/245/16 34/9/16 +f 36/11/18 47/246/17 35/12/17 +f 25/184/19 48/247/18 36/14/18 +f 26/16/20 37/248/19 25/17/19 +f 27/185/21 38/249/20 26/19/20 +f 28/186/22 39/250/21 27/22/21 +f 29/187/23 40/251/22 28/24/22 +f 30/188/24 41/252/23 29/27/23 +f 31/189/25 42/253/24 30/29/24 +f 32/190/26 43/254/25 31/31/25 +f 33/32/15 44/255/26 32/33/26 +f 89/73/4 100/256/8 88/203/8 +f 82/209/9 93/257/13 81/87/13 +f 91/80/7 102/258/11 90/206/11 +f 83/210/5 94/259/9 82/89/9 +f 90/77/11 101/260/4 89/205/4 +f 84/211/14 95/261/5 83/91/5 +f 85/212/10 96/262/14 84/93/14 +f 86/94/6 97/263/10 85/213/10 +f 87/1/12 98/264/6 86/174/6 +f 92/207/3 103/265/7 91/83/7 +f 81/84/13 104/266/3 92/208/3 +f 88/76/8 99/267/12 87/204/12 +f 9/90/14 21/34/14 20/30/10 +f 6/3/12 18/26/12 17/23/8 +f 1/82/3 14/13/3 24/15/13 +f 3/79/11 15/18/11 13/20/7 +f 10/88/5 22/7/5 21/34/14 +f 7/2/6 19/28/6 18/26/12 +f 4/78/4 16/21/4 15/18/11 +f 11/86/9 23/10/9 22/7/5 +f 8/92/10 20/30/10 19/28/6 +f 5/74/8 17/23/8 16/25/4 +f 12/85/13 24/15/13 23/10/9 +f 2/81/7 13/20/7 14/13/3 +f 33/36/15 34/35/16 46/243/16 +f 35/8/17 47/268/17 46/245/16 +f 36/11/18 48/269/18 47/246/17 +f 25/184/19 37/270/19 48/247/18 +f 26/16/20 38/271/20 37/248/19 +f 27/185/21 39/272/21 38/249/20 +f 28/186/22 40/273/22 39/250/21 +f 29/187/23 41/274/23 40/251/22 +f 30/188/24 42/275/24 41/252/23 +f 31/189/25 43/276/25 42/253/24 +f 32/190/26 44/277/26 43/254/25 +f 33/32/15 45/278/15 44/255/26 +f 89/73/4 101/279/4 100/256/8 +f 82/209/9 94/280/9 93/257/13 +f 91/80/7 103/281/7 102/258/11 +f 83/210/5 95/282/5 94/259/9 +f 90/77/11 102/283/11 101/260/4 +f 84/211/14 96/284/14 95/261/5 +f 85/212/10 97/285/10 96/262/14 +f 86/94/6 98/286/6 97/263/10 +f 87/1/12 99/287/12 98/264/6 +f 92/207/3 104/288/3 103/265/7 +f 81/84/13 93/289/13 104/266/3 +f 88/76/8 100/290/8 99/267/12 diff --git a/src/main/resources/assets/hbm/models/effect/skeleton.obj b/src/main/resources/assets/hbm/models/effect/skeleton.obj new file mode 100644 index 000000000..6e5c28f3c --- /dev/null +++ b/src/main/resources/assets/hbm/models/effect/skeleton.obj @@ -0,0 +1,294 @@ +# Blender v2.79 (sub 0) OBJ File: '' +# www.blender.org +o SkullVillager +v -0.250000 0.312500 0.250000 +v -0.250000 -0.312500 -0.250000 +v -0.250000 -0.312500 0.250000 +v -0.250000 0.312500 -0.250000 +v 0.250000 -0.312500 -0.250000 +v 0.250000 0.312500 -0.250000 +v 0.250000 -0.312500 0.250000 +v 0.250000 0.312500 0.250000 +v -0.250000 -0.312500 -0.250000 +v -0.250000 0.312500 0.250000 +v -0.250000 -0.312500 0.250000 +v 0.250000 -0.312500 -0.250000 +v -0.250000 0.312500 -0.250000 +v 0.250000 -0.312500 0.250000 +v 0.250000 0.312500 -0.250000 +v 0.250000 0.312500 0.250000 +vt 0.500000 0.875000 +vt 0.375000 0.718750 +vt 0.500000 0.718750 +vt 0.375000 0.875000 +vt 0.250000 0.718750 +vt 0.250000 0.875000 +vt 0.125000 0.718750 +vt 0.125000 0.875000 +vt 0.000000 0.718750 +vt 0.250000 0.875000 +vt 0.375000 1.000000 +vt 0.250000 1.000000 +vt 0.250000 1.000000 +vt 0.375000 0.718750 +vt 0.500000 0.875000 +vt 0.500000 0.718750 +vt 0.250000 0.718750 +vt 0.375000 0.875000 +vt 0.125000 0.718750 +vt 0.250000 0.875000 +vt 0.000000 0.718750 +vt 0.125000 0.875000 +vt 0.375000 1.000000 +vt 0.250000 0.875000 +vt 0.250000 1.000000 +vt 0.250000 1.000000 +vt 0.000000 0.875000 +vt 0.375000 0.875000 +vt 0.125000 1.000000 +vt 0.000000 0.875000 +vt 0.375000 0.875000 +vt 0.125000 1.000000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s 1 +f 1/1/1 2/2/1 3/3/1 +f 4/4/2 5/5/2 2/2/2 +f 6/6/3 7/7/3 5/5/3 +f 8/8/4 3/9/4 7/7/4 +f 5/10/5 3/11/5 2/12/5 +f 4/13/6 8/8/6 6/6/6 +f 9/14/3 10/15/3 11/16/3 +f 12/17/4 13/18/4 9/14/4 +f 14/19/1 15/20/1 12/17/1 +f 11/21/2 16/22/2 14/19/2 +f 11/23/6 12/24/6 9/25/6 +f 16/22/5 13/26/5 15/20/5 +f 1/1/1 4/4/1 2/2/1 +f 4/4/2 6/6/2 5/5/2 +f 6/6/3 8/8/3 7/7/3 +f 8/8/4 1/27/4 3/9/4 +f 5/10/5 7/28/5 3/11/5 +f 4/13/6 1/29/6 8/8/6 +f 9/14/3 13/18/3 10/15/3 +f 12/17/4 15/20/4 13/18/4 +f 14/19/1 16/22/1 15/20/1 +f 11/21/2 10/30/2 16/22/2 +f 11/23/6 14/31/6 12/24/6 +f 16/22/5 10/32/5 13/26/5 +o Limb +v -0.062500 0.375000 0.062500 +v -0.062500 -0.375000 -0.062500 +v -0.062500 -0.375000 0.062500 +v -0.062500 0.375000 -0.062500 +v 0.062500 -0.375000 -0.062500 +v 0.062500 0.375000 -0.062500 +v 0.062500 -0.375000 0.062500 +v 0.062500 0.375000 0.062500 +vt 0.125000 0.437500 +vt 0.093750 0.062500 +vt 0.125000 0.062500 +vt 0.093750 0.437500 +vt 0.062500 0.062500 +vt 0.062500 0.437500 +vt 0.031250 0.062500 +vt 0.031250 0.437500 +vt 0.000000 0.062500 +vt 0.062500 0.437500 +vt 0.093750 0.500000 +vt 0.062500 0.500000 +vt 0.062500 0.500000 +vt -0.000000 0.437500 +vt 0.093750 0.437500 +vt 0.031250 0.500000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s 1 +f 17/33/7 18/34/7 19/35/7 +f 20/36/8 21/37/8 18/34/8 +f 22/38/9 23/39/9 21/37/9 +f 24/40/10 19/41/10 23/39/10 +f 21/42/11 19/43/11 18/44/11 +f 20/45/12 24/40/12 22/38/12 +f 17/33/7 20/36/7 18/34/7 +f 20/36/8 22/38/8 21/37/8 +f 22/38/9 24/40/9 23/39/9 +f 24/40/10 17/46/10 19/41/10 +f 21/42/11 23/47/11 19/43/11 +f 20/45/12 17/48/12 24/40/12 +o Skull +v -0.250000 0.250000 0.250000 +v -0.250000 -0.250000 -0.250000 +v -0.250000 -0.250000 0.250000 +v -0.250000 0.250000 -0.250000 +v 0.250000 -0.250000 -0.250000 +v 0.250000 0.250000 -0.250000 +v 0.250000 -0.250000 0.250000 +v 0.250000 0.250000 0.250000 +v -0.250000 -0.250000 -0.250000 +v -0.250000 0.250000 0.250000 +v -0.250000 -0.250000 0.250000 +v 0.250000 -0.250000 -0.250000 +v -0.250000 0.250000 -0.250000 +v 0.250000 -0.250000 0.250000 +v 0.250000 0.250000 -0.250000 +v 0.250000 0.250000 0.250000 +vt 0.500000 0.750000 +vt 0.375000 0.500000 +vt 0.500000 0.500000 +vt 0.375000 0.750000 +vt 0.250000 0.500000 +vt 0.250000 0.750000 +vt 0.125000 0.500000 +vt 0.125000 0.750000 +vt -0.000000 0.500000 +vt 0.250000 0.750000 +vt 0.375000 1.000000 +vt 0.250000 1.000000 +vt 0.250000 1.000000 +vt 0.375000 0.500000 +vt 0.500000 0.750000 +vt 0.500000 0.500000 +vt 0.250000 0.500000 +vt 0.375000 0.750000 +vt 0.125000 0.500000 +vt 0.250000 0.750000 +vt -0.000000 0.500000 +vt 0.125000 0.750000 +vt 0.375000 1.000000 +vt 0.250000 0.750000 +vt 0.250000 1.000000 +vt 0.250000 1.000000 +vt -0.000000 0.750000 +vt 0.375000 0.750000 +vt 0.125000 1.000000 +vt -0.000000 0.750000 +vt 0.375000 0.750000 +vt 0.125000 1.000000 +vn -1.0000 -0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 -1.0000 -0.0000 +vn 0.0000 1.0000 0.0000 +s 1 +f 25/49/13 26/50/13 27/51/13 +f 28/52/14 29/53/14 26/50/14 +f 30/54/15 31/55/15 29/53/15 +f 32/56/16 27/57/16 31/55/16 +f 29/58/17 27/59/17 26/60/17 +f 28/61/18 32/56/18 30/54/18 +f 33/62/15 34/63/15 35/64/15 +f 36/65/16 37/66/16 33/62/16 +f 38/67/13 39/68/13 36/65/13 +f 35/69/14 40/70/14 38/67/14 +f 35/71/18 36/72/18 33/73/18 +f 40/70/17 37/74/17 39/68/17 +f 25/49/13 28/52/13 26/50/13 +f 28/52/14 30/54/14 29/53/14 +f 30/54/15 32/56/15 31/55/15 +f 32/56/16 25/75/16 27/57/16 +f 29/58/17 31/76/17 27/59/17 +f 28/61/18 25/77/18 32/56/18 +f 33/62/15 37/66/15 34/63/15 +f 36/65/16 39/68/16 37/66/16 +f 38/67/13 40/70/13 39/68/13 +f 35/69/14 34/78/14 40/70/14 +f 35/71/18 38/79/18 36/72/18 +f 40/70/17 34/80/17 37/74/17 +o Torso +v 0.125000 -0.375000 -0.250000 +v 0.125000 0.375000 0.250000 +v 0.125000 -0.375000 0.250000 +v -0.125000 -0.375000 -0.250000 +v 0.125000 0.375000 -0.250000 +v -0.125000 -0.375000 0.250000 +v -0.125000 0.375000 -0.250000 +v -0.125000 0.375000 0.250000 +v 0.125000 0.375000 0.250000 +v 0.125000 -0.375000 -0.250000 +v 0.125000 -0.375000 0.250000 +v 0.125000 0.375000 -0.250000 +v -0.125000 -0.375000 -0.250000 +v -0.125000 0.375000 -0.250000 +v -0.125000 -0.375000 0.250000 +v -0.125000 0.375000 0.250000 +vt 0.312500 0.000000 +vt 0.437500 0.375000 +vt 0.437500 0.000000 +vt 0.500000 0.000000 +vt 0.437500 0.375000 +vt 0.437500 0.000000 +vt 0.625000 0.000000 +vt 0.500000 0.375000 +vt 0.312500 0.000000 +vt 0.250000 0.375000 +vt 0.250000 0.000000 +vt 0.437500 0.500000 +vt 0.562500 0.375000 +vt 0.562500 0.500000 +vt 0.312500 0.500000 +vt 0.437500 0.500000 +vt 0.437500 0.375000 +vt 0.312500 0.000000 +vt 0.437500 0.000000 +vt 0.437500 0.375000 +vt 0.500000 0.000000 +vt 0.437500 0.000000 +vt 0.500000 0.375000 +vt 0.625000 0.000000 +vt 0.250000 0.375000 +vt 0.312500 0.000000 +vt 0.250000 0.000000 +vt 0.562500 0.375000 +vt 0.437500 0.500000 +vt 0.562500 0.500000 +vt 0.312500 0.500000 +vt 0.437500 0.500000 +vt 0.312500 0.375000 +vt 0.625000 0.375000 +vt 0.312500 0.375000 +vt 0.437500 0.375000 +vt 0.312500 0.375000 +vt 0.625000 0.375000 +vt 0.312500 0.375000 +vt 0.437500 0.375000 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 -0.0000 0.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s 1 +f 41/81/19 42/82/19 43/83/19 +f 44/84/20 45/85/20 41/86/20 +f 46/87/21 47/88/21 44/84/21 +f 43/89/22 48/90/22 46/91/22 +f 43/92/23 44/93/23 41/94/23 +f 48/95/24 45/85/24 47/96/24 +f 49/97/21 50/98/21 51/99/21 +f 52/100/22 53/101/22 50/102/22 +f 54/103/19 55/104/19 53/101/19 +f 56/105/20 51/106/20 55/107/20 +f 53/108/24 51/109/24 50/110/24 +f 52/100/23 56/111/23 54/112/23 +f 41/81/19 45/113/19 42/82/19 +f 44/84/20 47/88/20 45/85/20 +f 46/87/21 48/114/21 47/88/21 +f 43/89/22 42/115/22 48/90/22 +f 43/92/23 46/116/23 44/93/23 +f 48/95/24 42/115/24 45/85/24 +f 49/97/21 52/117/21 50/98/21 +f 52/100/22 54/103/22 53/101/22 +f 54/103/19 56/118/19 55/104/19 +f 56/105/20 49/119/20 51/106/20 +f 53/108/24 55/120/24 51/109/24 +f 52/100/23 49/119/23 56/111/23 diff --git a/src/main/resources/assets/hbm/models/machines/ammo_press.obj b/src/main/resources/assets/hbm/models/machines/ammo_press.obj new file mode 100644 index 000000000..b3a868e84 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/ammo_press.obj @@ -0,0 +1,2582 @@ +# Blender v2.79 (sub 0) OBJ File: 'ammo_press.blend' +# www.blender.org +o Press +v -0.250000 1.875000 -0.750000 +v -0.250000 1.875000 0.750000 +v 0.250000 1.875000 0.750000 +v 0.250000 1.875000 -0.750000 +v -0.250000 1.375000 -0.750000 +v -0.250000 1.375000 0.750000 +v 0.250000 1.375000 0.750000 +v 0.250000 1.375000 -0.750000 +vt 0.508772 0.857143 +vt 0.719298 0.761905 +vt 0.719298 0.857143 +vt 0.719298 0.666667 +vt 0.508772 0.761905 +vt 0.508772 0.666667 +vt 0.719298 0.571429 +vt 0.508772 0.571429 +vt 0.789474 0.761905 +vt 0.789474 0.666667 +vt 0.438596 0.666667 +vt 0.438596 0.761905 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +s off +f 3/1/1 8/2/1 4/3/1 +f 5/4/2 7/5/2 6/6/2 +f 1/7/3 6/6/3 2/8/3 +f 4/9/4 5/4/4 1/10/4 +f 2/11/5 7/5/5 3/12/5 +f 3/1/1 7/5/1 8/2/1 +f 5/4/2 8/2/2 7/5/2 +f 1/7/3 5/4/3 6/6/3 +f 4/9/4 8/2/4 5/4/4 +f 2/11/5 6/6/5 7/5/5 +o Shells +v 0.250000 1.000000 -0.750000 +v 0.250000 1.000000 0.750000 +v -0.250000 1.000000 0.750000 +v -0.250000 1.000000 -0.750000 +v 0.125000 1.000000 0.406250 +v 0.102903 1.000000 0.415403 +v 0.093750 1.000000 0.437500 +v 0.102903 1.000000 0.459597 +v 0.125000 1.000000 0.468750 +v 0.147097 1.000000 0.459597 +v 0.156250 1.000000 0.437500 +v 0.147097 1.000000 0.415403 +v 0.125000 1.125000 0.406250 +v 0.102903 1.125000 0.415403 +v 0.093750 1.125000 0.437500 +v 0.102903 1.125000 0.459597 +v 0.125000 1.125000 0.468750 +v 0.147097 1.125000 0.459597 +v 0.156250 1.125000 0.437500 +v 0.147097 1.125000 0.415403 +v 0.156250 1.000000 -0.468750 +v 0.156250 1.000000 0.468750 +v 0.156250 1.062500 -0.468750 +v 0.156250 1.062500 0.468750 +v 0.187500 1.000000 -0.468750 +v 0.187500 1.000000 0.468750 +v 0.187500 1.062500 -0.468750 +v 0.187500 1.062500 0.468750 +v 0.062500 1.000000 -0.468750 +v 0.062500 1.000000 0.468750 +v 0.062500 1.062500 -0.468750 +v 0.062500 1.062500 0.468750 +v 0.093750 1.000000 -0.468750 +v 0.093750 1.000000 0.468750 +v 0.093750 1.062500 -0.468750 +v 0.093750 1.062500 0.468750 +v -0.093750 1.000000 -0.468750 +v -0.093750 1.000000 0.468750 +v -0.093750 1.062500 -0.468750 +v -0.093750 1.062500 0.468750 +v -0.062500 1.000000 -0.468750 +v -0.062500 1.000000 0.468750 +v -0.062500 1.062500 -0.468750 +v -0.062500 1.062500 0.468750 +v -0.187500 1.000000 -0.468750 +v -0.187500 1.000000 0.468750 +v -0.187500 1.062500 -0.468750 +v -0.187500 1.062500 0.468750 +v -0.156250 1.000000 -0.468750 +v -0.156250 1.000000 0.468750 +v -0.156250 1.062500 -0.468750 +v -0.156250 1.062500 0.468750 +v -0.125000 1.000000 0.406250 +v -0.147097 1.000000 0.415403 +v -0.156250 1.000000 0.437500 +v -0.147097 1.000000 0.459597 +v -0.125000 1.000000 0.468750 +v -0.102903 1.000000 0.459597 +v -0.093750 1.000000 0.437500 +v -0.102903 1.000000 0.415403 +v -0.125000 1.125000 0.406250 +v -0.147097 1.125000 0.415403 +v -0.156250 1.125000 0.437500 +v -0.147097 1.125000 0.459597 +v -0.125000 1.125000 0.468750 +v -0.102903 1.125000 0.459597 +v -0.093750 1.125000 0.437500 +v -0.102903 1.125000 0.415403 +v 0.125000 1.000000 0.281250 +v 0.102903 1.000000 0.290403 +v 0.093750 1.000000 0.312500 +v 0.102903 1.000000 0.334597 +v 0.125000 1.000000 0.343750 +v 0.147097 1.000000 0.334597 +v 0.156250 1.000000 0.312500 +v 0.147097 1.000000 0.290403 +v 0.125000 1.125000 0.281250 +v 0.102903 1.125000 0.290403 +v 0.093750 1.125000 0.312500 +v 0.102903 1.125000 0.334597 +v 0.125000 1.125000 0.343750 +v 0.147097 1.125000 0.334597 +v 0.156250 1.125000 0.312500 +v 0.147097 1.125000 0.290403 +v -0.125000 1.000000 0.281250 +v -0.147097 1.000000 0.290403 +v -0.156250 1.000000 0.312500 +v -0.147097 1.000000 0.334597 +v -0.125000 1.000000 0.343750 +v -0.102903 1.000000 0.334597 +v -0.093750 1.000000 0.312500 +v -0.102903 1.000000 0.290403 +v -0.125000 1.125000 0.281250 +v -0.147097 1.125000 0.290403 +v -0.156250 1.125000 0.312500 +v -0.147097 1.125000 0.334597 +v -0.125000 1.125000 0.343750 +v -0.102903 1.125000 0.334597 +v -0.093750 1.125000 0.312500 +v -0.102903 1.125000 0.290403 +v 0.125000 1.000000 0.156250 +v 0.102903 1.000000 0.165403 +v 0.093750 1.000000 0.187500 +v 0.102903 1.000000 0.209597 +v 0.125000 1.000000 0.218750 +v 0.147097 1.000000 0.209597 +v 0.156250 1.000000 0.187500 +v 0.147097 1.000000 0.165403 +v 0.125000 1.125000 0.156250 +v 0.102903 1.125000 0.165403 +v 0.093750 1.125000 0.187500 +v 0.102903 1.125000 0.209597 +v 0.125000 1.125000 0.218750 +v 0.147097 1.125000 0.209597 +v 0.156250 1.125000 0.187500 +v 0.147097 1.125000 0.165403 +v -0.125000 1.000000 0.156250 +v -0.147097 1.000000 0.165403 +v -0.156250 1.000000 0.187500 +v -0.147097 1.000000 0.209597 +v -0.125000 1.000000 0.218750 +v -0.102903 1.000000 0.209597 +v -0.093750 1.000000 0.187500 +v -0.102903 1.000000 0.165403 +v -0.125000 1.125000 0.156250 +v -0.147097 1.125000 0.165403 +v -0.156250 1.125000 0.187500 +v -0.147097 1.125000 0.209597 +v -0.125000 1.125000 0.218750 +v -0.102903 1.125000 0.209597 +v -0.093750 1.125000 0.187500 +v -0.102903 1.125000 0.165403 +v 0.125000 1.000000 0.031250 +v 0.102903 1.000000 0.040403 +v 0.093750 1.000000 0.062500 +v 0.102903 1.000000 0.084597 +v 0.125000 1.000000 0.093750 +v 0.147097 1.000000 0.084597 +v 0.156250 1.000000 0.062500 +v 0.147097 1.000000 0.040403 +v 0.125000 1.125000 0.031250 +v 0.102903 1.125000 0.040403 +v 0.093750 1.125000 0.062500 +v 0.102903 1.125000 0.084597 +v 0.125000 1.125000 0.093750 +v 0.147097 1.125000 0.084597 +v 0.156250 1.125000 0.062500 +v 0.147097 1.125000 0.040403 +v -0.125000 1.000000 0.031250 +v -0.147097 1.000000 0.040403 +v -0.156250 1.000000 0.062500 +v -0.147097 1.000000 0.084597 +v -0.125000 1.000000 0.093750 +v -0.102903 1.000000 0.084597 +v -0.093750 1.000000 0.062500 +v -0.102903 1.000000 0.040403 +v -0.125000 1.125000 0.031250 +v -0.147097 1.125000 0.040403 +v -0.156250 1.125000 0.062500 +v -0.147097 1.125000 0.084597 +v -0.125000 1.125000 0.093750 +v -0.102903 1.125000 0.084597 +v -0.093750 1.125000 0.062500 +v -0.102903 1.125000 0.040403 +v 0.125000 1.000000 -0.093750 +v 0.102903 1.000000 -0.084597 +v 0.093750 1.000000 -0.062500 +v 0.102903 1.000000 -0.040403 +v 0.125000 1.000000 -0.031250 +v 0.147097 1.000000 -0.040403 +v 0.156250 1.000000 -0.062500 +v 0.147097 1.000000 -0.084597 +v 0.125000 1.125000 -0.093750 +v 0.102903 1.125000 -0.084597 +v 0.093750 1.125000 -0.062500 +v 0.102903 1.125000 -0.040403 +v 0.125000 1.125000 -0.031250 +v 0.147097 1.125000 -0.040403 +v 0.156250 1.125000 -0.062500 +v 0.147097 1.125000 -0.084597 +v -0.125000 1.000000 -0.093750 +v -0.147097 1.000000 -0.084597 +v -0.156250 1.000000 -0.062500 +v -0.147097 1.000000 -0.040403 +v -0.125000 1.000000 -0.031250 +v -0.102903 1.000000 -0.040403 +v -0.093750 1.000000 -0.062500 +v -0.102903 1.000000 -0.084597 +v -0.125000 1.125000 -0.093750 +v -0.147097 1.125000 -0.084597 +v -0.156250 1.125000 -0.062500 +v -0.147097 1.125000 -0.040403 +v -0.125000 1.125000 -0.031250 +v -0.102903 1.125000 -0.040403 +v -0.093750 1.125000 -0.062500 +v -0.102903 1.125000 -0.084597 +v 0.125000 1.000000 -0.218750 +v 0.102903 1.000000 -0.209597 +v 0.093750 1.000000 -0.187500 +v 0.102903 1.000000 -0.165403 +v 0.125000 1.000000 -0.156250 +v 0.147097 1.000000 -0.165403 +v 0.156250 1.000000 -0.187500 +v 0.147097 1.000000 -0.209597 +v 0.125000 1.125000 -0.218750 +v 0.102903 1.125000 -0.209597 +v 0.093750 1.125000 -0.187500 +v 0.102903 1.125000 -0.165403 +v 0.125000 1.125000 -0.156250 +v 0.147097 1.125000 -0.165403 +v 0.156250 1.125000 -0.187500 +v 0.147097 1.125000 -0.209597 +v -0.125000 1.000000 -0.218750 +v -0.147097 1.000000 -0.209597 +v -0.156250 1.000000 -0.187500 +v -0.147097 1.000000 -0.165403 +v -0.125000 1.000000 -0.156250 +v -0.102903 1.000000 -0.165403 +v -0.093750 1.000000 -0.187500 +v -0.102903 1.000000 -0.209597 +v -0.125000 1.125000 -0.218750 +v -0.147097 1.125000 -0.209597 +v -0.156250 1.125000 -0.187500 +v -0.147097 1.125000 -0.165403 +v -0.125000 1.125000 -0.156250 +v -0.102903 1.125000 -0.165403 +v -0.093750 1.125000 -0.187500 +v -0.102903 1.125000 -0.209597 +v 0.125000 1.000000 -0.343750 +v 0.102903 1.000000 -0.334597 +v 0.093750 1.000000 -0.312500 +v 0.102903 1.000000 -0.290403 +v 0.125000 1.000000 -0.281250 +v 0.147097 1.000000 -0.290403 +v 0.156250 1.000000 -0.312500 +v 0.147097 1.000000 -0.334597 +v 0.125000 1.125000 -0.343750 +v 0.102903 1.125000 -0.334597 +v 0.093750 1.125000 -0.312500 +v 0.102903 1.125000 -0.290403 +v 0.125000 1.125000 -0.281250 +v 0.147097 1.125000 -0.290403 +v 0.156250 1.125000 -0.312500 +v 0.147097 1.125000 -0.334597 +v -0.125000 1.000000 -0.343750 +v -0.147097 1.000000 -0.334597 +v -0.156250 1.000000 -0.312500 +v -0.147097 1.000000 -0.290403 +v -0.125000 1.000000 -0.281250 +v -0.102903 1.000000 -0.290403 +v -0.093750 1.000000 -0.312500 +v -0.102903 1.000000 -0.334597 +v -0.125000 1.125000 -0.343750 +v -0.147097 1.125000 -0.334597 +v -0.156250 1.125000 -0.312500 +v -0.147097 1.125000 -0.290403 +v -0.125000 1.125000 -0.281250 +v -0.102903 1.125000 -0.290403 +v -0.093750 1.125000 -0.312500 +v -0.102903 1.125000 -0.334597 +v 0.125000 1.000000 -0.468750 +v 0.102903 1.000000 -0.459597 +v 0.093750 1.000000 -0.437500 +v 0.102903 1.000000 -0.415403 +v 0.125000 1.000000 -0.406250 +v 0.147097 1.000000 -0.415403 +v 0.156250 1.000000 -0.437500 +v 0.147097 1.000000 -0.459597 +v 0.125000 1.125000 -0.468750 +v 0.102903 1.125000 -0.459597 +v 0.093750 1.125000 -0.437500 +v 0.102903 1.125000 -0.415403 +v 0.125000 1.125000 -0.406250 +v 0.147097 1.125000 -0.415403 +v 0.156250 1.125000 -0.437500 +v 0.147097 1.125000 -0.459597 +v -0.125000 1.000000 -0.468750 +v -0.147097 1.000000 -0.459597 +v -0.156250 1.000000 -0.437500 +v -0.147097 1.000000 -0.415403 +v -0.125000 1.000000 -0.406250 +v -0.102903 1.000000 -0.415403 +v -0.093750 1.000000 -0.437500 +v -0.102903 1.000000 -0.459597 +v -0.125000 1.125000 -0.468750 +v -0.147097 1.125000 -0.459597 +v -0.156250 1.125000 -0.437500 +v -0.147097 1.125000 -0.415403 +v -0.125000 1.125000 -0.406250 +v -0.102903 1.125000 -0.415403 +v -0.093750 1.125000 -0.437500 +v -0.102903 1.125000 -0.459597 +vt 0.333333 0.833333 +vt 0.122807 0.928571 +vt 0.122807 0.833333 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.728070 0.607143 +vt 0.859649 0.595238 +vt 0.859649 0.607143 +vt 0.868421 0.583333 +vt 0.868421 0.595238 +vt 0.719298 0.595238 +vt 0.728070 0.583333 +vt 0.728070 0.595238 +vt 0.859649 0.583333 +vt 0.859649 0.571429 +vt 0.728070 0.607143 +vt 0.859649 0.595238 +vt 0.859649 0.607143 +vt 0.868421 0.583333 +vt 0.868421 0.595238 +vt 0.719298 0.595238 +vt 0.728070 0.583333 +vt 0.728070 0.595238 +vt 0.859649 0.583333 +vt 0.859649 0.571429 +vt 0.728070 0.607143 +vt 0.859649 0.595238 +vt 0.859649 0.607143 +vt 0.868421 0.583333 +vt 0.868421 0.595238 +vt 0.719298 0.595238 +vt 0.728070 0.583333 +vt 0.728070 0.595238 +vt 0.859649 0.583333 +vt 0.859649 0.571429 +vt 0.728070 0.607143 +vt 0.859649 0.595238 +vt 0.859649 0.607143 +vt 0.868421 0.583333 +vt 0.868421 0.595238 +vt 0.719298 0.595238 +vt 0.728070 0.583333 +vt 0.728070 0.595238 +vt 0.859649 0.583333 +vt 0.859649 0.571429 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.333333 0.928571 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.719298 0.583333 +vt 0.728070 0.571429 +vt 0.719298 0.583333 +vt 0.728070 0.571429 +vt 0.719298 0.583333 +vt 0.728070 0.571429 +vt 0.719298 0.583333 +vt 0.728070 0.571429 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +s off +f 9/13/6 11/14/6 10/15/6 +f 25/16/6 27/17/6 21/18/6 +f 30/19/7 31/20/7 29/21/7 +f 31/20/8 33/22/8 29/23/8 +f 30/24/9 36/25/9 32/26/9 +f 32/26/6 35/27/6 31/20/6 +f 36/25/10 33/28/10 35/27/10 +f 38/29/7 39/30/7 37/31/7 +f 39/30/8 41/32/8 37/33/8 +f 38/34/9 44/35/9 40/36/9 +f 40/36/6 43/37/6 39/30/6 +f 44/35/10 41/38/10 43/37/10 +f 46/39/7 47/40/7 45/41/7 +f 47/40/8 49/42/8 45/43/8 +f 46/44/9 52/45/9 48/46/9 +f 48/46/6 51/47/6 47/40/6 +f 52/45/10 49/48/10 51/47/10 +f 54/49/7 55/50/7 53/51/7 +f 55/50/8 57/52/8 53/53/8 +f 54/54/9 60/55/9 56/56/9 +f 56/56/6 59/57/6 55/50/6 +f 60/55/10 57/58/10 59/57/10 +f 73/59/6 75/60/6 69/61/6 +f 89/62/6 91/63/6 85/64/6 +f 105/65/6 107/66/6 101/67/6 +f 121/68/6 123/69/6 117/70/6 +f 137/71/6 139/72/6 133/73/6 +f 153/74/6 155/75/6 149/76/6 +f 169/77/6 171/78/6 165/79/6 +f 185/80/6 187/81/6 181/82/6 +f 201/83/6 203/84/6 197/85/6 +f 217/86/6 219/87/6 213/88/6 +f 233/89/6 235/90/6 229/91/6 +f 249/92/6 251/93/6 245/94/6 +f 265/95/6 267/96/6 261/97/6 +f 281/98/6 283/99/6 277/100/6 +f 297/101/6 299/102/6 293/103/6 +f 9/13/6 12/104/6 11/14/6 +f 21/18/6 22/105/6 23/106/6 +f 23/106/6 24/107/6 25/16/6 +f 25/16/6 26/108/6 27/17/6 +f 27/17/6 28/109/6 21/18/6 +f 21/18/6 23/106/6 25/16/6 +f 30/19/7 32/26/7 31/20/7 +f 31/20/8 35/27/8 33/22/8 +f 30/24/9 34/110/9 36/25/9 +f 32/26/6 36/25/6 35/27/6 +f 36/25/10 34/111/10 33/28/10 +f 38/29/7 40/36/7 39/30/7 +f 39/30/8 43/37/8 41/32/8 +f 38/34/9 42/112/9 44/35/9 +f 40/36/6 44/35/6 43/37/6 +f 44/35/10 42/113/10 41/38/10 +f 46/39/7 48/46/7 47/40/7 +f 47/40/8 51/47/8 49/42/8 +f 46/44/9 50/114/9 52/45/9 +f 48/46/6 52/45/6 51/47/6 +f 52/45/10 50/115/10 49/48/10 +f 54/49/7 56/56/7 55/50/7 +f 55/50/8 59/57/8 57/52/8 +f 54/54/9 58/116/9 60/55/9 +f 56/56/6 60/55/6 59/57/6 +f 60/55/10 58/117/10 57/58/10 +f 69/61/6 70/118/6 71/119/6 +f 71/119/6 72/120/6 73/59/6 +f 73/59/6 74/121/6 75/60/6 +f 75/60/6 76/122/6 69/61/6 +f 69/61/6 71/119/6 73/59/6 +f 85/64/6 86/123/6 87/124/6 +f 87/124/6 88/125/6 89/62/6 +f 89/62/6 90/126/6 91/63/6 +f 91/63/6 92/127/6 85/64/6 +f 85/64/6 87/124/6 89/62/6 +f 101/67/6 102/128/6 103/129/6 +f 103/129/6 104/130/6 105/65/6 +f 105/65/6 106/131/6 107/66/6 +f 107/66/6 108/132/6 101/67/6 +f 101/67/6 103/129/6 105/65/6 +f 117/70/6 118/133/6 119/134/6 +f 119/134/6 120/135/6 121/68/6 +f 121/68/6 122/136/6 123/69/6 +f 123/69/6 124/137/6 117/70/6 +f 117/70/6 119/134/6 121/68/6 +f 133/73/6 134/138/6 135/139/6 +f 135/139/6 136/140/6 137/71/6 +f 137/71/6 138/141/6 139/72/6 +f 139/72/6 140/142/6 133/73/6 +f 133/73/6 135/139/6 137/71/6 +f 149/76/6 150/143/6 151/144/6 +f 151/144/6 152/145/6 153/74/6 +f 153/74/6 154/146/6 155/75/6 +f 155/75/6 156/147/6 149/76/6 +f 149/76/6 151/144/6 153/74/6 +f 165/79/6 166/148/6 167/149/6 +f 167/149/6 168/150/6 169/77/6 +f 169/77/6 170/151/6 171/78/6 +f 171/78/6 172/152/6 165/79/6 +f 165/79/6 167/149/6 169/77/6 +f 181/82/6 182/153/6 183/154/6 +f 183/154/6 184/155/6 185/80/6 +f 185/80/6 186/156/6 187/81/6 +f 187/81/6 188/157/6 181/82/6 +f 181/82/6 183/154/6 185/80/6 +f 197/85/6 198/158/6 199/159/6 +f 199/159/6 200/160/6 201/83/6 +f 201/83/6 202/161/6 203/84/6 +f 203/84/6 204/162/6 197/85/6 +f 197/85/6 199/159/6 201/83/6 +f 213/88/6 214/163/6 215/164/6 +f 215/164/6 216/165/6 217/86/6 +f 217/86/6 218/166/6 219/87/6 +f 219/87/6 220/167/6 213/88/6 +f 213/88/6 215/164/6 217/86/6 +f 229/91/6 230/168/6 231/169/6 +f 231/169/6 232/170/6 233/89/6 +f 233/89/6 234/171/6 235/90/6 +f 235/90/6 236/172/6 229/91/6 +f 229/91/6 231/169/6 233/89/6 +f 245/94/6 246/173/6 247/174/6 +f 247/174/6 248/175/6 249/92/6 +f 249/92/6 250/176/6 251/93/6 +f 251/93/6 252/177/6 245/94/6 +f 245/94/6 247/174/6 249/92/6 +f 261/97/6 262/178/6 263/179/6 +f 263/179/6 264/180/6 265/95/6 +f 265/95/6 266/181/6 267/96/6 +f 267/96/6 268/182/6 261/97/6 +f 261/97/6 263/179/6 265/95/6 +f 277/100/6 278/183/6 279/184/6 +f 279/184/6 280/185/6 281/98/6 +f 281/98/6 282/186/6 283/99/6 +f 283/99/6 284/187/6 277/100/6 +f 277/100/6 279/184/6 281/98/6 +f 293/103/6 294/188/6 295/189/6 +f 295/189/6 296/190/6 297/101/6 +f 297/101/6 298/191/6 299/102/6 +f 299/102/6 300/192/6 293/103/6 +f 293/103/6 295/189/6 297/101/6 +s 1 +f 20/193/11 27/194/10 19/195/10 +f 18/196/12 25/197/9 17/198/9 +f 16/199/13 23/200/7 15/201/7 +f 14/202/14 21/203/8 13/204/8 +f 13/204/8 28/205/11 20/193/11 +f 19/195/10 26/206/12 18/196/12 +f 17/207/9 24/208/13 16/199/13 +f 15/201/7 22/209/14 14/202/14 +f 68/210/11 75/211/10 67/212/10 +f 66/213/12 73/214/9 65/215/9 +f 64/216/13 71/217/7 63/218/7 +f 62/219/14 69/220/8 61/221/8 +f 61/221/8 76/222/11 68/210/11 +f 67/212/10 74/223/12 66/213/12 +f 65/224/9 72/225/13 64/216/13 +f 63/218/7 70/226/14 62/219/14 +f 84/227/11 91/228/10 83/229/10 +f 82/230/12 89/231/9 81/232/9 +f 80/233/13 87/234/7 79/235/7 +f 78/236/14 85/237/8 77/238/8 +f 77/238/8 92/239/11 84/227/11 +f 83/229/10 90/240/12 82/230/12 +f 81/241/9 88/242/13 80/233/13 +f 79/235/7 86/243/14 78/236/14 +f 100/244/11 107/245/10 99/246/10 +f 98/247/12 105/248/9 97/249/9 +f 96/250/13 103/251/7 95/252/7 +f 94/253/14 101/254/8 93/255/8 +f 93/255/8 108/256/11 100/244/11 +f 99/246/10 106/257/12 98/247/12 +f 97/258/9 104/259/13 96/250/13 +f 95/252/7 102/260/14 94/253/14 +f 116/261/11 123/262/10 115/263/10 +f 114/264/12 121/265/9 113/266/9 +f 112/267/13 119/268/7 111/269/7 +f 110/270/14 117/271/8 109/272/8 +f 109/272/8 124/273/11 116/261/11 +f 115/263/10 122/274/12 114/264/12 +f 113/275/9 120/276/13 112/267/13 +f 111/269/7 118/277/14 110/270/14 +f 132/278/11 139/279/10 131/280/10 +f 130/281/12 137/282/9 129/283/9 +f 128/284/13 135/285/7 127/286/7 +f 126/287/14 133/288/8 125/289/8 +f 125/289/8 140/290/11 132/278/11 +f 131/280/10 138/291/12 130/281/12 +f 129/292/9 136/293/13 128/284/13 +f 127/286/7 134/294/14 126/287/14 +f 148/295/11 155/296/10 147/297/10 +f 146/298/12 153/299/9 145/300/9 +f 144/301/13 151/302/7 143/303/7 +f 142/304/14 149/305/8 141/306/8 +f 141/306/8 156/307/11 148/295/11 +f 147/297/10 154/308/12 146/298/12 +f 145/309/9 152/310/13 144/301/13 +f 143/303/7 150/311/14 142/304/14 +f 164/312/11 171/313/10 163/314/10 +f 162/315/12 169/316/9 161/317/9 +f 160/318/13 167/319/7 159/320/7 +f 158/321/14 165/322/8 157/323/8 +f 157/323/8 172/324/11 164/312/11 +f 163/314/10 170/325/12 162/315/12 +f 161/326/9 168/327/13 160/318/13 +f 159/320/7 166/328/14 158/321/14 +f 180/329/11 187/330/10 179/331/10 +f 178/332/12 185/333/9 177/334/9 +f 176/335/13 183/336/7 175/337/7 +f 174/338/14 181/339/8 173/340/8 +f 173/340/8 188/341/11 180/329/11 +f 179/331/10 186/342/12 178/332/12 +f 177/343/9 184/344/13 176/335/13 +f 175/337/7 182/345/14 174/338/14 +f 196/346/11 203/347/10 195/348/10 +f 194/349/12 201/350/9 193/351/9 +f 192/352/13 199/353/7 191/354/7 +f 190/355/14 197/356/8 189/357/8 +f 189/357/8 204/358/11 196/346/11 +f 195/348/10 202/359/12 194/349/12 +f 193/360/9 200/361/13 192/352/13 +f 191/354/7 198/362/14 190/355/14 +f 212/363/11 219/364/10 211/365/10 +f 210/366/12 217/367/9 209/368/9 +f 208/369/13 215/370/7 207/371/7 +f 206/372/14 213/373/8 205/374/8 +f 205/374/8 220/375/11 212/363/11 +f 211/365/10 218/376/12 210/366/12 +f 209/377/9 216/378/13 208/369/13 +f 207/371/7 214/379/14 206/372/14 +f 228/380/11 235/381/10 227/382/10 +f 226/383/12 233/384/9 225/385/9 +f 224/386/13 231/387/7 223/388/7 +f 222/389/14 229/390/8 221/391/8 +f 221/391/8 236/392/11 228/380/11 +f 227/382/10 234/393/12 226/383/12 +f 225/394/9 232/395/13 224/386/13 +f 223/388/7 230/396/14 222/389/14 +f 244/397/11 251/398/10 243/399/10 +f 242/400/12 249/401/9 241/402/9 +f 240/403/13 247/404/7 239/405/7 +f 238/406/14 245/407/8 237/408/8 +f 237/408/8 252/409/11 244/397/11 +f 243/399/10 250/410/12 242/400/12 +f 241/411/9 248/412/13 240/403/13 +f 239/405/7 246/413/14 238/406/14 +f 260/414/11 267/415/10 259/416/10 +f 258/417/12 265/418/9 257/419/9 +f 256/420/13 263/421/7 255/422/7 +f 254/423/14 261/424/8 253/425/8 +f 253/425/8 268/426/11 260/414/11 +f 259/416/10 266/427/12 258/417/12 +f 257/428/9 264/429/13 256/420/13 +f 255/422/7 262/430/14 254/423/14 +f 276/431/11 283/432/10 275/433/10 +f 274/434/12 281/435/9 273/436/9 +f 272/437/13 279/438/7 271/439/7 +f 270/440/14 277/441/8 269/442/8 +f 269/442/8 284/443/11 276/431/11 +f 275/433/10 282/444/12 274/434/12 +f 273/445/9 280/446/13 272/437/13 +f 271/439/7 278/447/14 270/440/14 +f 292/448/11 299/449/10 291/450/10 +f 290/451/12 297/452/9 289/453/9 +f 288/454/13 295/455/7 287/456/7 +f 286/457/14 293/458/8 285/459/8 +f 285/459/8 300/460/11 292/448/11 +f 291/450/10 298/461/12 290/451/12 +f 289/462/9 296/463/13 288/454/13 +f 287/456/7 294/464/14 286/457/14 +f 20/193/11 28/205/11 27/194/10 +f 18/196/12 26/206/12 25/197/9 +f 16/199/13 24/208/13 23/200/7 +f 14/202/14 22/209/14 21/203/8 +f 13/204/8 21/203/8 28/205/11 +f 19/195/10 27/194/10 26/206/12 +f 17/207/9 25/465/9 24/208/13 +f 15/201/7 23/200/7 22/209/14 +f 68/210/11 76/222/11 75/211/10 +f 66/213/12 74/223/12 73/214/9 +f 64/216/13 72/225/13 71/217/7 +f 62/219/14 70/226/14 69/220/8 +f 61/221/8 69/220/8 76/222/11 +f 67/212/10 75/211/10 74/223/12 +f 65/224/9 73/466/9 72/225/13 +f 63/218/7 71/217/7 70/226/14 +f 84/227/11 92/239/11 91/228/10 +f 82/230/12 90/240/12 89/231/9 +f 80/233/13 88/242/13 87/234/7 +f 78/236/14 86/243/14 85/237/8 +f 77/238/8 85/237/8 92/239/11 +f 83/229/10 91/228/10 90/240/12 +f 81/241/9 89/467/9 88/242/13 +f 79/235/7 87/234/7 86/243/14 +f 100/244/11 108/256/11 107/245/10 +f 98/247/12 106/257/12 105/248/9 +f 96/250/13 104/259/13 103/251/7 +f 94/253/14 102/260/14 101/254/8 +f 93/255/8 101/254/8 108/256/11 +f 99/246/10 107/245/10 106/257/12 +f 97/258/9 105/468/9 104/259/13 +f 95/252/7 103/251/7 102/260/14 +f 116/261/11 124/273/11 123/262/10 +f 114/264/12 122/274/12 121/265/9 +f 112/267/13 120/276/13 119/268/7 +f 110/270/14 118/277/14 117/271/8 +f 109/272/8 117/271/8 124/273/11 +f 115/263/10 123/262/10 122/274/12 +f 113/275/9 121/469/9 120/276/13 +f 111/269/7 119/268/7 118/277/14 +f 132/278/11 140/290/11 139/279/10 +f 130/281/12 138/291/12 137/282/9 +f 128/284/13 136/293/13 135/285/7 +f 126/287/14 134/294/14 133/288/8 +f 125/289/8 133/288/8 140/290/11 +f 131/280/10 139/279/10 138/291/12 +f 129/292/9 137/470/9 136/293/13 +f 127/286/7 135/285/7 134/294/14 +f 148/295/11 156/307/11 155/296/10 +f 146/298/12 154/308/12 153/299/9 +f 144/301/13 152/310/13 151/302/7 +f 142/304/14 150/311/14 149/305/8 +f 141/306/8 149/305/8 156/307/11 +f 147/297/10 155/296/10 154/308/12 +f 145/309/9 153/471/9 152/310/13 +f 143/303/7 151/302/7 150/311/14 +f 164/312/11 172/324/11 171/313/10 +f 162/315/12 170/325/12 169/316/9 +f 160/318/13 168/327/13 167/319/7 +f 158/321/14 166/328/14 165/322/8 +f 157/323/8 165/322/8 172/324/11 +f 163/314/10 171/313/10 170/325/12 +f 161/326/9 169/472/9 168/327/13 +f 159/320/7 167/319/7 166/328/14 +f 180/329/11 188/341/11 187/330/10 +f 178/332/12 186/342/12 185/333/9 +f 176/335/13 184/344/13 183/336/7 +f 174/338/14 182/345/14 181/339/8 +f 173/340/8 181/339/8 188/341/11 +f 179/331/10 187/330/10 186/342/12 +f 177/343/9 185/473/9 184/344/13 +f 175/337/7 183/336/7 182/345/14 +f 196/346/11 204/358/11 203/347/10 +f 194/349/12 202/359/12 201/350/9 +f 192/352/13 200/361/13 199/353/7 +f 190/355/14 198/362/14 197/356/8 +f 189/357/8 197/356/8 204/358/11 +f 195/348/10 203/347/10 202/359/12 +f 193/360/9 201/474/9 200/361/13 +f 191/354/7 199/353/7 198/362/14 +f 212/363/11 220/375/11 219/364/10 +f 210/366/12 218/376/12 217/367/9 +f 208/369/13 216/378/13 215/370/7 +f 206/372/14 214/379/14 213/373/8 +f 205/374/8 213/373/8 220/375/11 +f 211/365/10 219/364/10 218/376/12 +f 209/377/9 217/475/9 216/378/13 +f 207/371/7 215/370/7 214/379/14 +f 228/380/11 236/392/11 235/381/10 +f 226/383/12 234/393/12 233/384/9 +f 224/386/13 232/395/13 231/387/7 +f 222/389/14 230/396/14 229/390/8 +f 221/391/8 229/390/8 236/392/11 +f 227/382/10 235/381/10 234/393/12 +f 225/394/9 233/476/9 232/395/13 +f 223/388/7 231/387/7 230/396/14 +f 244/397/11 252/409/11 251/398/10 +f 242/400/12 250/410/12 249/401/9 +f 240/403/13 248/412/13 247/404/7 +f 238/406/14 246/413/14 245/407/8 +f 237/408/8 245/407/8 252/409/11 +f 243/399/10 251/398/10 250/410/12 +f 241/411/9 249/477/9 248/412/13 +f 239/405/7 247/404/7 246/413/14 +f 260/414/11 268/426/11 267/415/10 +f 258/417/12 266/427/12 265/418/9 +f 256/420/13 264/429/13 263/421/7 +f 254/423/14 262/430/14 261/424/8 +f 253/425/8 261/424/8 268/426/11 +f 259/416/10 267/415/10 266/427/12 +f 257/428/9 265/478/9 264/429/13 +f 255/422/7 263/421/7 262/430/14 +f 276/431/11 284/443/11 283/432/10 +f 274/434/12 282/444/12 281/435/9 +f 272/437/13 280/446/13 279/438/7 +f 270/440/14 278/447/14 277/441/8 +f 269/442/8 277/441/8 284/443/11 +f 275/433/10 283/432/10 282/444/12 +f 273/445/9 281/479/9 280/446/13 +f 271/439/7 279/438/7 278/447/14 +f 292/448/11 300/460/11 299/449/10 +f 290/451/12 298/461/12 297/452/9 +f 288/454/13 296/463/13 295/455/7 +f 286/457/14 294/464/14 293/458/8 +f 285/459/8 293/458/8 300/460/11 +f 291/450/10 299/449/10 298/461/12 +f 289/462/9 297/480/9 296/463/13 +f 287/456/7 295/455/7 294/464/14 +o Bullets +v 0.125000 1.125000 0.414062 +v 0.108427 1.125000 0.420927 +v 0.101562 1.125000 0.437500 +v 0.108427 1.125000 0.454073 +v 0.125000 1.125000 0.460938 +v 0.141573 1.125000 0.454073 +v 0.148438 1.125000 0.437500 +v 0.141573 1.125000 0.420927 +v 0.125000 1.187500 0.437500 +v 0.141573 1.156250 0.454073 +v 0.125000 1.156250 0.460938 +v 0.108427 1.156250 0.454073 +v 0.101562 1.156250 0.437500 +v 0.108427 1.156250 0.420927 +v 0.125000 1.156250 0.414062 +v 0.141573 1.156250 0.420927 +v 0.148438 1.156250 0.437500 +v -0.125000 1.125000 0.414062 +v -0.141573 1.125000 0.420927 +v -0.148438 1.125000 0.437500 +v -0.141573 1.125000 0.454073 +v -0.125000 1.125000 0.460938 +v -0.108427 1.125000 0.454073 +v -0.101562 1.125000 0.437500 +v -0.108427 1.125000 0.420927 +v -0.125000 1.187500 0.437500 +v -0.108427 1.156250 0.454073 +v -0.125000 1.156250 0.460938 +v -0.141573 1.156250 0.454073 +v -0.148438 1.156250 0.437500 +v -0.141573 1.156250 0.420927 +v -0.125000 1.156250 0.414062 +v -0.108427 1.156250 0.420927 +v -0.101562 1.156250 0.437500 +v 0.125000 1.125000 0.289062 +v 0.108427 1.125000 0.295927 +v 0.101562 1.125000 0.312500 +v 0.108427 1.125000 0.329073 +v 0.125000 1.125000 0.335938 +v 0.141573 1.125000 0.329073 +v 0.148438 1.125000 0.312500 +v 0.141573 1.125000 0.295927 +v 0.125000 1.187500 0.312500 +v 0.141573 1.156250 0.329073 +v 0.125000 1.156250 0.335938 +v 0.108427 1.156250 0.329073 +v 0.101562 1.156250 0.312500 +v 0.108427 1.156250 0.295927 +v 0.125000 1.156250 0.289062 +v 0.141573 1.156250 0.295927 +v 0.148438 1.156250 0.312500 +v -0.125000 1.125000 0.289062 +v -0.141573 1.125000 0.295927 +v -0.148438 1.125000 0.312500 +v -0.141573 1.125000 0.329073 +v -0.125000 1.125000 0.335938 +v -0.108427 1.125000 0.329073 +v -0.101562 1.125000 0.312500 +v -0.108427 1.125000 0.295927 +v -0.125000 1.187500 0.312500 +v -0.108427 1.156250 0.329073 +v -0.125000 1.156250 0.335938 +v -0.141573 1.156250 0.329073 +v -0.148438 1.156250 0.312500 +v -0.141573 1.156250 0.295927 +v -0.125000 1.156250 0.289062 +v -0.108427 1.156250 0.295927 +v -0.101562 1.156250 0.312500 +v 0.125000 1.125000 0.164062 +v 0.108427 1.125000 0.170927 +v 0.101562 1.125000 0.187500 +v 0.108427 1.125000 0.204073 +v 0.125000 1.125000 0.210938 +v 0.141573 1.125000 0.204073 +v 0.148438 1.125000 0.187500 +v 0.141573 1.125000 0.170927 +v 0.125000 1.187500 0.187500 +v 0.141573 1.156250 0.204073 +v 0.125000 1.156250 0.210938 +v 0.108427 1.156250 0.204073 +v 0.101562 1.156250 0.187500 +v 0.108427 1.156250 0.170927 +v 0.125000 1.156250 0.164062 +v 0.141573 1.156250 0.170927 +v 0.148438 1.156250 0.187500 +v -0.125000 1.125000 0.164062 +v -0.141573 1.125000 0.170927 +v -0.148438 1.125000 0.187500 +v -0.141573 1.125000 0.204073 +v -0.125000 1.125000 0.210938 +v -0.108427 1.125000 0.204073 +v -0.101562 1.125000 0.187500 +v -0.108427 1.125000 0.170927 +v -0.125000 1.187500 0.187500 +v -0.108427 1.156250 0.204073 +v -0.125000 1.156250 0.210938 +v -0.141573 1.156250 0.204073 +v -0.148438 1.156250 0.187500 +v -0.141573 1.156250 0.170927 +v -0.125000 1.156250 0.164062 +v -0.108427 1.156250 0.170927 +v -0.101562 1.156250 0.187500 +v 0.125000 1.125000 0.039062 +v 0.108427 1.125000 0.045927 +v 0.101562 1.125000 0.062500 +v 0.108427 1.125000 0.079073 +v 0.125000 1.125000 0.085938 +v 0.141573 1.125000 0.079073 +v 0.148438 1.125000 0.062500 +v 0.141573 1.125000 0.045927 +v 0.125000 1.187500 0.062500 +v 0.141573 1.156250 0.079073 +v 0.125000 1.156250 0.085938 +v 0.108427 1.156250 0.079073 +v 0.101562 1.156250 0.062500 +v 0.108427 1.156250 0.045927 +v 0.125000 1.156250 0.039062 +v 0.141573 1.156250 0.045927 +v 0.148438 1.156250 0.062500 +v -0.125000 1.125000 0.039062 +v -0.141573 1.125000 0.045927 +v -0.148438 1.125000 0.062500 +v -0.141573 1.125000 0.079073 +v -0.125000 1.125000 0.085938 +v -0.108427 1.125000 0.079073 +v -0.101562 1.125000 0.062500 +v -0.108427 1.125000 0.045927 +v -0.125000 1.187500 0.062500 +v -0.108427 1.156250 0.079073 +v -0.125000 1.156250 0.085938 +v -0.141573 1.156250 0.079073 +v -0.148438 1.156250 0.062500 +v -0.141573 1.156250 0.045927 +v -0.125000 1.156250 0.039062 +v -0.108427 1.156250 0.045927 +v -0.101562 1.156250 0.062500 +v 0.125000 1.125000 -0.085938 +v 0.108427 1.125000 -0.079073 +v 0.101562 1.125000 -0.062500 +v 0.108427 1.125000 -0.045927 +v 0.125000 1.125000 -0.039062 +v 0.141573 1.125000 -0.045927 +v 0.148438 1.125000 -0.062500 +v 0.141573 1.125000 -0.079073 +v 0.125000 1.187500 -0.062500 +v 0.141573 1.156250 -0.045927 +v 0.125000 1.156250 -0.039062 +v 0.108427 1.156250 -0.045927 +v 0.101562 1.156250 -0.062500 +v 0.108427 1.156250 -0.079073 +v 0.125000 1.156250 -0.085938 +v 0.141573 1.156250 -0.079073 +v 0.148438 1.156250 -0.062500 +v -0.125000 1.125000 -0.085938 +v -0.141573 1.125000 -0.079073 +v -0.148438 1.125000 -0.062500 +v -0.141573 1.125000 -0.045927 +v -0.125000 1.125000 -0.039062 +v -0.108427 1.125000 -0.045927 +v -0.101562 1.125000 -0.062500 +v -0.108427 1.125000 -0.079073 +v -0.125000 1.187500 -0.062500 +v -0.108427 1.156250 -0.045927 +v -0.125000 1.156250 -0.039062 +v -0.141573 1.156250 -0.045927 +v -0.148438 1.156250 -0.062500 +v -0.141573 1.156250 -0.079073 +v -0.125000 1.156250 -0.085938 +v -0.108427 1.156250 -0.079073 +v -0.101562 1.156250 -0.062500 +v 0.125000 1.125000 -0.210938 +v 0.108427 1.125000 -0.204073 +v 0.101562 1.125000 -0.187500 +v 0.108427 1.125000 -0.170927 +v 0.125000 1.125000 -0.164062 +v 0.141573 1.125000 -0.170927 +v 0.148438 1.125000 -0.187500 +v 0.141573 1.125000 -0.204073 +v 0.125000 1.187500 -0.187500 +v 0.141573 1.156250 -0.170927 +v 0.125000 1.156250 -0.164062 +v 0.108427 1.156250 -0.170927 +v 0.101562 1.156250 -0.187500 +v 0.108427 1.156250 -0.204073 +v 0.125000 1.156250 -0.210938 +v 0.141573 1.156250 -0.204073 +v 0.148438 1.156250 -0.187500 +v -0.125000 1.125000 -0.210938 +v -0.141573 1.125000 -0.204073 +v -0.148438 1.125000 -0.187500 +v -0.141573 1.125000 -0.170927 +v -0.125000 1.125000 -0.164062 +v -0.108427 1.125000 -0.170927 +v -0.101562 1.125000 -0.187500 +v -0.108427 1.125000 -0.204073 +v -0.125000 1.187500 -0.187500 +v -0.108427 1.156250 -0.170927 +v -0.125000 1.156250 -0.164062 +v -0.141573 1.156250 -0.170927 +v -0.148438 1.156250 -0.187500 +v -0.141573 1.156250 -0.204073 +v -0.125000 1.156250 -0.210938 +v -0.108427 1.156250 -0.204073 +v -0.101562 1.156250 -0.187500 +v 0.125000 1.125000 -0.335938 +v 0.108427 1.125000 -0.329073 +v 0.101562 1.125000 -0.312500 +v 0.108427 1.125000 -0.295927 +v 0.125000 1.125000 -0.289062 +v 0.141573 1.125000 -0.295927 +v 0.148438 1.125000 -0.312500 +v 0.141573 1.125000 -0.329073 +v 0.125000 1.187500 -0.312500 +v 0.141573 1.156250 -0.295927 +v 0.125000 1.156250 -0.289062 +v 0.108427 1.156250 -0.295927 +v 0.101562 1.156250 -0.312500 +v 0.108427 1.156250 -0.329073 +v 0.125000 1.156250 -0.335938 +v 0.141573 1.156250 -0.329073 +v 0.148438 1.156250 -0.312500 +v -0.125000 1.125000 -0.335938 +v -0.141573 1.125000 -0.329073 +v -0.148438 1.125000 -0.312500 +v -0.141573 1.125000 -0.295927 +v -0.125000 1.125000 -0.289062 +v -0.108427 1.125000 -0.295927 +v -0.101562 1.125000 -0.312500 +v -0.108427 1.125000 -0.329073 +v -0.125000 1.187500 -0.312500 +v -0.108427 1.156250 -0.295927 +v -0.125000 1.156250 -0.289062 +v -0.141573 1.156250 -0.295927 +v -0.148438 1.156250 -0.312500 +v -0.141573 1.156250 -0.329073 +v -0.125000 1.156250 -0.335938 +v -0.108427 1.156250 -0.329073 +v -0.101562 1.156250 -0.312500 +v 0.125000 1.125000 -0.460938 +v 0.108427 1.125000 -0.454073 +v 0.101562 1.125000 -0.437500 +v 0.108427 1.125000 -0.420927 +v 0.125000 1.125000 -0.414062 +v 0.141573 1.125000 -0.420927 +v 0.148438 1.125000 -0.437500 +v 0.141573 1.125000 -0.454073 +v 0.125000 1.187500 -0.437500 +v 0.141573 1.156250 -0.420927 +v 0.125000 1.156250 -0.414062 +v 0.108427 1.156250 -0.420927 +v 0.101562 1.156250 -0.437500 +v 0.108427 1.156250 -0.454073 +v 0.125000 1.156250 -0.460938 +v 0.141573 1.156250 -0.454073 +v 0.148438 1.156250 -0.437500 +v -0.125000 1.125000 -0.460938 +v -0.141573 1.125000 -0.454073 +v -0.148438 1.125000 -0.437500 +v -0.141573 1.125000 -0.420927 +v -0.125000 1.125000 -0.414062 +v -0.108427 1.125000 -0.420927 +v -0.101562 1.125000 -0.437500 +v -0.108427 1.125000 -0.454073 +v -0.125000 1.187500 -0.437500 +v -0.108427 1.156250 -0.420927 +v -0.125000 1.156250 -0.414062 +v -0.141573 1.156250 -0.420927 +v -0.148438 1.156250 -0.437500 +v -0.141573 1.156250 -0.454073 +v -0.125000 1.156250 -0.460938 +v -0.108427 1.156250 -0.454073 +v -0.101562 1.156250 -0.437500 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vn 0.7071 0.0000 -0.7071 +vn 0.9554 0.2952 -0.0000 +vn 1.0000 0.0000 0.0000 +vn -0.0000 1.0000 -0.0000 +vn 0.6756 0.2952 0.6756 +vn -0.6756 0.2952 0.6756 +vn 0.0000 0.2952 0.9554 +vn -0.6756 0.2952 -0.6756 +vn -0.9554 0.2952 -0.0000 +vn 0.6756 0.2952 -0.6756 +vn -0.0000 0.2952 -0.9554 +vn -1.0000 0.0000 0.0000 +vn -0.7071 0.0000 -0.7071 +vn -0.0000 0.0000 1.0000 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 0.7071 +vn 0.0000 0.0000 -1.0000 +s 1 +f 308/481/15 317/482/16 307/483/17 +f 317/482/16 309/484/18 310/485/19 +f 309/486/18 312/487/20 311/488/21 +f 309/489/18 314/490/22 313/491/23 +f 309/492/18 317/482/16 316/493/24 +f 310/485/19 309/494/18 311/495/21 +f 312/487/20 309/496/18 313/491/23 +f 309/497/18 316/493/24 315/498/25 +f 303/499/26 314/490/22 302/500/27 +f 305/501/28 312/487/20 304/502/29 +f 307/483/17 310/485/19 306/503/30 +f 301/504/31 316/493/24 308/481/15 +f 302/500/27 315/498/25 301/504/31 +f 304/502/29 313/491/23 303/499/26 +f 306/503/30 311/495/21 305/505/28 +f 314/490/22 309/506/18 315/498/25 +f 325/507/15 334/508/16 324/509/17 +f 334/508/16 326/510/18 327/511/19 +f 326/512/18 329/513/20 328/514/21 +f 326/515/18 331/516/22 330/517/23 +f 326/518/18 334/508/16 333/519/24 +f 327/511/19 326/520/18 328/521/21 +f 329/513/20 326/522/18 330/517/23 +f 326/523/18 333/519/24 332/524/25 +f 320/525/26 331/516/22 319/526/27 +f 322/527/28 329/513/20 321/528/29 +f 324/509/17 327/511/19 323/529/30 +f 318/530/31 333/519/24 325/507/15 +f 319/526/27 332/524/25 318/530/31 +f 321/528/29 330/517/23 320/525/26 +f 323/529/30 328/521/21 322/531/28 +f 331/516/22 326/532/18 332/524/25 +f 342/533/15 351/534/16 341/535/17 +f 351/534/16 343/536/18 344/537/19 +f 343/538/18 346/539/20 345/540/21 +f 343/541/18 348/542/22 347/543/23 +f 343/544/18 351/534/16 350/545/24 +f 344/537/19 343/546/18 345/547/21 +f 346/539/20 343/548/18 347/543/23 +f 343/549/18 350/545/24 349/550/25 +f 337/551/26 348/542/22 336/552/27 +f 339/553/28 346/539/20 338/554/29 +f 341/535/17 344/537/19 340/555/30 +f 335/556/31 350/545/24 342/533/15 +f 336/552/27 349/550/25 335/556/31 +f 338/554/29 347/543/23 337/551/26 +f 340/555/30 345/547/21 339/557/28 +f 348/542/22 343/558/18 349/550/25 +f 359/559/15 368/560/16 358/561/17 +f 368/560/16 360/562/18 361/563/19 +f 360/564/18 363/565/20 362/566/21 +f 360/567/18 365/568/22 364/569/23 +f 360/570/18 368/560/16 367/571/24 +f 361/563/19 360/572/18 362/573/21 +f 363/565/20 360/574/18 364/569/23 +f 360/575/18 367/571/24 366/576/25 +f 354/577/26 365/568/22 353/578/27 +f 356/579/28 363/565/20 355/580/29 +f 358/561/17 361/563/19 357/581/30 +f 352/582/31 367/571/24 359/559/15 +f 353/578/27 366/576/25 352/582/31 +f 355/580/29 364/569/23 354/577/26 +f 357/581/30 362/573/21 356/583/28 +f 365/568/22 360/584/18 366/576/25 +f 376/585/15 385/586/16 375/587/17 +f 385/586/16 377/588/18 378/589/19 +f 377/590/18 380/591/20 379/592/21 +f 377/593/18 382/594/22 381/595/23 +f 377/596/18 385/586/16 384/597/24 +f 378/589/19 377/598/18 379/599/21 +f 380/591/20 377/600/18 381/595/23 +f 377/601/18 384/597/24 383/602/25 +f 371/603/26 382/594/22 370/604/27 +f 373/605/28 380/591/20 372/606/29 +f 375/587/17 378/589/19 374/607/30 +f 369/608/31 384/597/24 376/585/15 +f 370/604/27 383/602/25 369/608/31 +f 372/606/29 381/595/23 371/603/26 +f 374/607/30 379/599/21 373/609/28 +f 382/594/22 377/610/18 383/602/25 +f 393/611/15 402/612/16 392/613/17 +f 402/612/16 394/614/18 395/615/19 +f 394/616/18 397/617/20 396/618/21 +f 394/619/18 399/620/22 398/621/23 +f 394/622/18 402/612/16 401/623/24 +f 395/615/19 394/624/18 396/625/21 +f 397/617/20 394/626/18 398/621/23 +f 394/627/18 401/623/24 400/628/25 +f 388/629/26 399/620/22 387/630/27 +f 390/631/28 397/617/20 389/632/29 +f 392/613/17 395/615/19 391/633/30 +f 386/634/31 401/623/24 393/611/15 +f 387/630/27 400/628/25 386/634/31 +f 389/632/29 398/621/23 388/629/26 +f 391/633/30 396/625/21 390/635/28 +f 399/620/22 394/636/18 400/628/25 +f 410/637/15 419/638/16 409/639/17 +f 419/638/16 411/640/18 412/641/19 +f 411/642/18 414/643/20 413/644/21 +f 411/645/18 416/646/22 415/647/23 +f 411/648/18 419/638/16 418/649/24 +f 412/641/19 411/650/18 413/651/21 +f 414/643/20 411/652/18 415/647/23 +f 411/653/18 418/649/24 417/654/25 +f 405/655/26 416/646/22 404/656/27 +f 407/657/28 414/643/20 406/658/29 +f 409/639/17 412/641/19 408/659/30 +f 403/660/31 418/649/24 410/637/15 +f 404/656/27 417/654/25 403/660/31 +f 406/658/29 415/647/23 405/655/26 +f 408/659/30 413/651/21 407/661/28 +f 416/646/22 411/662/18 417/654/25 +f 427/663/15 436/664/16 426/665/17 +f 436/664/16 428/666/18 429/667/19 +f 428/668/18 431/669/20 430/670/21 +f 428/671/18 433/672/22 432/673/23 +f 428/674/18 436/664/16 435/675/24 +f 429/667/19 428/676/18 430/677/21 +f 431/669/20 428/678/18 432/673/23 +f 428/679/18 435/675/24 434/680/25 +f 422/681/26 433/672/22 421/682/27 +f 424/683/28 431/669/20 423/684/29 +f 426/665/17 429/667/19 425/685/30 +f 420/686/31 435/675/24 427/663/15 +f 421/682/27 434/680/25 420/686/31 +f 423/684/29 432/673/23 422/681/26 +f 425/685/30 430/677/21 424/687/28 +f 433/672/22 428/688/18 434/680/25 +f 444/689/15 453/690/16 443/691/17 +f 453/690/16 445/692/18 446/693/19 +f 445/694/18 448/695/20 447/696/21 +f 445/697/18 450/698/22 449/699/23 +f 445/700/18 453/690/16 452/701/24 +f 446/693/19 445/702/18 447/703/21 +f 448/695/20 445/704/18 449/699/23 +f 445/705/18 452/701/24 451/706/25 +f 439/707/26 450/698/22 438/708/27 +f 441/709/28 448/695/20 440/710/29 +f 443/691/17 446/693/19 442/711/30 +f 437/712/31 452/701/24 444/689/15 +f 438/708/27 451/706/25 437/712/31 +f 440/710/29 449/699/23 439/707/26 +f 442/711/30 447/703/21 441/713/28 +f 450/698/22 445/714/18 451/706/25 +f 461/715/15 470/716/16 460/717/17 +f 470/716/16 462/718/18 463/719/19 +f 462/720/18 465/721/20 464/722/21 +f 462/723/18 467/724/22 466/725/23 +f 462/726/18 470/716/16 469/727/24 +f 463/719/19 462/728/18 464/729/21 +f 465/721/20 462/730/18 466/725/23 +f 462/731/18 469/727/24 468/732/25 +f 456/733/26 467/724/22 455/734/27 +f 458/735/28 465/721/20 457/736/29 +f 460/717/17 463/719/19 459/737/30 +f 454/738/31 469/727/24 461/715/15 +f 455/734/27 468/732/25 454/738/31 +f 457/736/29 466/725/23 456/733/26 +f 459/737/30 464/729/21 458/739/28 +f 467/724/22 462/740/18 468/732/25 +f 478/741/15 487/742/16 477/743/17 +f 487/742/16 479/744/18 480/745/19 +f 479/746/18 482/747/20 481/748/21 +f 479/749/18 484/750/22 483/751/23 +f 479/752/18 487/742/16 486/753/24 +f 480/745/19 479/754/18 481/755/21 +f 482/747/20 479/756/18 483/751/23 +f 479/757/18 486/753/24 485/758/25 +f 473/759/26 484/750/22 472/760/27 +f 475/761/28 482/747/20 474/762/29 +f 477/743/17 480/745/19 476/763/30 +f 471/764/31 486/753/24 478/741/15 +f 472/760/27 485/758/25 471/764/31 +f 474/762/29 483/751/23 473/759/26 +f 476/763/30 481/755/21 475/765/28 +f 484/750/22 479/766/18 485/758/25 +f 495/767/15 504/768/16 494/769/17 +f 504/768/16 496/770/18 497/771/19 +f 496/772/18 499/773/20 498/774/21 +f 496/775/18 501/776/22 500/777/23 +f 496/778/18 504/768/16 503/779/24 +f 497/771/19 496/780/18 498/781/21 +f 499/773/20 496/782/18 500/777/23 +f 496/783/18 503/779/24 502/784/25 +f 490/785/26 501/776/22 489/786/27 +f 492/787/28 499/773/20 491/788/29 +f 494/769/17 497/771/19 493/789/30 +f 488/790/31 503/779/24 495/767/15 +f 489/786/27 502/784/25 488/790/31 +f 491/788/29 500/777/23 490/785/26 +f 493/789/30 498/781/21 492/791/28 +f 501/776/22 496/792/18 502/784/25 +f 512/793/15 521/794/16 511/795/17 +f 521/794/16 513/796/18 514/797/19 +f 513/798/18 516/799/20 515/800/21 +f 513/801/18 518/802/22 517/803/23 +f 513/804/18 521/794/16 520/805/24 +f 514/797/19 513/806/18 515/807/21 +f 516/799/20 513/808/18 517/803/23 +f 513/809/18 520/805/24 519/810/25 +f 507/811/26 518/802/22 506/812/27 +f 509/813/28 516/799/20 508/814/29 +f 511/795/17 514/797/19 510/815/30 +f 505/816/31 520/805/24 512/793/15 +f 506/812/27 519/810/25 505/816/31 +f 508/814/29 517/803/23 507/811/26 +f 510/815/30 515/807/21 509/817/28 +f 518/802/22 513/818/18 519/810/25 +f 529/819/15 538/820/16 528/821/17 +f 538/820/16 530/822/18 531/823/19 +f 530/824/18 533/825/20 532/826/21 +f 530/827/18 535/828/22 534/829/23 +f 530/830/18 538/820/16 537/831/24 +f 531/823/19 530/832/18 532/833/21 +f 533/825/20 530/834/18 534/829/23 +f 530/835/18 537/831/24 536/836/25 +f 524/837/26 535/828/22 523/838/27 +f 526/839/28 533/825/20 525/840/29 +f 528/821/17 531/823/19 527/841/30 +f 522/842/31 537/831/24 529/819/15 +f 523/838/27 536/836/25 522/842/31 +f 525/840/29 534/829/23 524/837/26 +f 527/841/30 532/833/21 526/843/28 +f 535/828/22 530/844/18 536/836/25 +f 546/845/15 555/846/16 545/847/17 +f 555/846/16 547/848/18 548/849/19 +f 547/850/18 550/851/20 549/852/21 +f 547/853/18 552/854/22 551/855/23 +f 547/856/18 555/846/16 554/857/24 +f 548/849/19 547/858/18 549/859/21 +f 550/851/20 547/860/18 551/855/23 +f 547/861/18 554/857/24 553/862/25 +f 541/863/26 552/854/22 540/864/27 +f 543/865/28 550/851/20 542/866/29 +f 545/847/17 548/849/19 544/867/30 +f 539/868/31 554/857/24 546/845/15 +f 540/864/27 553/862/25 539/868/31 +f 542/866/29 551/855/23 541/863/26 +f 544/867/30 549/859/21 543/869/28 +f 552/854/22 547/870/18 553/862/25 +f 563/871/15 572/872/16 562/873/17 +f 572/872/16 564/874/18 565/875/19 +f 564/876/18 567/877/20 566/878/21 +f 564/879/18 569/880/22 568/881/23 +f 564/882/18 572/872/16 571/883/24 +f 565/875/19 564/884/18 566/885/21 +f 567/877/20 564/886/18 568/881/23 +f 564/887/18 571/883/24 570/888/25 +f 558/889/26 569/880/22 557/890/27 +f 560/891/28 567/877/20 559/892/29 +f 562/873/17 565/875/19 561/893/30 +f 556/894/31 571/883/24 563/871/15 +f 557/890/27 570/888/25 556/894/31 +f 559/892/29 568/881/23 558/889/26 +f 561/893/30 566/885/21 560/895/28 +f 569/880/22 564/896/18 570/888/25 +f 308/481/15 316/493/24 317/482/16 +f 303/499/26 313/491/23 314/490/22 +f 305/501/28 311/488/21 312/487/20 +f 307/483/17 317/482/16 310/485/19 +f 301/504/31 315/498/25 316/493/24 +f 302/500/27 314/490/22 315/498/25 +f 304/502/29 312/487/20 313/491/23 +f 306/503/30 310/485/19 311/495/21 +f 325/507/15 333/519/24 334/508/16 +f 320/525/26 330/517/23 331/516/22 +f 322/527/28 328/514/21 329/513/20 +f 324/509/17 334/508/16 327/511/19 +f 318/530/31 332/524/25 333/519/24 +f 319/526/27 331/516/22 332/524/25 +f 321/528/29 329/513/20 330/517/23 +f 323/529/30 327/511/19 328/521/21 +f 342/533/15 350/545/24 351/534/16 +f 337/551/26 347/543/23 348/542/22 +f 339/553/28 345/540/21 346/539/20 +f 341/535/17 351/534/16 344/537/19 +f 335/556/31 349/550/25 350/545/24 +f 336/552/27 348/542/22 349/550/25 +f 338/554/29 346/539/20 347/543/23 +f 340/555/30 344/537/19 345/547/21 +f 359/559/15 367/571/24 368/560/16 +f 354/577/26 364/569/23 365/568/22 +f 356/579/28 362/566/21 363/565/20 +f 358/561/17 368/560/16 361/563/19 +f 352/582/31 366/576/25 367/571/24 +f 353/578/27 365/568/22 366/576/25 +f 355/580/29 363/565/20 364/569/23 +f 357/581/30 361/563/19 362/573/21 +f 376/585/15 384/597/24 385/586/16 +f 371/603/26 381/595/23 382/594/22 +f 373/605/28 379/592/21 380/591/20 +f 375/587/17 385/586/16 378/589/19 +f 369/608/31 383/602/25 384/597/24 +f 370/604/27 382/594/22 383/602/25 +f 372/606/29 380/591/20 381/595/23 +f 374/607/30 378/589/19 379/599/21 +f 393/611/15 401/623/24 402/612/16 +f 388/629/26 398/621/23 399/620/22 +f 390/631/28 396/618/21 397/617/20 +f 392/613/17 402/612/16 395/615/19 +f 386/634/31 400/628/25 401/623/24 +f 387/630/27 399/620/22 400/628/25 +f 389/632/29 397/617/20 398/621/23 +f 391/633/30 395/615/19 396/625/21 +f 410/637/15 418/649/24 419/638/16 +f 405/655/26 415/647/23 416/646/22 +f 407/657/28 413/644/21 414/643/20 +f 409/639/17 419/638/16 412/641/19 +f 403/660/31 417/654/25 418/649/24 +f 404/656/27 416/646/22 417/654/25 +f 406/658/29 414/643/20 415/647/23 +f 408/659/30 412/641/19 413/651/21 +f 427/663/15 435/675/24 436/664/16 +f 422/681/26 432/673/23 433/672/22 +f 424/683/28 430/670/21 431/669/20 +f 426/665/17 436/664/16 429/667/19 +f 420/686/31 434/680/25 435/675/24 +f 421/682/27 433/672/22 434/680/25 +f 423/684/29 431/669/20 432/673/23 +f 425/685/30 429/667/19 430/677/21 +f 444/689/15 452/701/24 453/690/16 +f 439/707/26 449/699/23 450/698/22 +f 441/709/28 447/696/21 448/695/20 +f 443/691/17 453/690/16 446/693/19 +f 437/712/31 451/706/25 452/701/24 +f 438/708/27 450/698/22 451/706/25 +f 440/710/29 448/695/20 449/699/23 +f 442/711/30 446/693/19 447/703/21 +f 461/715/15 469/727/24 470/716/16 +f 456/733/26 466/725/23 467/724/22 +f 458/735/28 464/722/21 465/721/20 +f 460/717/17 470/716/16 463/719/19 +f 454/738/31 468/732/25 469/727/24 +f 455/734/27 467/724/22 468/732/25 +f 457/736/29 465/721/20 466/725/23 +f 459/737/30 463/719/19 464/729/21 +f 478/741/15 486/753/24 487/742/16 +f 473/759/26 483/751/23 484/750/22 +f 475/761/28 481/748/21 482/747/20 +f 477/743/17 487/742/16 480/745/19 +f 471/764/31 485/758/25 486/753/24 +f 472/760/27 484/750/22 485/758/25 +f 474/762/29 482/747/20 483/751/23 +f 476/763/30 480/745/19 481/755/21 +f 495/767/15 503/779/24 504/768/16 +f 490/785/26 500/777/23 501/776/22 +f 492/787/28 498/774/21 499/773/20 +f 494/769/17 504/768/16 497/771/19 +f 488/790/31 502/784/25 503/779/24 +f 489/786/27 501/776/22 502/784/25 +f 491/788/29 499/773/20 500/777/23 +f 493/789/30 497/771/19 498/781/21 +f 512/793/15 520/805/24 521/794/16 +f 507/811/26 517/803/23 518/802/22 +f 509/813/28 515/800/21 516/799/20 +f 511/795/17 521/794/16 514/797/19 +f 505/816/31 519/810/25 520/805/24 +f 506/812/27 518/802/22 519/810/25 +f 508/814/29 516/799/20 517/803/23 +f 510/815/30 514/797/19 515/807/21 +f 529/819/15 537/831/24 538/820/16 +f 524/837/26 534/829/23 535/828/22 +f 526/839/28 532/826/21 533/825/20 +f 528/821/17 538/820/16 531/823/19 +f 522/842/31 536/836/25 537/831/24 +f 523/838/27 535/828/22 536/836/25 +f 525/840/29 533/825/20 534/829/23 +f 527/841/30 531/823/19 532/833/21 +f 546/845/15 554/857/24 555/846/16 +f 541/863/26 551/855/23 552/854/22 +f 543/865/28 549/852/21 550/851/20 +f 545/847/17 555/846/16 548/849/19 +f 539/868/31 553/862/25 554/857/24 +f 540/864/27 552/854/22 553/862/25 +f 542/866/29 550/851/20 551/855/23 +f 544/867/30 548/849/19 549/859/21 +f 563/871/15 571/883/24 572/872/16 +f 558/889/26 568/881/23 569/880/22 +f 560/891/28 566/878/21 567/877/20 +f 562/873/17 572/872/16 565/875/19 +f 556/894/31 570/888/25 571/883/24 +f 557/890/27 569/880/22 570/888/25 +f 559/892/29 567/877/20 568/881/23 +f 561/893/30 565/875/19 566/885/21 +o Frame +v -0.500000 0.000000 1.500000 +v 0.500000 0.000000 1.500000 +v -0.500000 0.000000 -1.500000 +v 0.500000 0.000000 -1.500000 +v -0.437500 0.125000 1.437500 +v 0.437500 0.125000 1.437500 +v -0.437500 0.125000 -1.437500 +v 0.437500 0.125000 -1.437500 +v -0.437500 0.875000 1.437500 +v 0.437500 0.875000 1.437500 +v -0.437500 0.875000 -1.437500 +v 0.437500 0.875000 -1.437500 +v -0.500000 1.000000 1.500000 +v 0.500000 1.000000 1.500000 +v -0.500000 1.000000 -1.500000 +v 0.500000 1.000000 -1.500000 +v -0.500000 0.125000 -1.500000 +v -0.500000 0.125000 1.500000 +v 0.500000 0.125000 1.500000 +v 0.500000 0.125000 -1.500000 +v -0.500000 0.875000 -1.500000 +v -0.500000 0.875000 1.500000 +v 0.500000 0.875000 1.500000 +v 0.500000 0.875000 -1.500000 +v 0.250000 1.000000 -0.750000 +v 0.250000 1.000000 0.750000 +v -0.250000 1.000000 0.750000 +v -0.250000 1.000000 -0.750000 +v -0.500000 1.500000 -1.500000 +v -0.500000 1.500000 1.500000 +v 0.500000 1.500000 1.500000 +v 0.500000 1.500000 -1.500000 +v -0.250000 1.500000 -0.750000 +v -0.250000 1.500000 0.750000 +v 0.250000 1.500000 0.750000 +v 0.250000 1.500000 -0.750000 +v 0.437500 1.500000 -1.437500 +v 0.437500 1.500000 -1.062500 +v -0.437500 1.500000 -1.062500 +v -0.437500 1.500000 -1.437500 +v 0.437500 1.000000 -1.437500 +v 0.437500 1.000000 -1.062500 +v -0.437500 1.000000 -1.062500 +v -0.437500 1.000000 -1.437500 +v -0.437500 1.000000 1.062500 +v -0.437500 1.000000 1.437500 +v 0.437500 1.000000 1.437500 +v 0.437500 1.000000 1.062500 +v -0.437500 1.500000 1.062500 +v -0.437500 1.500000 1.437500 +v 0.437500 1.500000 1.437500 +v 0.437500 1.500000 1.062500 +v -0.500000 1.750000 1.500000 +v -0.500000 2.000000 1.250000 +v 0.500000 2.000000 1.250000 +v 0.500000 1.750000 1.500000 +v -0.500000 2.000000 -1.250000 +v -0.500000 1.750000 -1.500000 +v 0.500000 1.750000 -1.500000 +v 0.500000 2.000000 -1.250000 +v 0.250000 0.875000 0.750000 +v 0.250000 0.875000 -0.750000 +v -0.250000 0.875000 0.750000 +v -0.250000 0.875000 -0.750000 +vt 0.438596 0.166667 +vt 0.017544 0.357143 +vt 0.017544 0.166667 +vt 0.421053 0.142857 +vt 0.017544 0.000000 +vt 0.421053 -0.000000 +vt 0.438596 0.142857 +vt 0.456140 0.357143 +vt 0.438596 0.357143 +vt 0.000000 0.166667 +vt 0.017544 0.380952 +vt 0.543860 0.142857 +vt 0.421053 -0.000000 +vt 0.543860 -0.000000 +vt 0.333333 0.833333 +vt 0.017544 0.785714 +vt 0.438596 0.785714 +vt 0.017544 1.000000 +vt 0.438596 0.976190 +vt 0.438596 1.000000 +vt 0.456140 0.976190 +vt 0.456140 0.785714 +vt -0.000000 0.785714 +vt 0.017544 0.976190 +vt -0.000000 0.976190 +vt 0.438596 0.761905 +vt 0.017544 0.761905 +vt 0.429825 0.559524 +vt 0.017544 0.571429 +vt 0.026316 0.559524 +vt 0.026316 0.392857 +vt 0.438596 0.380952 +vt 0.429825 0.392857 +vt 0.438596 0.571429 +vt 0.026316 0.583333 +vt 0.438596 0.571429 +vt 0.429825 0.583333 +vt 0.026316 0.750000 +vt 0.017544 0.571429 +vt 0.429825 0.750000 +vt 0.543860 0.142857 +vt 0.543860 -0.000000 +vt 0.421053 0.142857 +vt 0.017544 0.000000 +vt 0.543860 0.476190 +vt 0.508772 0.285714 +vt 0.543860 0.285714 +vt 0.964912 0.190476 +vt 0.859649 0.047619 +vt 0.964912 0.000000 +vt 0.578947 0.285714 +vt 0.929825 0.476190 +vt 0.578947 0.476190 +vt 0.096491 0.619048 +vt 0.114035 0.714286 +vt 0.096491 0.714286 +vt 0.543860 0.190476 +vt 0.929825 0.285714 +vt 0.964912 0.285714 +vt 1.000000 0.476190 +vt 0.964912 0.476190 +vt 0.543860 -0.000000 +vt 0.649123 0.142857 +vt 0.859649 0.142857 +vt 0.649123 0.047619 +vt 0.201754 0.392857 +vt 0.149123 0.488095 +vt 0.149123 0.392857 +vt 0.026316 0.488095 +vt 0.026316 0.392857 +vt 0.324561 0.392857 +vt 0.201754 0.488095 +vt 0.377193 0.392857 +vt 0.324561 0.488095 +vt 0.377193 0.392857 +vt 0.324561 0.488095 +vt 0.324561 0.392857 +vt 0.201754 0.488095 +vt 0.201754 0.392857 +vt 0.149123 0.392857 +vt 0.026316 0.488095 +vt 0.026316 0.392857 +vt 0.149123 0.488095 +vt 0.964912 0.571429 +vt 0.543860 0.571429 +vt 0.122807 0.833333 +vt 0.122807 0.928571 +vt 0.333333 0.928571 +vt 0.324561 0.714286 +vt 0.114035 0.619048 +vt 0.324561 0.619048 +vt 0.114035 0.738095 +vt 0.324561 0.738095 +vt 0.324561 0.595238 +vt 0.114035 0.595238 +vt 0.342105 0.714286 +vt 0.342105 0.619048 +vt 0.017544 0.142857 +vt 0.017544 0.142857 +vt 0.456140 0.166667 +vt 0.000000 0.357143 +vt 0.017544 0.142857 +vt 0.508772 0.476190 +vt 0.964912 0.238095 +vt 0.543860 0.238095 +vt 1.000000 0.285714 +vt 0.377193 0.488095 +vt 0.377193 0.488095 +vt 0.543860 0.523810 +vt 0.964912 0.523810 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 +s off +f 575/897/32 574/898/32 573/899/32 +f 584/900/33 578/901/33 580/902/33 +f 573/899/34 589/903/34 575/897/34 +f 575/897/35 592/904/35 576/905/35 +f 574/898/36 590/906/36 573/899/36 +f 576/905/33 591/907/33 574/898/33 +f 582/908/36 577/909/36 578/910/36 +f 597/911/37 586/912/37 588/913/37 +f 594/914/34 587/915/34 593/916/34 +f 593/917/35 588/913/35 596/918/35 +f 595/919/36 585/920/36 594/921/36 +f 596/922/33 586/912/33 595/923/33 +f 579/924/37 590/925/37 577/926/37 +f 577/926/37 591/907/37 578/927/37 +f 578/927/37 592/928/37 580/929/37 +f 580/929/37 589/930/37 579/924/37 +f 581/931/32 593/932/32 583/933/32 +f 582/934/32 594/935/32 581/931/32 +f 584/936/32 595/923/32 582/934/32 +f 583/933/32 596/922/32 584/936/32 +f 583/937/35 580/902/35 579/938/35 +f 581/939/34 579/940/34 577/909/34 +f 625/941/36 603/942/36 628/943/36 +f 604/944/32 605/945/32 601/946/32 +f 627/947/37 629/948/37 626/949/37 +f 600/950/36 634/951/36 597/952/36 +f 603/953/33 604/944/33 632/954/33 +f 631/955/35 601/956/35 630/957/35 +f 602/958/32 607/959/32 603/953/32 +f 603/953/32 608/960/32 604/944/32 +f 601/946/32 606/961/32 602/958/32 +f 613/962/33 610/963/33 614/964/33 +f 614/964/36 611/965/36 615/966/36 +f 616/967/35 609/968/35 613/962/35 +f 615/969/34 612/970/34 616/967/34 +f 618/971/34 621/972/34 617/973/34 +f 617/973/35 624/974/35 620/975/35 +f 619/976/36 622/977/36 618/978/36 +f 620/975/33 623/979/33 619/976/33 +f 628/943/38 626/949/38 625/941/38 +f 630/957/39 632/954/39 631/955/39 +f 601/980/34 602/981/34 626/949/34 +f 598/982/37 585/920/37 586/912/37 +f 599/983/37 587/915/37 585/920/37 +f 600/984/37 588/913/37 587/915/37 +f 633/985/37 636/986/37 635/987/37 +f 597/988/34 633/985/34 598/989/34 +f 599/990/33 636/986/33 600/991/33 +f 598/992/35 635/987/35 599/993/35 +f 575/897/32 576/905/32 574/898/32 +f 584/900/33 582/994/33 578/901/33 +f 573/899/34 590/995/34 589/903/34 +f 575/897/35 589/996/35 592/904/35 +f 574/898/36 591/997/36 590/906/36 +f 576/905/33 592/928/33 591/907/33 +f 582/908/36 581/939/36 577/909/36 +f 597/911/37 598/982/37 586/912/37 +f 594/914/34 585/920/34 587/915/34 +f 593/917/35 587/915/35 588/913/35 +f 595/919/36 586/912/36 585/920/36 +f 596/922/33 588/913/33 586/912/33 +f 579/924/37 589/930/37 590/925/37 +f 577/926/37 590/925/37 591/907/37 +f 578/927/37 591/907/37 592/928/37 +f 580/929/37 592/928/37 589/930/37 +f 581/931/32 594/935/32 593/932/32 +f 582/934/32 595/923/32 594/935/32 +f 584/936/32 596/922/32 595/923/32 +f 583/933/32 593/932/32 596/922/32 +f 583/937/35 584/900/35 580/902/35 +f 581/939/34 583/998/34 579/940/34 +f 625/941/36 602/999/36 603/942/36 +f 604/944/32 608/960/32 605/945/32 +f 627/947/37 632/954/37 629/948/37 +f 600/950/36 636/986/36 634/951/36 +f 604/944/33 631/1000/33 632/954/33 +f 632/954/33 627/947/33 603/953/33 +f 627/947/33 628/1001/33 603/953/33 +f 631/955/35 604/1002/35 601/956/35 +f 602/958/32 606/961/32 607/959/32 +f 603/953/32 607/959/32 608/960/32 +f 601/946/32 605/945/32 606/961/32 +f 613/962/33 609/968/33 610/963/33 +f 614/964/36 610/963/36 611/965/36 +f 616/967/35 612/970/35 609/968/35 +f 615/969/34 611/1003/34 612/970/34 +f 618/971/34 622/1004/34 621/972/34 +f 617/973/35 621/972/35 624/974/35 +f 619/976/36 623/979/36 622/977/36 +f 620/975/33 624/974/33 623/979/33 +f 628/943/38 627/947/38 626/949/38 +f 630/957/39 629/948/39 632/954/39 +f 602/981/34 625/1005/34 626/949/34 +f 626/949/34 629/948/34 601/980/34 +f 629/948/34 630/1006/34 601/980/34 +f 598/982/37 599/983/37 585/920/37 +f 599/983/37 600/984/37 587/915/37 +f 600/984/37 597/911/37 588/913/37 +f 633/985/37 634/951/37 636/986/37 +f 597/988/34 634/951/34 633/985/34 +f 599/990/33 635/987/33 636/986/33 +f 598/992/35 633/985/35 635/987/35 diff --git a/src/main/resources/assets/hbm/models/mine_ap.obj b/src/main/resources/assets/hbm/models/mine_ap.obj deleted file mode 100644 index 00709083c..000000000 --- a/src/main/resources/assets/hbm/models/mine_ap.obj +++ /dev/null @@ -1,209 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'mine_ap.blend' -# www.blender.org -o Sphere -v -0.023918 0.081742 0.000000 -v -0.044194 0.068194 0.000000 -v -0.057743 0.047918 0.000000 -v -0.062500 0.024000 0.000000 -v -0.057743 0.000082 0.000000 -v -0.016913 0.081742 -0.016912 -v -0.031250 0.068194 -0.031250 -v -0.040830 0.047918 -0.040830 -v -0.044194 0.024000 -0.044194 -v -0.040830 0.000082 -0.040830 -v -0.000000 0.081742 -0.023918 -v -0.000000 0.068194 -0.044194 -v -0.000000 0.047918 -0.057742 -v -0.000000 0.024000 -0.062500 -v -0.000000 0.000082 -0.057742 -v -0.000000 0.086500 0.000000 -v 0.016912 0.081742 -0.016912 -v 0.031250 0.068194 -0.031250 -v 0.040830 0.047918 -0.040830 -v 0.044194 0.024000 -0.044194 -v 0.040830 0.000082 -0.040830 -v 0.023918 0.081742 0.000000 -v 0.044194 0.068194 0.000000 -v 0.057742 0.047918 0.000000 -v 0.062500 0.024000 0.000000 -v 0.057742 0.000082 0.000000 -v 0.016912 0.081742 0.016912 -v 0.031250 0.068194 0.031250 -v 0.040830 0.047918 0.040830 -v 0.044194 0.024000 0.044194 -v 0.040830 0.000082 0.040830 -v -0.000000 0.081742 0.023918 -v -0.000000 0.068194 0.044194 -v -0.000000 0.047918 0.057742 -v -0.000000 0.024000 0.062500 -v -0.000000 0.000082 0.057742 -v -0.016913 0.081742 0.016912 -v -0.031250 0.068194 0.031250 -v -0.040830 0.047918 0.040830 -v -0.044194 0.024000 0.044194 -v -0.040830 0.000082 0.040830 -v -0.061524 0.148194 -0.061523 -v 0.061523 0.148194 -0.061523 -v 0.061523 0.148194 0.061523 -v -0.061524 0.148194 0.061523 -v -0.005980 0.081742 0.000000 -v -0.000000 0.081742 -0.005979 -v -0.000000 0.111500 0.000000 -v 0.005979 0.081742 0.000000 -v -0.000000 0.081742 0.005979 -v -0.000000 0.086500 0.000000 -vt 0.713388 0.422365 -vt 0.372492 0.422365 -vt 0.358449 0.234785 -vt 0.613541 0.784500 -vt 0.472338 0.784500 -vt 0.412485 0.606170 -vt 0.727431 0.234785 -vt 0.372492 0.047204 -vt 0.673395 0.606170 -vt 0.713387 0.047204 -vt 0.542940 0.958853 -vt 0.074879 0.038923 -vt 0.262088 0.020580 -vt 0.262088 0.720477 -vt 0.839131 0.569078 -vt 0.877120 0.614143 -vt 0.839131 0.803203 -vt 0.837838 0.803203 -vt 0.799848 0.614143 -vt 0.837838 0.569078 -vt 0.878413 0.569078 -vt 0.916403 0.614143 -vt 0.878413 0.803204 -vt 0.917696 0.614143 -vt 0.955685 0.569078 -vt 0.955685 0.803203 -vn -0.908700 0.180700 -0.376400 -vn -0.541400 0.810300 -0.224300 -vn -0.908700 -0.180700 -0.376400 -vn -0.786200 0.525300 -0.325600 -vn -0.376400 0.180700 -0.908700 -vn -0.224300 0.810300 -0.541400 -vn -0.376400 -0.180700 -0.908700 -vn -0.325600 0.525300 -0.786200 -vn 0.376400 -0.180700 -0.908700 -vn 0.325600 0.525300 -0.786200 -vn 0.376400 0.180700 -0.908700 -vn 0.224300 0.810300 -0.541400 -vn 0.786200 0.525300 -0.325600 -vn 0.908700 0.180700 -0.376400 -vn 0.541400 0.810300 -0.224300 -vn 0.908700 -0.180700 -0.376400 -vn 0.908700 0.180700 0.376400 -vn 0.541400 0.810300 0.224300 -vn 0.908700 -0.180700 0.376400 -vn 0.786200 0.525300 0.325600 -vn 0.224300 0.810300 0.541400 -vn 0.376400 -0.180700 0.908700 -vn 0.325600 0.525300 0.786200 -vn 0.376400 0.180700 0.908700 -vn -0.376400 -0.180700 0.908700 -vn -0.325600 0.525300 0.786200 -vn -0.376400 0.180700 0.908700 -vn -0.224300 0.810300 0.541400 -vn -0.194500 0.977600 -0.080500 -vn -0.080500 0.977600 -0.194500 -vn 0.080500 0.977600 -0.194500 -vn 0.194500 0.977600 -0.080500 -vn 0.194500 0.977600 0.080500 -vn 0.080500 0.977600 0.194500 -vn -0.080500 0.977600 0.194500 -vn -0.194500 0.977600 0.080500 -vn -0.908700 0.180700 0.376400 -vn -0.541400 0.810300 0.224300 -vn -0.908700 -0.180700 0.376400 -vn -0.786200 0.525300 0.325600 -vn -0.707100 0.000000 0.707100 -vn 0.707100 0.000000 0.707100 -vn 0.707100 0.000000 -0.707100 -vn -0.707100 0.000000 -0.707100 -vn -1.000000 0.000000 -0.000000 -vn 0.000000 0.000000 1.000000 -vn 1.000000 0.000000 -0.000000 -vn 0.000000 0.000000 -1.000000 -s off -f 3/1/1 8/2/1 9/3/1 -f 1/4/2 6/5/2 7/6/2 -f 4/7/3 9/3/3 10/8/3 -f 2/9/4 7/6/4 8/2/4 -f 8/1/5 13/2/5 14/3/5 -f 6/4/6 11/5/6 12/6/6 -f 9/7/7 14/3/7 15/8/7 -f 7/9/8 12/6/8 13/2/8 -f 14/7/9 20/3/9 21/8/9 -f 12/9/10 18/6/10 19/2/10 -f 13/1/11 19/2/11 20/3/11 -f 11/4/12 17/5/12 18/6/12 -f 18/9/13 23/6/13 24/2/13 -f 19/1/14 24/2/14 25/3/14 -f 17/4/15 22/5/15 23/6/15 -f 20/7/16 25/3/16 26/8/16 -f 25/7/17 24/1/17 29/2/17 -f 23/9/18 22/4/18 27/5/18 -f 25/7/19 30/3/19 31/8/19 -f 23/9/20 28/6/20 29/2/20 -f 28/9/21 27/4/21 32/5/21 -f 31/10/22 30/7/22 35/3/22 -f 29/1/23 28/9/23 33/6/23 -f 29/1/24 34/2/24 35/3/24 -f 35/7/25 40/3/25 41/8/25 -f 33/9/26 38/6/26 39/2/26 -f 35/7/27 34/1/27 39/2/27 -f 32/4/28 37/5/28 38/6/28 -f 1/4/29 16/11/29 6/5/29 -f 6/4/30 16/11/30 11/5/30 -f 11/4/31 16/11/31 17/5/31 -f 17/4/32 16/11/32 22/5/32 -f 22/4/33 16/11/33 27/5/33 -f 27/4/34 16/11/34 32/5/34 -f 32/4/35 16/11/35 37/5/35 -f 37/4/36 16/11/36 1/5/36 -f 39/1/37 3/2/37 4/3/37 -f 37/4/38 1/5/38 2/6/38 -f 40/7/39 4/3/39 5/8/39 -f 39/1/40 38/9/40 2/6/40 -f 27/12/41 28/13/41 44/14/41 -f 17/12/42 18/13/42 43/14/42 -f 6/12/43 7/13/43 42/14/43 -f 37/12/44 38/13/44 45/14/44 -f 47/15/45 51/16/45 48/17/45 -f 48/18/46 51/19/46 49/20/46 -f 50/21/47 51/22/47 48/23/47 -f 51/24/48 46/25/48 48/26/48 -f 4/7/1 3/1/1 9/3/1 -f 2/9/2 1/4/2 7/6/2 -f 5/10/3 4/7/3 10/8/3 -f 3/1/4 2/9/4 8/2/4 -f 9/7/5 8/1/5 14/3/5 -f 7/9/6 6/4/6 12/6/6 -f 10/10/7 9/7/7 15/8/7 -f 8/1/8 7/9/8 13/2/8 -f 15/10/9 14/7/9 21/8/9 -f 13/1/10 12/9/10 19/2/10 -f 14/7/11 13/1/11 20/3/11 -f 12/9/12 11/4/12 18/6/12 -f 19/1/13 18/9/13 24/2/13 -f 20/7/14 19/1/14 25/3/14 -f 18/9/15 17/4/15 23/6/15 -f 21/10/16 20/7/16 26/8/16 -f 30/3/17 25/7/17 29/2/17 -f 28/6/18 23/9/18 27/5/18 -f 26/10/19 25/7/19 31/8/19 -f 24/1/20 23/9/20 29/2/20 -f 33/6/21 28/9/21 32/5/21 -f 36/8/22 31/10/22 35/3/22 -f 34/2/23 29/1/23 33/6/23 -f 30/7/24 29/1/24 35/3/24 -f 36/10/25 35/7/25 41/8/25 -f 34/1/26 33/9/26 39/2/26 -f 40/3/27 35/7/27 39/2/27 -f 33/9/28 32/4/28 38/6/28 -f 40/7/37 39/1/37 4/3/37 -f 38/9/38 37/4/38 2/6/38 -f 41/10/39 40/7/39 5/8/39 -f 3/2/40 39/1/40 2/6/40 diff --git a/src/main/resources/assets/hbm/models/mine_he.obj b/src/main/resources/assets/hbm/models/mine_he.obj deleted file mode 100644 index d26f0d488..000000000 --- a/src/main/resources/assets/hbm/models/mine_he.obj +++ /dev/null @@ -1,376 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'mine_he.blend' -# www.blender.org -o Cylinder -v 0.000000 0.000000 -0.250000 -v 0.000000 0.125000 -0.250000 -v 0.125000 0.000000 -0.216506 -v 0.125000 0.125000 -0.216506 -v 0.216506 0.000000 -0.125000 -v 0.216506 0.125000 -0.125000 -v 0.250000 0.000000 0.000000 -v 0.250000 0.125000 0.000000 -v 0.216506 0.000000 0.125000 -v 0.216506 0.125000 0.125000 -v 0.125000 0.000000 0.216506 -v 0.125000 0.125000 0.216506 -v 0.000000 0.000000 0.250000 -v 0.000000 0.125000 0.250000 -v -0.125000 0.000000 0.216506 -v -0.125000 0.125000 0.216506 -v -0.216506 0.000000 0.125000 -v -0.216506 0.125000 0.125000 -v -0.250000 0.000000 0.000000 -v -0.250000 0.125000 0.000000 -v -0.216506 0.000000 -0.125000 -v -0.216506 0.125000 -0.125000 -v -0.125000 0.000000 -0.216506 -v -0.125000 0.125000 -0.216506 -v 0.100000 0.125000 -0.173205 -v -0.000000 0.125000 -0.200000 -v 0.173205 0.125000 -0.100000 -v 0.200000 0.125000 0.000000 -v 0.173205 0.125000 0.100000 -v 0.100000 0.125000 0.173205 -v 0.000000 0.125000 0.200000 -v -0.100000 0.125000 0.173205 -v -0.173205 0.125000 0.100000 -v -0.200000 0.125000 0.000000 -v -0.173205 0.125000 -0.100000 -v -0.100000 0.125000 -0.173205 -v 0.100000 0.110000 -0.173205 -v -0.000000 0.110000 -0.200000 -v 0.173205 0.110000 -0.100000 -v 0.200000 0.110000 0.000000 -v 0.173205 0.110000 0.100000 -v 0.100000 0.110000 0.173205 -v 0.000000 0.110000 0.200000 -v -0.100000 0.110000 0.173205 -v -0.173205 0.110000 0.100000 -v -0.200000 0.110000 0.000000 -v -0.173205 0.110000 -0.100000 -v -0.100000 0.110000 -0.173205 -v 0.070000 0.110000 -0.121244 -v -0.000000 0.110000 -0.140000 -v 0.121244 0.110000 -0.070000 -v 0.140000 0.110000 0.000000 -v 0.121244 0.110000 0.070000 -v 0.070000 0.110000 0.121244 -v 0.000000 0.110000 0.140000 -v -0.070000 0.110000 0.121244 -v -0.121244 0.110000 0.070000 -v -0.140000 0.110000 0.000000 -v -0.121244 0.110000 -0.070000 -v -0.070000 0.110000 -0.121244 -v 0.070000 0.125000 -0.121244 -v -0.000000 0.125000 -0.140000 -v 0.121244 0.125000 -0.070000 -v 0.140000 0.125000 0.000000 -v 0.121244 0.125000 0.070000 -v 0.070000 0.125000 0.121244 -v 0.000000 0.125000 0.140000 -v -0.070000 0.125000 0.121244 -v -0.121244 0.125000 0.070000 -v -0.140000 0.125000 0.000000 -v -0.121244 0.125000 -0.070000 -v -0.070000 0.125000 -0.121244 -v 0.035000 0.125000 -0.060622 -v -0.000000 0.125000 -0.070000 -v 0.060622 0.125000 -0.035000 -v 0.070000 0.125000 0.000000 -v 0.060622 0.125000 0.035000 -v 0.035000 0.125000 0.060622 -v 0.000000 0.125000 0.070000 -v -0.035000 0.125000 0.060622 -v -0.060622 0.125000 0.035000 -v -0.070000 0.125000 0.000000 -v -0.060622 0.125000 -0.035000 -v -0.035000 0.125000 -0.060622 -v 0.021000 0.150000 -0.036373 -v -0.000000 0.150000 -0.042000 -v 0.036373 0.150000 -0.021000 -v 0.042000 0.150000 0.000000 -v 0.036373 0.150000 0.021000 -v 0.021000 0.150000 0.036373 -v 0.000000 0.150000 0.042000 -v -0.021000 0.150000 0.036373 -v -0.036373 0.150000 0.021000 -v -0.042000 0.150000 0.000000 -v -0.036373 0.150000 -0.021000 -v -0.021000 0.150000 -0.036373 -vt 0.960752 0.210383 -vt 0.779713 0.210383 -vt 0.779713 0.035513 -vt 0.942646 0.277949 -vt 0.694075 0.517821 -vt 0.018428 0.336781 -vt 0.265732 0.089478 -vt 0.942648 0.298932 -vt 0.797817 0.298932 -vt 0.797814 0.277947 -vt 0.920923 0.380009 -vt 0.819542 0.380009 -vt 0.920923 0.400994 -vt 0.819542 0.400994 -vt 0.895578 0.495584 -vt 0.844887 0.495584 -vt 0.762072 0.729031 -vt 0.791336 0.772633 -vt 0.769830 0.794139 -vt 0.761958 0.823517 -vt 0.879471 0.823517 -vt 0.850093 0.874402 -vt 0.915201 0.764875 -vt 0.871599 0.794139 -vt 0.850093 0.772633 -vt 0.879357 0.918004 -vt 0.871599 0.852895 -vt 0.709566 0.819974 -vt 0.722685 0.771011 -vt 0.873221 0.725488 -vt 0.820715 0.764761 -vt 0.931864 0.827060 -vt 0.918744 0.876024 -vt 0.709566 0.827060 -vt 0.769830 0.852895 -vt 0.768208 0.921547 -vt 0.791336 0.874402 -vt 0.820715 0.882274 -vt 0.817172 0.712368 -vt 0.918744 0.771011 -vt 0.931864 0.819974 -vt 0.762072 0.918004 -vt 0.726228 0.882160 -vt 0.824257 0.934666 -vt 0.960752 0.035512 -vt 0.446771 0.089478 -vt 0.603555 0.179997 -vt 0.694075 0.336782 -vt 0.603555 0.674605 -vt 0.446771 0.765124 -vt 0.265732 0.765124 -vt 0.108948 0.674605 -vt 0.018428 0.517820 -vt 0.108948 0.179997 -vt 0.726228 0.764875 -vt 0.879357 0.729031 -vt 0.915201 0.882160 -vt 0.824257 0.712368 -vt 0.722685 0.876024 -vt 0.817172 0.934666 -vt 0.768208 0.725488 -vt 0.873221 0.921547 -vn 0.258800 0.000000 -0.965900 -vn 0.707100 0.000000 -0.707100 -vn 0.965900 0.000000 -0.258800 -vn 0.965900 0.000000 0.258800 -vn 0.707100 0.000000 0.707100 -vn 0.258800 0.000000 0.965900 -vn -0.258800 0.000000 0.965900 -vn -0.707100 0.000000 0.707100 -vn -0.965900 0.000000 0.258800 -vn -0.965900 0.000000 -0.258800 -vn 0.000000 1.000000 0.000000 -vn -0.258800 0.000000 -0.965900 -vn -0.707100 0.000000 -0.707100 -vn 0.000000 -1.000000 0.000000 -vn -0.655700 0.734300 0.175700 -vn 0.175700 0.734300 0.655700 -vn 0.655700 0.734300 -0.175700 -vn -0.655700 0.734300 -0.175700 -vn -0.175700 0.734300 0.655700 -vn 0.655700 0.734300 0.175700 -vn -0.480000 0.734300 -0.480000 -vn 0.175700 0.734300 -0.655700 -vn -0.480000 0.734300 0.480000 -vn 0.480000 0.734300 0.480000 -vn -0.175700 0.734300 -0.655700 -vn 0.480000 0.734300 -0.480000 -s off -f 2/1/1 4/2/1 3/3/1 -f 4/1/2 6/2/2 5/3/2 -f 6/1/3 8/2/3 7/3/3 -f 8/1/4 10/2/4 9/3/4 -f 10/1/5 12/2/5 11/3/5 -f 12/1/6 14/2/6 13/3/6 -f 14/1/7 16/2/7 15/3/7 -f 16/1/8 18/2/8 17/3/8 -f 18/1/9 20/2/9 19/3/9 -f 20/1/10 22/2/10 21/3/10 -f 10/2/11 8/1/11 28/4/11 -f 24/1/12 2/2/12 1/3/12 -f 22/1/13 24/2/13 23/3/13 -f 7/5/14 19/6/14 23/7/14 -f 27/4/9 39/8/9 40/9/9 -f 24/1/11 36/4/11 26/10/11 -f 2/1/11 26/4/11 25/10/11 -f 8/2/11 6/1/11 27/4/11 -f 22/1/11 35/4/11 36/10/11 -f 4/1/11 25/4/11 27/10/11 -f 20/1/11 34/4/11 35/10/11 -f 18/1/11 33/4/11 34/10/11 -f 16/1/11 32/4/11 33/10/11 -f 14/1/11 31/4/11 32/10/11 -f 14/2/11 12/1/11 30/4/11 -f 12/2/11 10/1/11 29/4/11 -f 39/8/11 51/11/11 52/12/11 -f 34/4/4 46/8/4 47/9/4 -f 31/4/1 43/8/1 44/9/1 -f 28/4/10 40/8/10 41/9/10 -f 35/4/5 47/8/5 48/9/5 -f 26/4/7 38/8/7 37/9/7 -f 32/4/2 44/8/2 45/9/2 -f 29/4/13 41/8/13 42/9/13 -f 36/4/6 48/8/6 38/9/6 -f 25/4/8 37/8/8 39/9/8 -f 33/4/3 45/8/3 46/9/3 -f 30/4/12 42/8/12 43/9/12 -f 54/11/6 66/13/6 67/14/6 -f 46/8/11 58/11/11 59/12/11 -f 43/8/11 55/11/11 56/12/11 -f 40/8/11 52/11/11 53/12/11 -f 47/8/11 59/11/11 60/12/11 -f 37/9/11 38/8/11 50/11/11 -f 44/8/11 56/11/11 57/12/11 -f 42/9/11 41/8/11 53/11/11 -f 38/9/11 48/8/11 60/11/11 -f 37/8/11 49/11/11 51/12/11 -f 45/8/11 57/11/11 58/12/11 -f 42/8/11 54/11/11 55/12/11 -f 66/13/11 78/15/11 79/16/11 -f 51/11/3 63/13/3 64/14/3 -f 58/11/10 70/13/10 71/14/10 -f 55/11/7 67/13/7 68/14/7 -f 52/11/4 64/13/4 65/14/4 -f 59/11/13 71/13/13 72/14/13 -f 50/11/1 62/13/1 61/14/1 -f 56/11/8 68/13/8 69/14/8 -f 53/11/5 65/13/5 66/14/5 -f 60/11/12 72/13/12 62/14/12 -f 49/11/2 61/13/2 63/14/2 -f 57/11/9 69/13/9 70/14/9 -f 81/17/15 93/18/15 94/19/15 -f 63/13/11 75/15/11 76/16/11 -f 70/13/11 82/15/11 83/16/11 -f 67/13/11 79/15/11 80/16/11 -f 64/13/11 76/15/11 77/16/11 -f 71/13/11 83/15/11 84/16/11 -f 62/13/11 74/15/11 73/16/11 -f 68/13/11 80/15/11 81/16/11 -f 66/14/11 65/13/11 77/15/11 -f 62/14/11 72/13/11 84/15/11 -f 61/13/11 73/15/11 75/16/11 -f 69/13/11 81/15/11 82/16/11 -f 95/20/11 89/21/11 87/22/11 -f 78/23/16 90/24/16 91/25/16 -f 75/26/17 87/22/17 88/27/17 -f 83/28/18 82/29/18 94/19/18 -f 79/30/19 91/25/19 92/31/19 -f 77/32/20 76/33/20 88/27/20 -f 83/34/21 95/20/21 96/35/21 -f 74/36/22 86/37/22 85/38/22 -f 80/39/23 92/31/23 93/18/23 -f 78/40/24 77/41/24 89/21/24 -f 74/42/25 84/43/25 96/35/25 -f 73/44/26 85/38/26 87/22/26 -f 1/45/1 2/1/1 3/3/1 -f 3/45/2 4/1/2 5/3/2 -f 5/45/3 6/1/3 7/3/3 -f 7/45/4 8/1/4 9/3/4 -f 9/45/5 10/1/5 11/3/5 -f 11/45/6 12/1/6 13/3/6 -f 13/45/7 14/1/7 15/3/7 -f 15/45/8 16/1/8 17/3/8 -f 17/45/9 18/1/9 19/3/9 -f 19/45/10 20/1/10 21/3/10 -f 29/10/11 10/2/11 28/4/11 -f 23/45/12 24/1/12 1/3/12 -f 21/45/13 22/1/13 23/3/13 -f 23/7/14 1/46/14 3/47/14 -f 3/47/14 5/48/14 7/5/14 -f 7/5/14 9/49/14 11/50/14 -f 11/50/14 13/51/14 15/52/14 -f 15/52/14 17/53/14 19/6/14 -f 19/6/14 21/54/14 23/7/14 -f 23/7/14 3/47/14 7/5/14 -f 7/5/14 11/50/14 15/52/14 -f 15/52/14 19/6/14 7/5/14 -f 28/10/9 27/4/9 40/9/9 -f 2/2/11 24/1/11 26/10/11 -f 4/2/11 2/1/11 25/10/11 -f 28/10/11 8/2/11 27/4/11 -f 24/2/11 22/1/11 36/10/11 -f 6/2/11 4/1/11 27/10/11 -f 22/2/11 20/1/11 35/10/11 -f 20/2/11 18/1/11 34/10/11 -f 18/2/11 16/1/11 33/10/11 -f 16/2/11 14/1/11 32/10/11 -f 31/10/11 14/2/11 30/4/11 -f 30/10/11 12/2/11 29/4/11 -f 40/9/11 39/8/11 52/12/11 -f 35/10/4 34/4/4 47/9/4 -f 32/10/1 31/4/1 44/9/1 -f 29/10/10 28/4/10 41/9/10 -f 36/10/5 35/4/5 48/9/5 -f 25/10/7 26/4/7 37/9/7 -f 33/10/2 32/4/2 45/9/2 -f 30/10/13 29/4/13 42/9/13 -f 26/10/6 36/4/6 38/9/6 -f 27/10/8 25/4/8 39/9/8 -f 34/10/3 33/4/3 46/9/3 -f 31/10/12 30/4/12 43/9/12 -f 55/12/6 54/11/6 67/14/6 -f 47/9/11 46/8/11 59/12/11 -f 44/9/11 43/8/11 56/12/11 -f 41/9/11 40/8/11 53/12/11 -f 48/9/11 47/8/11 60/12/11 -f 49/12/11 37/9/11 50/11/11 -f 45/9/11 44/8/11 57/12/11 -f 54/12/11 42/9/11 53/11/11 -f 50/12/11 38/9/11 60/11/11 -f 39/9/11 37/8/11 51/12/11 -f 46/9/11 45/8/11 58/12/11 -f 43/9/11 42/8/11 55/12/11 -f 67/14/11 66/13/11 79/16/11 -f 52/12/3 51/11/3 64/14/3 -f 59/12/10 58/11/10 71/14/10 -f 56/12/7 55/11/7 68/14/7 -f 53/12/4 52/11/4 65/14/4 -f 60/12/13 59/11/13 72/14/13 -f 49/12/1 50/11/1 61/14/1 -f 57/12/8 56/11/8 69/14/8 -f 54/12/5 53/11/5 66/14/5 -f 50/12/12 60/11/12 62/14/12 -f 51/12/2 49/11/2 63/14/2 -f 58/12/9 57/11/9 70/14/9 -f 82/55/15 81/17/15 94/19/15 -f 64/14/11 63/13/11 76/16/11 -f 71/14/11 70/13/11 83/16/11 -f 68/14/11 67/13/11 80/16/11 -f 65/14/11 64/13/11 77/16/11 -f 72/14/11 71/13/11 84/16/11 -f 61/14/11 62/13/11 73/16/11 -f 69/14/11 68/13/11 81/16/11 -f 78/16/11 66/14/11 77/15/11 -f 74/16/11 62/14/11 84/15/11 -f 63/14/11 61/13/11 75/16/11 -f 70/14/11 69/13/11 82/16/11 -f 87/22/11 85/38/11 95/20/11 -f 86/37/11 96/35/11 95/20/11 -f 95/20/11 94/19/11 93/18/11 -f 93/18/11 92/31/11 95/20/11 -f 91/25/11 90/24/11 89/21/11 -f 89/21/11 88/27/11 87/22/11 -f 85/38/11 86/37/11 95/20/11 -f 95/20/11 92/31/11 91/25/11 -f 91/25/11 89/21/11 95/20/11 -f 79/56/16 78/23/16 91/25/16 -f 76/57/17 75/26/17 88/27/17 -f 95/20/18 83/28/18 94/19/18 -f 80/58/19 79/30/19 92/31/19 -f 89/21/20 77/32/20 88/27/20 -f 84/59/21 83/34/21 96/35/21 -f 73/60/22 74/36/22 85/38/22 -f 81/61/23 80/39/23 93/18/23 -f 90/24/24 78/40/24 89/21/24 -f 86/37/25 74/42/25 96/35/25 -f 75/62/26 73/44/26 87/22/26 diff --git a/src/main/resources/assets/hbm/models/weapons/animations/lag.json b/src/main/resources/assets/hbm/models/weapons/animations/lag.json new file mode 100644 index 000000000..332c4fb73 --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/animations/lag.json @@ -0,0 +1 @@ +{"anim": {"Dryfire": {"Grip": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 194.44444974263507, 0.0, "AUTO_CLAMPED"], [0.0, 583.3333333333334, "BEZIER", "AUTO", 388.8888676961263, 0.0, "AUTO_CLAMPED", 644.444465637207, 0.0, "AUTO_CLAMPED"], [0.07023310661315918, 183.33333333333326, "BEZIER", "AUTO", 705.555534362793, 0.07023310661315918, "AUTO_CLAMPED", 777.7777989705403, 0.07023310661315918, "AUTO_CLAMPED"], [0.07023310661315918, 33.33333333333337, "BEZIER", "AUTO", 788.8888676961263, 0.07023310661315918, "AUTO_CLAMPED", 850.0, 0.07023310661315918, "AUTO_CLAMPED"], [-0.005564689636230469, 150.0, "BEZIER", "AUTO", 900.0, -0.005564689636230469, "AUTO_CLAMPED", 977.7777989705404, -0.005564689636230469, "AUTO_CLAMPED"], [0.0, 83.33333333333326, "BEZIER", "AUTO", 1005.5555343627929, 0.0, "AUTO_CLAMPED", 1061.1111323038738, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 194.44444974263507, -0.0, "AUTO_CLAMPED"], [-0.0, 583.3333333333334, "BEZIER", "AUTO", 388.8888676961263, -0.0, "AUTO_CLAMPED", 644.444465637207, -0.0, "AUTO_CLAMPED"], [-0.0, 183.33333333333326, "BEZIER", "AUTO", 705.555534362793, -0.0, "AUTO_CLAMPED", 777.7777989705403, -0.0, "AUTO_CLAMPED"], [-0.0, 33.33333333333337, "BEZIER", "AUTO", 788.8888676961263, -0.0, "AUTO_CLAMPED", 850.0, -0.0, "AUTO_CLAMPED"], [-0.0, 150.0, "BEZIER", "AUTO", 900.0, -0.0, "AUTO_CLAMPED", 977.7777989705404, -0.0, "AUTO_CLAMPED"], [-0.0, 83.33333333333326, "BEZIER", "AUTO", 1005.5555343627929, -0.0, "AUTO_CLAMPED", 1061.1111323038738, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 194.44444974263507, 0.0, "AUTO_CLAMPED"], [0.0, 583.3333333333334, "BEZIER", "AUTO", 388.8888676961263, 0.0, "AUTO_CLAMPED", 644.444465637207, 0.0, "AUTO_CLAMPED"], [0.17485475540161133, 183.33333333333326, "BEZIER", "AUTO", 705.555534362793, 0.17485475540161133, "AUTO_CLAMPED", 777.7777989705403, 0.17485475540161133, "AUTO_CLAMPED"], [0.17485475540161133, 33.33333333333337, "BEZIER", "AUTO", 788.8888676961263, 0.17485475540161133, "AUTO_CLAMPED", 850.0, 0.17485475540161133, "AUTO_CLAMPED"], [-0.016497015953063965, 150.0, "BEZIER", "AUTO", 900.0, -0.016497015953063965, "AUTO_CLAMPED", 977.7777989705404, -0.016497015953063965, "AUTO_CLAMPED"], [0.0, 83.33333333333326, "BEZIER", "AUTO", 1005.5555343627929, 0.0, "AUTO_CLAMPED", 1061.1111323038738, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 172.22221692403158, 0.0, "AUTO_CLAMPED"], [0.0, 516.6666666666666, "BEZIER", "AUTO", 344.44446563720703, 0.0, "AUTO_CLAMPED", 583.3333333333334, 0.0, "AUTO_CLAMPED"], [-2.1999998762362876, 200.0, "BEZIER", "AUTO", 650.0, -2.1999998762362876, "AUTO_CLAMPED", 744.444465637207, -2.1999998762362876, "AUTO_CLAMPED"], [-2.1999998762362876, 83.33333333333337, "BEZIER", "AUTO", 772.2222010294596, -2.1999998762362876, "AUTO_CLAMPED", 877.7777989705403, -2.1999998762362876, "AUTO_CLAMPED"], [0.0, 233.33333333333326, "BEZIER", "AUTO", 955.555534362793, 0.0, "AUTO_CLAMPED", 1111.111068725586, 0.0, "AUTO_CLAMPED"]], "z": [[0.0, 0.0, "BEZIER", "AUTO", 194.44444974263507, 0.0, "AUTO_CLAMPED"], [0.0, 583.3333333333334, "BEZIER", "AUTO", 388.8888676961263, 0.0, "AUTO_CLAMPED", 644.444465637207, 0.0, "AUTO_CLAMPED"], [-2.575079927950949, 183.33333333333326, "BEZIER", "AUTO", 705.555534362793, -2.575079927950949, "AUTO_CLAMPED", 777.7777989705403, -2.575079927950949, "AUTO_CLAMPED"], [-2.575079927950949, 33.33333333333337, "BEZIER", "AUTO", 788.8888676961263, -2.575079927950949, "AUTO_CLAMPED", 850.0, -2.575079927950949, "AUTO_CLAMPED"], [0.2377203317919303, 150.0, "BEZIER", "AUTO", 900.0, 0.2377203317919303, "AUTO_CLAMPED", 977.7777989705404, 0.2377203317919303, "AUTO_CLAMPED"], [-0.0, 83.33333333333326, "BEZIER", "AUTO", 1005.5555343627929, -0.0, "AUTO_CLAMPED", 1061.1111323038738, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 194.44444974263507, 0.0, "AUTO_CLAMPED"], [0.0, 583.3333333333334, "BEZIER", "AUTO", 388.8888676961263, 0.0, "AUTO_CLAMPED", 644.444465637207, 0.0, "AUTO_CLAMPED"], [0.0, 183.33333333333326, "BEZIER", "AUTO", 705.555534362793, 0.0, "AUTO_CLAMPED", 777.7777989705403, 0.0, "AUTO_CLAMPED"], [0.0, 33.33333333333337, "BEZIER", "AUTO", 788.8888676961263, 0.0, "AUTO_CLAMPED", 877.7777989705403, 0.0, "AUTO_CLAMPED"], [0.0, 233.33333333333326, "BEZIER", "AUTO", 955.555534362793, 0.0, "AUTO_CLAMPED", 1111.111068725586, 0.0, "AUTO_CLAMPED"]]}}, "Hammer": {"location": {"x": [[3.125, 0.0, "BEZIER", "AUTO", 16.666666666666668, 3.125, "AUTO_CLAMPED"]], "z": [[1.862645149230957e-08, 0.0, "BEZIER", "AUTO", 16.666666666666668, 1.862645149230957e-08, "AUTO_CLAMPED"]], "y": [[0.125, 0.0, "BEZIER", "AUTO", 16.666666666666668, 0.125, "AUTO_CLAMPED"]]}, "rotation_euler": {"z": [[-0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, -0.0, "AUTO_CLAMPED"], [25.00000012650595, 33.333333333333336, "BEZIER", "AUTO", 22.22222089767456, 25.00000012650595, "AUTO_CLAMPED", 216.66666666666669, 25.00000012650595, "AUTO_CLAMPED"], [25.00000012650595, 550.0, "BEZIER", "AUTO", 400.0, 25.00000012650595, "AUTO_CLAMPED", 627.7777989705403, 25.00000012650595, "AUTO_CLAMPED"], [-60.000001669652114, 133.33333333333326, "BEZIER", "AUTO", 672.2222010294596, -60.000001669652114, "AUTO_CLAMPED", 733.3333333333333, -60.000001669652114, "AUTO_CLAMPED"], [-60.000001669652114, 50.0, "BEZIER", "AUTO", 750.0, -60.000001669652114, "AUTO_CLAMPED", 783.3333333333334, -60.000001669652114, "AUTO_CLAMPED"], [-0.0, 50.0, "BEZIER", "AUTO", 800.0, -0.0, "AUTO_CLAMPED", 833.3333333333334, -0.0, "AUTO_CLAMPED"]], "x": [[0.0, 583.3333333333334, "BEZIER", "AUTO", 627.7777989705403, 0.0, "AUTO_CLAMPED"], [0.0, 133.33333333333326, "BEZIER", "AUTO", 672.2222010294596, 0.0, "AUTO_CLAMPED", 733.3333333333333, 0.0, "AUTO_CLAMPED"], [0.0, 50.0, "BEZIER", "AUTO", 750.0, 0.0, "AUTO_CLAMPED", 783.3333333333334, 0.0, "AUTO_CLAMPED"]], "y": [[0.0, 583.3333333333334, "BEZIER", "AUTO", 627.7777989705403, 0.0, "AUTO_CLAMPED"], [0.0, 133.33333333333326, "BEZIER", "AUTO", 672.2222010294596, 0.0, "AUTO_CLAMPED", 733.3333333333333, 0.0, "AUTO_CLAMPED"], [0.0, 50.0, "BEZIER", "AUTO", 750.0, 0.0, "AUTO_CLAMPED", 783.3333333333334, 0.0, "AUTO_CLAMPED"]]}}}, "Firing": {"Bullet": {"location": {"x": [[1.59375, 0.0, "BEZIER", "AUTO", 11.111111442248026, 1.59375, "AUTO_CLAMPED"], [1.59375, 33.333333333333336, "QUAD", "EASE_OUT", 22.22222089767456, 1.59375, "AUTO_CLAMPED"], [0.90625, 66.66666666666666, "SINE", "EASE_IN"], [-0.5937501192092896, 100.0, "BEZIER", "AUTO", 233.33333333333334, -0.5937501192092896, "AUTO_CLAMPED"]], "y": [[0.5625, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.5625, "AUTO_CLAMPED"], [0.5625, 33.333333333333336, "QUAD", "AUTO", 22.22222089767456, 0.5625, "AUTO_CLAMPED"], [0.875, 66.66666666666666, "SINE", "AUTO"], [0.9999978542327881, 66.66666666666666, "BEZIER", "AUTO", 188.88888359069824, 0.9999978542327881, "AUTO_CLAMPED"]]}, "rotation_euler": {"z": [[-19.99999941818584, 0.0, "BEZIER", "AUTO", 11.111111442248026, -19.99999941818584, "AUTO_CLAMPED"], [-19.99999941818584, 33.333333333333336, "QUAD", "AUTO", 22.22222089767456, -19.99999941818584, "AUTO_CLAMPED"], [-7.500000208706514, 66.66666666666666, "SINE", "AUTO"], [-0.0, 66.66666666666666, "BEZIER", "AUTO", 188.88888359069824, -0.0, "AUTO_CLAMPED"]]}}, "Grip": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.0, "AUTO_CLAMPED"], [0.0, 33.333333333333336, "QUAD", "EASE_OUT", 22.22222089767456, 0.0, "AUTO_CLAMPED"], [0.5237600207328796, 49.99999999999999, "BEZIER", "AUTO", 108.33333333333334, 0.5237600207328796, "ALIGNED"], [0.3084455132484436, 50.000000000000014, "BEZIER", "AUTO", 116.66666666666667, 0.43553054332733154, "AUTO_CLAMPED", 161.11111640930176, 0.09663715958595276, "AUTO_CLAMPED"], [-0.04659605026245117, 83.33333333333334, "BEZIER", "AUTO", 188.88888359069824, -0.04659605026245117, "AUTO_CLAMPED", 233.33333333333334, -0.04659605026245117, "AUTO_CLAMPED"], [0.0, 50.0, "BEZIER", "AUTO", 250.0, 0.0, "AUTO_CLAMPED", 283.3333333333333, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, -0.0, "AUTO_CLAMPED"], [-0.0, 33.333333333333336, "QUAD", "EASE_OUT", 22.22222089767456, -0.0, "AUTO_CLAMPED"], [6.210800052031118e-08, 49.99999999999999, "BEZIER", "AUTO", 100.0, 6.210800052031118e-08, "AUTO_CLAMPED"], [6.210800052031118e-08, 50.000000000000014, "BEZIER", "AUTO", 116.66666666666667, 6.210800052031118e-08, "AUTO_CLAMPED", 161.11111640930176, 6.210800052031118e-08, "AUTO_CLAMPED"], [-1.2910305713376147e-08, 83.33333333333334, "BEZIER", "AUTO", 188.88888359069824, -1.2910305713376147e-08, "AUTO_CLAMPED", 233.33333333333334, -1.2910305713376147e-08, "AUTO_CLAMPED"], [-1.063667554035419e-08, 50.0, "BEZIER", "AUTO", 250.0, -1.063667554035419e-08, "AUTO_CLAMPED", 283.3333333333333, -1.063667554035419e-08, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.0, "AUTO_CLAMPED"], [0.0, 33.333333333333336, "QUAD", "EASE_OUT", 22.22222089767456, 0.0, "AUTO_CLAMPED"], [0.431023508310318, 49.99999999999999, "BEZIER", "AUTO", 108.33333333333334, 0.431023508310318, "ALIGNED"], [0.2511425018310547, 50.000000000000014, "BEZIER", "AUTO", 116.66666666666667, 0.3581860363483429, "AUTO_CLAMPED", 161.11111640930176, 0.07273662090301514, "AUTO_CLAMPED"], [-0.05201435089111328, 83.33333333333334, "BEZIER", "AUTO", 188.88888359069824, -0.05201435089111328, "AUTO_CLAMPED", 233.33333333333334, -0.05201435089111328, "AUTO_CLAMPED"], [0.0, 50.0, "BEZIER", "AUTO", 250.0, 0.0, "AUTO_CLAMPED", 283.3333333333333, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"z": [[0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.0, "AUTO_CLAMPED"], [0.0, 33.333333333333336, "QUAD", "EASE_OUT", 22.22222089767456, 0.0, "AUTO_CLAMPED"], [-2.49999992727323, 49.99999999999999, "BEZIER", "AUTO", 100.0, -2.49999992727323, "AUTO_CLAMPED"], [-1.2580600137440534, 50.000000000000014, "BEZIER", "AUTO", 116.67113304138184, -4.465294226503781, "ALIGNED", 161.0812822977702, 4.083021345262861, "ALIGNED"], [1.3109028394749147, 83.33333333333334, "BACK", "EASE_OUT", 188.88888359069824, 1.3109028394749147, "ALIGNED", 3.6015799045562744], [-0.0, 216.66666666666669, "BEZIER", "AUTO", 505.5555661519369, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.0, "AUTO_CLAMPED"], [0.0, 33.333333333333336, "QUAD", "EASE_OUT", 22.22222089767456, 0.0, "AUTO_CLAMPED"], [0.6000007957649733, 49.99999999999999, "BEZIER", "AUTO", 100.0, 0.6000007957649733, "AUTO_CLAMPED"], [-0.4999999961268166, 50.000000000000014, "BEZIER", "AUTO", 116.66666666666667, -0.4999999961268166, "AUTO_CLAMPED", 233.33333333333334, -0.4999999961268166, "AUTO_CLAMPED"], [0.0, 300.0, "BEZIER", "AUTO", 333.3333333333333, 0.0, "AUTO_CLAMPED", 533.3333333333334, 0.0, "AUTO_CLAMPED"]]}}, "Hammer": {"rotation_euler": {"z": [[-0.0, 0.0, "BEZIER", "AUTO", 44.444445768992104, -0.0, "ALIGNED"], [25.00000012650595, 33.333333333333336, "BEZIER", "AUTO", 22.22222089767456, 25.00000012650595, "AUTO_CLAMPED", 55.55555820465088, 25.00000012650595, "AUTO_CLAMPED"], [-45.00000125223908, 66.66666666666666, "BEZIER", "AUTO", 77.77777512868245, -45.00000125223908, "AUTO_CLAMPED", 133.33333333333334, -45.00000125223908, "AUTO_CLAMPED"], [-0.0, 100.0, "BEZIER", "AUTO", 166.66666666666666, -0.0, "AUTO_CLAMPED", 233.33333333333334, -0.0, "AUTO_CLAMPED"]]}, "location": {"x": [[3.125, 0.0, "BEZIER", "AUTO", 16.666666666666668, 3.125, "AUTO_CLAMPED"]], "z": [[1.862645149230957e-08, 0.0, "BEZIER", "AUTO", 16.666666666666668, 1.862645149230957e-08, "AUTO_CLAMPED"]], "y": [[0.125, 0.0, "BEZIER", "AUTO", 16.666666666666668, 0.125, "AUTO_CLAMPED"]]}}, "Slide": {"location": {"x": [[-3.25, 0.0, "SINE", "EASE_OUT"], [-3.25, 33.333333333333336, "QUAD", "EASE_OUT"], [-1.75, 66.66666666666666, "SINE", "EASE_IN"], [-3.25, 100.0, "SINE", "EASE_OUT"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 16.666666666666668, -0.0, "AUTO_CLAMPED"]], "y": [[0.75, 0.0, "BEZIER", "AUTO", 16.666666666666668, 0.75, "AUTO_CLAMPED"]]}}}, "Inspect": {"Bullet": {"location": {"x": [[1.59375, 0.0, "CONSTANT", "AUTO"], [-0.59375, 16.666666666666668, "BEZIER", "AUTO", 944.4444656372069, -0.59375, "AUTO_CLAMPED"], [-0.59375, 2783.3333333333335, "BEZIER", "AUTO", 1872.2221374511719, -0.59375, "AUTO_CLAMPED", 3727.777862548828, -0.59375, "AUTO_CLAMPED"]], "y": [[0.5625, 0.0, "CONSTANT", "AUTO"], [1.0, 16.666666666666668, "BEZIER", "AUTO", 944.4444656372069, 1.0, "AUTO_CLAMPED"], [1.0, 2783.3333333333335, "BEZIER", "AUTO", 1872.2221374511719, 1.0, "AUTO_CLAMPED", 3727.777862548828, 1.0, "AUTO_CLAMPED"]]}}, "Grip": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.0, "AUTO_CLAMPED"], [0.0, 33.333333333333336, "BEZIER", "EASE_IN", 22.22222089767456, 0.0, "AUTO_CLAMPED", 116.66666666666667, 0.0, "AUTO_CLAMPED"], [-1.71687650680542, 249.99999999999997, "BEZIER", "AUTO", 200.0, -1.71687650680542, "AUTO_CLAMPED", 383.3333333333333, -1.71687650680542, "AUTO_CLAMPED"], [0.5513148307800293, 300.00000000000006, "BEZIER", "AUTO", 483.3333333333333, -0.29949963092803955, "AUTO_CLAMPED", 683.3333333333334, 1.4021292924880981, "AUTO_CLAMPED"], [1.6863813400268555, 299.9999999999999, "BEZIER", "AUTO", 783.3333333333334, 1.6863813400268555, "AUTO_CLAMPED", 1322.2222646077473, 1.6863813400268555, "AUTO_CLAMPED"], [1.0514655113220215, 1316.6666666666667, "BEZIER", "AUTO", 1761.111068725586, 1.6863813400268555, "AUTO_CLAMPED", 2344.4445292154946, 0.8425058722496033, "AUTO_CLAMPED"], [-1.970992922782898, 433.3333333333335, "BEZIER", "AUTO", 2488.8888041178384, -1.970992922782898, "AUTO_CLAMPED", 2688.8888041178384, -1.970992922782898, "AUTO_CLAMPED"], [0.0, 166.66666666666652, "BEZIER", "EASE_IN", 2744.4445292154946, 0.0, "AUTO_CLAMPED", 2855.555470784505, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, -0.0, "AUTO_CLAMPED"], [-0.0, 33.333333333333336, "BEZIER", "EASE_IN_OUT", 22.22222089767456, -0.0, "AUTO_CLAMPED", 116.66666666666667, -0.0, "AUTO_CLAMPED"], [2.112370729446411, 249.99999999999997, "BEZIER", "AUTO", 200.0, 1.0917030572891235, "AUTO_CLAMPED", 361.11110051472986, 3.0649938583374023, "AUTO_CLAMPED"], [3.955737590789795, 233.33333333333331, "BEZIER", "AUTO", 438.88889948527014, 3.955737590789795, "AUTO_CLAMPED", 538.8888676961263, 3.955737590789795, "AUTO_CLAMPED"], [3.7618730068206787, 66.66666666666674, "BEZIER", "AUTO", 561.1111323038737, 3.8623299598693848, "AUTO_CLAMPED", 683.3333333333334, 3.309816360473633, "AUTO_CLAMPED"], [2.715005397796631, 299.9999999999999, "BEZIER", "AUTO", 783.3333333333334, 2.715005397796631, "AUTO_CLAMPED", 1322.2222646077473, 2.715005397796631, "AUTO_CLAMPED"], [4.174439907073975, 1316.6666666666667, "BEZIER", "AUTO", 1761.111068725586, 2.715005397796631, "AUTO_CLAMPED", 2277.777862548828, 4.433073997497559, "AUTO_CLAMPED"], [5.207278251647949, 233.33333333333303, "BEZIER", "AUTO", 2355.555470784505, 5.207278251647949, "AUTO_CLAMPED", 2555.5554707845054, 5.207278251647949, "AUTO_CLAMPED"], [-0.0, 366.66666666666697, "BEZIER", "EASE_IN_OUT", 2677.777862548828, -0.0, "AUTO_CLAMPED", 2922.222137451172, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.0, "AUTO_CLAMPED"], [0.0, 33.333333333333336, "BEZIER", "EASE_IN_OUT", 22.22222089767456, 0.0, "AUTO_CLAMPED", 216.66666666666669, 0.0, "AUTO_CLAMPED"], [0.9560011625289917, 550.0, "BEZIER", "AUTO", 400.0, 0.6512281894683838, "AUTO_CLAMPED", 683.3333333333334, 1.1222410202026367, "AUTO_CLAMPED"], [1.235924243927002, 299.9999999999999, "BEZIER", "AUTO", 783.3333333333334, 1.1854032278060913, "AUTO_CLAMPED", 1072.2222646077473, 1.331352949142456, "AUTO_CLAMPED"], [1.3816792964935303, 566.6666666666667, "BEZIER", "AUTO", 1261.111068725586, 1.3816792964935303, "AUTO_CLAMPED", 1700.0, 1.3816792964935303, "AUTO_CLAMPED"], [0.991679310798645, 750.0, "BEZIER", "AUTO", 1950.0, 0.991679310798645, "AUTO_CLAMPED", 2277.777862548828, 0.991679310798645, "AUTO_CLAMPED"], [0.991679310798645, 233.33333333333303, "BEZIER", "AUTO", 2355.555470784505, 0.991679310798645, "AUTO_CLAMPED", 2555.5554707845054, 0.991679310798645, "AUTO_CLAMPED"], [0.0, 366.66666666666697, "BEZIER", "EASE_IN_OUT", 2677.777862548828, 0.0, "AUTO_CLAMPED", 2922.222137451172, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.0, "AUTO_CLAMPED"], [0.0, 33.333333333333336, "BEZIER", "EASE_IN_OUT", 22.22222089767456, 0.0, "AUTO_CLAMPED", 216.66666666666669, 0.0, "AUTO_CLAMPED"], [5.020503228661193, 550.0, "BEZIER", "AUTO", 400.0, 3.059422302374893, "AUTO_CLAMPED", 683.3333333333334, 6.090183850331944, "AUTO_CLAMPED"], [7.589897451014929, 299.9999999999999, "BEZIER", "AUTO", 783.3333333333334, 6.833084743334013, "AUTO_CLAMPED", 1322.2222646077473, 10.911463694395382, "AUTO_CLAMPED"], [14.500997041935651, 1316.6666666666667, "BEZIER", "AUTO", 1761.111068725586, 14.500997041935651, "AUTO_CLAMPED", 2238.8888041178384, 14.500997041935651, "AUTO_CLAMPED"], [14.500997041935651, 116.66666666666652, "BEZIER", "AUTO", 2277.777862548828, 14.500997041935651, "AUTO_CLAMPED", 2477.777862548828, 14.500997041935651, "AUTO_CLAMPED"], [0.0, 483.3333333333335, "BEZIER", "EASE_IN_OUT", 2638.888804117839, 0.0, "AUTO_CLAMPED", 2961.1111958821616, 0.0, "AUTO_CLAMPED"]], "z": [[0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.0, "AUTO_CLAMPED"], [0.0, 33.333333333333336, "BEZIER", "EASE_IN_OUT", 22.22222089767456, 0.0, "AUTO_CLAMPED", 216.66666666666669, 0.0, "AUTO_CLAMPED"], [-2.5185520017194545, 550.0, "BEZIER", "AUTO", 400.0, -1.7974633178318207, "AUTO_CLAMPED", 683.3333333333334, -2.9118731408296927, "AUTO_CLAMPED"], [-2.9849506154201286, 299.9999999999999, "BEZIER", "AUTO", 783.3333333333334, -2.9849506154201286, "AUTO_CLAMPED", 1322.2222646077473, -2.9849506154201286, "AUTO_CLAMPED"], [-2.6852116056755273, 1316.6666666666667, "BEZIER", "AUTO", 1761.111068725586, -2.6852116056755273, "AUTO_CLAMPED", 2238.8888041178384, -2.6852116056755273, "AUTO_CLAMPED"], [-2.6852116056755273, 116.66666666666652, "BEZIER", "AUTO", 2277.777862548828, -2.6852116056755273, "AUTO_CLAMPED", 2477.777862548828, -2.6852116056755273, "AUTO_CLAMPED"], [0.0, 483.3333333333335, "BEZIER", "EASE_IN_OUT", 2638.888804117839, 0.0, "AUTO_CLAMPED", 2961.1111958821616, 0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.0, "AUTO_CLAMPED"], [0.0, 33.333333333333336, "BEZIER", "EASE_IN_OUT", 22.22222089767456, 0.0, "AUTO_CLAMPED", 216.66666666666669, 0.0, "AUTO_CLAMPED"], [133.86457701475643, 550.0, "BEZIER", "AUTO", 400.0, 95.5376944872819, "AUTO_CLAMPED", 683.3333333333334, 154.77014681876466, "AUTO_CLAMPED"], [158.65432513558918, 299.9999999999999, "BEZIER", "AUTO", 783.3333333333334, 158.65432513558918, "AUTO_CLAMPED", 983.3333333333333, 158.65432513558918, "AUTO_CLAMPED"], [157.74876499505052, 300.0, "BEZIER", "AUTO", 1083.3333333333333, 158.02887105291276, "AUTO_CLAMPED", 1333.3333333333333, 157.32859907806804, "AUTO_CLAMPED"], [157.32859907806804, 450.0, "BEZIER", "AUTO", 1483.3333333333335, 157.32859907806804, "AUTO_CLAMPED", 1822.2222646077473, 157.32859907806804, "AUTO_CLAMPED"], [155.08037401086662, 566.6666666666667, "BEZIER", "AUTO", 2011.1110687255857, 157.32859907806804, "AUTO_CLAMPED", 2277.777862548828, 154.1546374915198, "AUTO_CLAMPED"], [108.19301732112919, 233.33333333333303, "BEZIER", "AUTO", 2355.555470784505, 135.62436159403188, "AUTO_CLAMPED", 2555.5554707845054, 65.08662112947903, "AUTO_CLAMPED"], [0.0, 366.66666666666697, "BEZIER", "EASE_IN_OUT", 2677.777862548828, 0.0, "AUTO_CLAMPED", 2922.222137451172, 0.0, "AUTO_CLAMPED"]]}}}, "Jam": {"Grip": {"location": {"x": [[0.0, 0.0, "BEZIER", "EASE_IN_OUT", 16.666666666666668, 0.0, "AUTO_CLAMPED"], [0.0, 50.0, "QUAD", "EASE_IN_OUT", 33.333333333333336, 0.0, "AUTO_CLAMPED"], [0.7684813737869263, 250.0, "BACK", "EASE_OUT", 1.7015800476074219], [-0.07987856864929199, 300.0, "SINE", "AUTO"], [-0.07659769058227539, 366.66666666666663, "BEZIER", "AUTO", 1044.444465637207, -0.07659769058227539, "AUTO_CLAMPED"], [-0.07659769058227539, 233.33333333333337, "QUAD", "EASE_OUT", 1122.2222646077473, -0.07659769058227539, "AUTO_CLAMPED"], [0.34417805075645447, 200.0, "QUAD", "EASE_IN"], [0.27417799830436707, 316.6666666666665, "BEZIER", "AUTO", 1733.3333333333335, 0.27417799830436707, "AUTO_CLAMPED"], [0.27417805790901184, 50.0, "QUAD", "EASE_IN", 1750.0, 0.27417805790901184, "AUTO_CLAMPED"], [-0.016215801239013672, 166.66666666666674, "BACK", "AUTO", 1.7015800476074219], [0.0, 266.66666666666674, "BEZIER", "EASE_IN_OUT", 2288.8888041178384, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "EASE_IN_OUT", 16.666666666666668, -0.0, "AUTO_CLAMPED"], [-0.0, 50.0, "QUAD", "EASE_IN_OUT", 33.333333333333336, -0.0, "AUTO_CLAMPED"], [-0.172386035323143, 250.0, "BACK", "EASE_OUT", 1.7015800476074219], [-0.04781261831521988, 183.33333333333331, "BEZIER", "AUTO", 522.2222328186035, -0.04781261831521988, "AUTO_CLAMPED"], [-0.04781261831521988, 116.66666666666669, "SINE", "AUTO", 561.1111323038737, -0.04781261831521988, "AUTO_CLAMPED"], [-0.25952833890914917, 366.66666666666663, "BEZIER", "AUTO", 1044.444465637207, -0.25952833890914917, "AUTO_CLAMPED"], [-0.25952833890914917, 233.33333333333337, "QUAD", "EASE_OUT", 1122.2222646077473, -0.25952833890914917, "AUTO_CLAMPED"], [-1.6563783884048462, 200.0, "QUAD", "EASE_IN"], [-0.9063783884048462, 316.6666666666665, "BEZIER", "AUTO", 1733.3333333333335, -0.9063783884048462, "AUTO_CLAMPED"], [-0.9063783884048462, 50.0, "QUAD", "EASE_IN", 1750.0, -0.9063783884048462, "AUTO_CLAMPED"], [-0.19053393602371216, 166.66666666666674, "BACK", "AUTO", 1.7015800476074219], [-0.0, 266.66666666666674, "BEZIER", "EASE_IN_OUT", 2288.8888041178384, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "EASE_IN_OUT", 16.666666666666668, 0.0, "AUTO_CLAMPED"], [0.0, 50.0, "QUAD", "EASE_IN_OUT", 33.333333333333336, 0.0, "AUTO_CLAMPED"], [1.9825199842453003, 250.0, "BACK", "EASE_OUT", 1.7015800476074219], [0.699442982673645, 300.0, "SINE", "AUTO"], [0.6867120265960693, 366.66666666666663, "BEZIER", "AUTO", 1044.444465637207, 0.6867120265960693, "AUTO_CLAMPED"], [0.6867120265960693, 233.33333333333337, "QUAD", "EASE_OUT", 1122.2222646077473, 0.6867120265960693, "AUTO_CLAMPED"], [0.8148880004882812, 200.0, "QUAD", "EASE_IN"], [1.2448880672454834, 316.6666666666665, "BEZIER", "AUTO", 1733.3333333333335, 1.2448880672454834, "AUTO_CLAMPED"], [1.2448880672454834, 50.0, "QUAD", "EASE_IN", 1750.0, 1.2448880672454834, "AUTO_CLAMPED"], [0.44753724336624146, 166.66666666666674, "BACK", "AUTO", 1.7015800476074219], [0.0, 266.66666666666674, "BEZIER", "EASE_IN_OUT", 2288.8888041178384, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "EASE_IN_OUT", 16.666666666666668, 0.0, "AUTO_CLAMPED"], [0.0, 50.0, "QUAD", "EASE_IN_OUT", 33.333333333333336, 0.0, "AUTO_CLAMPED"], [-2.9187993795349088, 250.0, "BACK", "EASE_OUT", 1.7015800476074219], [-0.4350010878597721, 183.33333333333331, "BEZIER", "AUTO", 522.2222328186035, -0.4350010878597721, "AUTO_CLAMPED"], [-0.4350010878597721, 116.66666666666669, "SINE", "AUTO", 561.1111323038737, -0.4350010878597721, "AUTO_CLAMPED"], [-2.977798553585479, 366.66666666666663, "BEZIER", "AUTO", 1044.444465637207, -2.977798553585479, "AUTO_CLAMPED"], [-2.977798553585479, 233.33333333333337, "QUAD", "EASE_OUT", 1122.2222646077473, -2.977798553585479, "AUTO_CLAMPED"], [-3.8259987654743424, 200.0, "QUAD", "EASE_IN"], [-2.426001230918489, 316.6666666666665, "BEZIER", "AUTO", 1733.3333333333335, -2.426001230918489, "AUTO_CLAMPED"], [-2.426001230918489, 50.0, "QUAD", "EASE_IN", 1750.0, -2.426001230918489, "AUTO_CLAMPED"], [-0.46099678784084064, 166.66666666666674, "BACK", "AUTO", 1.7015800476074219], [0.0, 266.66666666666674, "BEZIER", "EASE_IN_OUT", 2288.8888041178384, 0.0, "AUTO_CLAMPED"]], "z": [[0.0, 0.0, "BEZIER", "EASE_IN_OUT", 16.666666666666668, 0.0, "AUTO_CLAMPED"], [0.0, 50.0, "QUAD", "EASE_IN_OUT", 33.333333333333336, 0.0, "AUTO_CLAMPED"], [-9.06172296242993, 250.0, "BACK", "EASE_OUT", 1.7015800476074219], [0.7263285595589442, 300.0, "SINE", "AUTO"], [0.9408103199582433, 366.66666666666663, "BEZIER", "AUTO", 1044.444465637207, 0.9408103199582433, "AUTO_CLAMPED"], [0.9408103199582433, 233.33333333333337, "QUAD", "EASE_OUT", 1122.2222646077473, 0.9408103199582433, "AUTO_CLAMPED"], [-1.024439796486114, 200.0, "QUAD", "EASE_IN"], [-7.224439641736934, 316.6666666666665, "BEZIER", "AUTO", 1733.3333333333335, -7.224439641736934, "AUTO_CLAMPED"], [-7.224439641736934, 50.0, "QUAD", "EASE_IN", 1750.0, -7.224439641736934, "AUTO_CLAMPED"], [-0.6818431639686808, 166.66666666666674, "BACK", "AUTO", 1.7015800476074219], [0.0, 266.66666666666674, "BEZIER", "EASE_IN_OUT", 2288.8888041178384, 0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "EASE_IN_OUT", 16.666666666666668, 0.0, "AUTO_CLAMPED"], [0.0, 50.0, "QUAD", "EASE_IN_OUT", 33.333333333333336, 0.0, "AUTO_CLAMPED"], [-0.3186239491911578, 250.0, "BACK", "EASE_OUT", 1.7015800476074219], [-0.04786912399892983, 183.33333333333331, "BEZIER", "AUTO", 522.2222328186035, -0.04786912399892983, "AUTO_CLAMPED"], [-0.04786912399892983, 116.66666666666669, "SINE", "AUTO", 561.1111323038737, -0.04786912399892983, "AUTO_CLAMPED"], [-3.0794514052291326, 366.66666666666663, "BEZIER", "AUTO", 1044.444465637207, -3.0794514052291326, "AUTO_CLAMPED"], [-3.0794514052291326, 233.33333333333337, "QUAD", "EASE_OUT", 1122.2222646077473, -3.0794514052291326, "AUTO_CLAMPED"], [-6.585746518014926, 200.0, "QUAD", "EASE_IN"], [-3.3857467562467116, 316.6666666666665, "BEZIER", "AUTO", 1733.3333333333335, -3.3857467562467116, "AUTO_CLAMPED"], [-3.3857467562467116, 50.0, "QUAD", "EASE_IN", 1750.0, -3.3857467562467116, "AUTO_CLAMPED"], [-0.7094660497977991, 166.66666666666674, "BACK", "AUTO", 1.7015800476074219], [0.0, 266.66666666666674, "BEZIER", "EASE_IN_OUT", 2288.8888041178384, 0.0, "AUTO_CLAMPED"]]}}, "Magazine": {"location": {"x": [[2.125, 0.0, "BEZIER", "AUTO", 111.11110846201579, 2.125, "AUTO_CLAMPED"], [2.125, 333.3333333333333, "BEZIER", "EASE_OUT", 222.22223281860352, 2.125, "AUTO_CLAMPED", 400.0, 2.125, "AUTO_CLAMPED"], [3.215369939804077, 200.00000000000006, "BEZIER", "AUTO", 466.6666666666667, 3.0801353454589844, "AUTO_CLAMPED", 588.8888676961262, 3.3280653953552246, "AUTO_CLAMPED"], [3.3280653953552246, 166.66666666666663, "BEZIER", "EASE_IN_OUT", 655.555534362793, 3.3280653953552246, "ALIGNED", 811.1111323038737, 3.3280653953552246, "ALIGNED"], [2.663938045501709, 300.0, "CUBIC", "EASE_IN", 900.0, 2.8518593311309814, "AUTO_CLAMPED"], [2.5386571884155273, 200.0, "QUAD", "EASE_IN_OUT"], [3.517561435699463, 500.0, "QUAD", "AUTO"], [3.215369939804077, 116.66666666666674, "BEZIER", "EASE_IN", 1861.111068725586, 2.8700082302093506, "AUTO_CLAMPED"], [2.125, 133.33333333333326, "BEZIER", "AUTO", 1905.5555979410808, 2.125, "AUTO_CLAMPED", 1994.4444020589192, 2.125, "AUTO_CLAMPED"]], "z": [[-2.443810274144198e-07, 0.0, "BEZIER", "AUTO", 194.44444974263507, -2.443810274144198e-07, "AUTO_CLAMPED"], [-2.443810274144198e-07, 583.3333333333334, "BEZIER", "AUTO", 388.8888676961263, -2.443810274144198e-07, "AUTO_CLAMPED", 722.2222010294597, -2.443810274144198e-07, "AUTO_CLAMPED"], [4.639456748962402, 416.66666666666663, "CUBIC", "EASE_IN", 861.1111323038737, 4.639456748962402, "AUTO_CLAMPED"], [1.1628408432006836, 200.0, "QUAD", "EASE_IN_OUT"], [1.921958327293396, 200.0, "QUAD", "AUTO"], [-0.0, 300.0, "QUAD", "EASE_IN_OUT"], [-2.443810274144198e-07, 116.66666666666674, "BEZIER", "AUTO", 1861.111068725586, -2.443810274144198e-07, "AUTO_CLAMPED"], [-2.443810274144198e-07, 133.33333333333326, "BEZIER", "AUTO", 1905.5555979410808, -2.443810274144198e-07, "AUTO_CLAMPED", 1994.4444020589192, -2.443810274144198e-07, "AUTO_CLAMPED"]], "y": [[-1.5, 0.0, "BEZIER", "AUTO", 111.11110846201579, -1.5, "AUTO_CLAMPED"], [-1.5, 333.3333333333333, "BEZIER", "EASE_OUT", 222.22223281860352, -1.5, "AUTO_CLAMPED", 400.0, -1.5, "AUTO_CLAMPED"], [-5.614299774169922, 200.00000000000006, "BEZIER", "AUTO", 466.6666666666667, -5.13734769821167, "AUTO_CLAMPED", 588.8888676961262, -6.0117597579956055, "AUTO_CLAMPED"], [-6.0117597579956055, 166.66666666666663, "BEZIER", "EASE_IN_OUT", 655.555534362793, -6.0117597579956055, "ALIGNED", 811.1111323038737, -6.0117597579956055, "ALIGNED"], [-2.2079570293426514, 300.0, "CUBIC", "EASE_IN", 900.0, -2.2079570293426514, "AUTO_CLAMPED"], [-3.1993041038513184, 200.0, "QUAD", "EASE_IN_OUT"], [-6.543550491333008, 500.0, "QUAD", "AUTO"], [-5.614299774169922, 116.66666666666674, "BEZIER", "EASE_IN", 1861.111068725586, -4.5522990226745605, "AUTO_CLAMPED"], [-1.5, 133.33333333333326, "BEZIER", "AUTO", 1905.5555979410808, -1.5, "AUTO_CLAMPED", 1994.4444020589192, -1.5, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 177.77778307596842, 0.0, "AUTO_CLAMPED"], [0.0, 533.3333333333334, "BEZIER", "AUTO", 366.6665395100911, 0.0, "ALIGNED", 616.6666666666667, 0.0, "ALIGNED"], [7.889100717796508, 216.66666666666663, "BEZIER", "EASE_IN", 677.7777989705404, 7.889100717796508, "AUTO_CLAMPED", 833.3333333333334, 7.889100717796508, "AUTO_CLAMPED"], [7.889100717796508, 250.0, "CUBIC", "EASE_IN", 916.6666666666666, 7.889100717796508, "AUTO_CLAMPED"], [-9.461601510030203, 200.0, "QUAD", "EASE_IN_OUT"], [0.09899676183016481, 166.66666666666674, "QUAD", "AUTO"], [0.0, 333.33333333333326, "QUAD", "AUTO"], [0.0, 116.66666666666674, "BEZIER", "AUTO", 1861.111068725586, 0.0, "AUTO_CLAMPED"], [0.0, 133.33333333333326, "BEZIER", "AUTO", 1905.5555979410808, 0.0, "AUTO_CLAMPED", 1994.4444020589192, 0.0, "AUTO_CLAMPED"]], "z": [[0.0, 0.0, "BEZIER", "AUTO", 177.77778307596842, 0.0, "AUTO_CLAMPED"], [-0.0, 533.3333333333334, "BEZIER", "AUTO", 355.55553436279297, -0.0, "AUTO_CLAMPED", 588.8888676961262, -0.0, "AUTO_CLAMPED"], [-0.051977426088786305, 166.66666666666663, "BEZIER", "EASE_IN_OUT", 655.555534362793, -0.015593215153433329, "ALIGNED", 811.1111323038737, -0.1429379300817956, "ALIGNED"], [-3.0519773961795793, 300.0, "CUBIC", "EASE_IN", 900.0, -3.0519773961795793, "AUTO_CLAMPED"], [-2.346791954000674, 200.0, "QUAD", "EASE_IN_OUT"], [-3.453324221007995, 166.66666666666674, "QUAD", "AUTO"], [-0.0, 333.33333333333326, "BEZIER", "AUTO", 1783.3333333333333, -0.0, "AUTO_CLAMPED"], [0.0, 250.0, "BEZIER", "AUTO", 1866.6666666666667, 0.0, "AUTO_CLAMPED", 2033.3333333333333, 0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 177.77778307596842, 0.0, "AUTO_CLAMPED"], [0.0, 533.3333333333334, "BEZIER", "AUTO", 355.55553436279297, 0.0, "AUTO_CLAMPED", 588.8888676961262, 0.0, "AUTO_CLAMPED"], [-0.0825022485208741, 166.66666666666663, "BEZIER", "EASE_IN_OUT", 655.555534362793, -0.0825022485208741, "ALIGNED", 811.1111323038737, -0.0825022485208741, "ALIGNED"], [-0.0825022485208741, 300.0, "CUBIC", "EASE_IN", 900.0, -0.0825022485208741, "AUTO_CLAMPED"], [-1.7667953415716402, 200.0, "QUAD", "EASE_IN_OUT"], [-1.1941604991291164, 166.66666666666674, "QUAD", "AUTO"], [0.0, 333.33333333333326, "BEZIER", "AUTO", 1783.3333333333333, 0.0, "AUTO_CLAMPED"], [0.0, 250.0, "BEZIER", "AUTO", 1866.6666666666667, 0.0, "AUTO_CLAMPED", 2033.3333333333333, 0.0, "AUTO_CLAMPED"]]}}}, "Reload": {"Bullet": {"location": {"x": [[1.59375, 0.0, "BEZIER", "AUTO", 666.6666666666666, 1.59375, "AUTO_CLAMPED"], [1.59375, 2000.0, "BEZIER", "AUTO", 1333.3333333333333, 1.59375, "AUTO_CLAMPED", 2066.6666666666665, 1.59375, "AUTO_CLAMPED"], [0.90625, 200.0, "LINEAR", "AUTO", 2133.3333333333335, 0.90625, "AUTO_CLAMPED"], [0.90625, 133.33333333333348, "LINEAR", "AUTO"], [-0.5937501192092896, 99.99999999999955, "BEZIER", "AUTO", 2466.666666666667, -0.5937501192092896, "AUTO_CLAMPED"]], "y": [[0.5625, 0.0, "BEZIER", "AUTO", 666.6666666666666, 0.5625, "AUTO_CLAMPED"], [0.5625, 2000.0, "BEZIER", "AUTO", 1333.3333333333333, 0.5625, "AUTO_CLAMPED", 2066.6666666666665, 0.5625, "AUTO_CLAMPED"], [0.875, 200.0, "BEZIER", "AUTO", 2133.3333333333335, 0.875, "AUTO_CLAMPED", 2244.4445292154946, 0.875, "AUTO_CLAMPED"], [0.875, 133.33333333333348, "SINE", "EASE_OUT", 2288.8888041178384, 0.875, "AUTO_CLAMPED"], [0.9999978542327881, 33.33333333333303, "BEZIER", "AUTO", 2377.777862548828, 0.9999978542327881, "AUTO_CLAMPED"]]}, "rotation_euler": {"z": [[0.0, 0.0, "CONSTANT", "AUTO"], [-19.99999941818584, 2000.0, "BEZIER", "AUTO", 2066.6666666666665, -19.99999941818584, "AUTO_CLAMPED"], [-7.500000208706514, 200.0, "BEZIER", "AUTO", 2133.3333333333335, -7.500000208706514, "AUTO_CLAMPED", 2244.4445292154946, -7.500000208706514, "AUTO_CLAMPED"], [-7.500000208706514, 133.33333333333348, "SINE", "EASE_OUT", 2288.8888041178384, -7.500000208706514, "AUTO_CLAMPED"], [-0.0, 33.33333333333303, "BEZIER", "AUTO", 2377.777862548828, -0.0, "AUTO_CLAMPED"]]}}, "Grip": {"location": {"x": [[0.0, 0.0, "BEZIER", "EASE_IN_OUT", 5.555555721124013, 0.0, "AUTO_CLAMPED"], [0.0, 16.666666666666668, "QUAD", "EASE_IN_OUT", 11.11111044883728, 0.0, "AUTO_CLAMPED"], [-0.5098327398300171, 283.3333333333333, "BACK", "EASE_OUT", 1.7015800476074219], [0.23206636309623718, 233.33333333333337, "BEZIER", "EASE_IN_OUT", 733.3333333333333, 0.23206636309623718, "AUTO_CLAMPED"], [0.23206636309623718, 599.9999999999999, "BEZIER", "EASE_IN", 933.3333333333334, 0.23206636309623718, "AUTO_CLAMPED", 1266.6666666666665, 0.23206636309623718, "AUTO_CLAMPED"], [0.38155651092529297, 400.0, "BACK", "AUTO", 1483.3333333333335, 0.38155651092529297, "ALIGNED", 1.7015800476074219], [0.3984723687171936, 266.66666666666674, "LINEAR", "AUTO"], [0.3984723687171936, 166.66666666666652, "BEZIER", "AUTO", 2011.1111958821612, 0.3984723687171936, "ALIGNED"], [0.0, 633.3333333333335, "QUAD", "EASE_IN_OUT", 2388.888804117839, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "EASE_IN_OUT", 5.555555721124013, -0.0, "AUTO_CLAMPED"], [-0.0, 16.666666666666668, "QUAD", "EASE_IN_OUT", 11.11111044883728, -0.0, "AUTO_CLAMPED"], [-1.590022325515747, 283.3333333333333, "BACK", "EASE_OUT", 1.7015800476074219], [-0.16680538654327393, 233.33333333333337, "BEZIER", "EASE_IN_OUT", 733.3333333333333, -0.16680538654327393, "AUTO_CLAMPED"], [-0.16680538654327393, 599.9999999999999, "BEZIER", "EASE_IN", 933.3333333333334, -0.16680538654327393, "AUTO_CLAMPED", 1266.6666666666665, -0.16680538654327393, "AUTO_CLAMPED"], [-0.13560596108436584, 400.0, "BACK", "AUTO", 1466.6666666666665, -0.13560596108436584, "ALIGNED", 1.7015800476074219], [-0.29175129532814026, 266.66666666666674, "LINEAR", "AUTO"], [-0.29175129532814026, 166.66666666666652, "BEZIER", "AUTO", 2011.1111958821612, -0.29175129532814026, "ALIGNED"], [-0.0, 633.3333333333335, "QUAD", "EASE_IN_OUT", 2388.888804117839, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "EASE_IN_OUT", 5.555555721124013, 0.0, "AUTO_CLAMPED"], [0.0, 16.666666666666668, "QUAD", "EASE_IN_OUT", 11.11111044883728, 0.0, "AUTO_CLAMPED"], [3.8397903442382812, 283.3333333333333, "BACK", "EASE_OUT", 1.7015800476074219], [0.3740246295928955, 533.3333333333334, "BEZIER", "EASE_IN_OUT", 933.3333333333334, 0.3740246295928955, "AUTO_CLAMPED"], [0.3740246295928955, 299.9999999999999, "BEZIER", "EASE_IN", 1033.3333333333333, 0.3740246295928955, "AUTO_CLAMPED", 1266.6666666666665, 0.3740246295928955, "AUTO_CLAMPED"], [0.5059270858764648, 400.0, "BACK", "AUTO", 1466.6666666666665, 0.5059270858764648, "ALIGNED", 3.9015798568725586], [1.2094907760620117, 266.66666666666674, "LINEAR", "AUTO"], [1.2094907760620117, 166.66666666666652, "BEZIER", "AUTO", 2011.1111958821612, 1.2094907760620117, "ALIGNED"], [0.0, 633.3333333333335, "QUAD", "EASE_IN_OUT", 2388.888804117839, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "EASE_IN_OUT", 5.555555721124013, 0.0, "AUTO_CLAMPED"], [0.0, 16.666666666666668, "QUAD", "EASE_IN_OUT", 11.11111044883728, 0.0, "AUTO_CLAMPED"], [-16.158301462904227, 283.3333333333333, "BACK", "EASE_OUT", 1.7015800476074219], [-10.301796740211811, 233.33333333333337, "BEZIER", "EASE_IN_OUT", 733.3333333333333, -10.301796740211811, "AUTO_CLAMPED"], [-10.301796740211811, 599.9999999999999, "BEZIER", "EASE_IN", 933.3333333333334, -10.301796740211811, "AUTO_CLAMPED", 1266.6666666666665, -10.301796740211811, "AUTO_CLAMPED"], [-19.784100553616323, 400.0, "BACK", "AUTO", 1400.0, -19.784100553616323, "AUTO_CLAMPED", 1.7015800476074219], [-16.903297516434197, 266.66666666666674, "LINEAR", "AUTO"], [-16.903297516434197, 100.0, "BEZIER", "AUTO", 1944.4445292154949, -8.062240890614454, "ALIGNED"], [0.0, 766.6666666666665, "QUAD", "EASE_IN_OUT", 2411.1111958821616, 0.0, "AUTO_CLAMPED"]], "z": [[0.0, 0.0, "BEZIER", "EASE_IN_OUT", 5.555555721124013, 0.0, "AUTO_CLAMPED"], [0.0, 16.666666666666668, "QUAD", "EASE_IN_OUT", 11.11111044883728, 0.0, "AUTO_CLAMPED"], [-16.899083289716298, 283.3333333333333, "BACK", "EASE_OUT", 2.5], [-5.380695815862754, 533.3333333333334, "BEZIER", "EASE_IN_OUT", 1066.6666666666667, -5.380695815862754, "AUTO_CLAMPED"], [-11.906051935670543, 699.9999999999999, "BACK", "AUTO", 1300.0, -6.886808876911218, "AUTO_CLAMPED", 6.0], [-20.04334209111145, 266.66666666666674, "LINEAR", "AUTO"], [-20.04334209111145, 166.66666666666652, "BEZIER", "AUTO", 2177.777862548828, -30.043338385109788, "ALIGNED"], [0.0, 700.0, "QUAD", "EASE_IN_OUT", 2433.333333333333, 0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "EASE_IN_OUT", 5.555555721124013, 0.0, "AUTO_CLAMPED"], [0.0, 16.666666666666668, "QUAD", "EASE_IN_OUT", 11.11111044883728, 0.0, "AUTO_CLAMPED"], [-1.7823402117923546, 283.3333333333333, "BACK", "EASE_OUT", 1.7015800476074219], [6.773653132931616, 233.33333333333337, "BEZIER", "EASE_IN_OUT", 733.3333333333333, 6.773653132931616, "AUTO_CLAMPED"], [6.773653132931616, 599.9999999999999, "BEZIER", "EASE_IN", 933.3333333333334, 6.773653132931616, "AUTO_CLAMPED", 1266.6666666666665, 6.773653132931616, "AUTO_CLAMPED"], [18.416894757265702, 400.0, "BACK", "AUTO", 1400.0, 17.224420567809638, "AUTO_CLAMPED", 1.7015800476074219], [19.211877550236412, 266.66666666666674, "BEZIER", "AUTO", 1844.4445292154946, 19.211877550236412, "ALIGNED"], [19.211877550236412, 100.0, "BEZIER", "AUTO", 1866.6666666666667, 19.211877550236412, "ALIGNED", 1944.4445292154949, 19.211877550236412, "ALIGNED"], [0.0, 266.6666666666665, "QUAD", "EASE_IN_OUT", 2077.7777353922525, 0.0, "AUTO_CLAMPED"]]}}, "Hammer": {"rotation_euler": {"z": [[-0.0, 0.0, "BEZIER", "AUTO", 666.6666666666666, -0.0, "AUTO_CLAMPED"], [-0.0, 2000.0, "BEZIER", "AUTO", 1333.3333333333333, -0.0, "AUTO_CLAMPED", 2066.6666666666665, -0.0, "AUTO_CLAMPED"], [-45.00000125223908, 200.0, "BEZIER", "AUTO", 2133.3333333333335, -45.00000125223908, "AUTO_CLAMPED", 2244.4445292154946, -45.00000125223908, "AUTO_CLAMPED"], [-45.00000125223908, 133.33333333333348, "LINEAR", "AUTO", 2288.8888041178384, -45.00000125223908, "AUTO_CLAMPED"], [-0.0, 133.33333333333348, "BEZIER", "AUTO", 2511.111195882161, -0.0, "AUTO_CLAMPED"]]}, "location": {"x": [[3.125, 0.0, "BEZIER", "AUTO", 16.666666666666668, 3.125, "AUTO_CLAMPED"]], "z": [[1.862645149230957e-08, 0.0, "BEZIER", "AUTO", 16.666666666666668, 1.862645149230957e-08, "AUTO_CLAMPED"]], "y": [[0.125, 0.0, "BEZIER", "AUTO", 16.666666666666668, 0.125, "AUTO_CLAMPED"]]}}, "Magazine": {"location": {"x": [[2.125, 0.0, "LINEAR", "AUTO"], [2.125, 366.66666666666663, "LINEAR", "AUTO"], [3.215367555618286, 133.33333333333337, "LINEAR", "EASE_IN"], [6.216582298278809, 266.66666666666663, "CONSTANT", "AUTO"], [1.6932545900344849, 233.33333333333337, "BEZIER", "AUTO", 1133.3333333333333, 1.6932545900344849, "AUTO_CLAMPED"], [3.215367555618286, 400.0, "LINEAR", "EASE_IN", 1266.6666666666665, 3.215367555618286, "AUTO_CLAMPED"], [2.125, 166.66666666666674, "BEZIER", "AUTO", 1622.2222646077473, 2.125, "AUTO_CLAMPED"]], "z": [[-2.443810274144198e-07, 0.0, "LINEAR", "AUTO"], [-2.443810274144198e-07, 366.66666666666663, "LINEAR", "AUTO"], [-0.0, 133.33333333333337, "BEZIER", "EASE_IN", 522.2222010294596, -0.020347656682133675, "ALIGNED"], [-0.0, 266.66666666666663, "CONSTANT", "AUTO", 761.1110687255859, -7.450580596923828e-09, "ALIGNED"], [15.77025318145752, 233.33333333333337, "BEZIER", "AUTO", 1133.3333333333333, 15.77025318145752, "AUTO_CLAMPED"], [-0.0, 400.0, "BEZIER", "EASE_IN", 1266.6666666666665, 5.865144885319751e-07, "AUTO_CLAMPED", 1455.5555979410808, -2.443810274144198e-07, "AUTO_CLAMPED"], [-2.443810274144198e-07, 166.66666666666674, "BEZIER", "AUTO", 1511.111068725586, -2.443810274144198e-07, "AUTO_CLAMPED", 1622.2222646077473, -2.443810274144198e-07, "AUTO_CLAMPED"]], "y": [[-1.5, 0.0, "LINEAR", "AUTO"], [-1.5, 366.66666666666663, "LINEAR", "AUTO"], [-5.614295482635498, 133.33333333333337, "LINEAR", "EASE_IN"], [-16.93880844116211, 266.66666666666663, "CONSTANT", "AUTO"], [-21.048290252685547, 233.33333333333337, "BEZIER", "AUTO", 1133.3333333333333, -21.048290252685547, "AUTO_CLAMPED"], [-5.614295482635498, 400.0, "LINEAR", "EASE_IN", 1266.6666666666665, -11.369051933288574, "AUTO_CLAMPED"], [-1.5, 166.66666666666674, "BEZIER", "AUTO", 1622.2222646077473, -1.5, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "LINEAR", "AUTO"], [0.0, 366.66666666666663, "LINEAR", "AUTO"], [0.0, 133.33333333333337, "BEZIER", "EASE_IN", 555.555534362793, 0.0, "ALIGNED"], [0.0, 266.66666666666663, "CONSTANT", "AUTO", 677.7777989705404, 0.0, "AUTO_CLAMPED"], [-15.976201789442515, 233.33333333333337, "BEZIER", "AUTO", 1133.3333333333333, -15.976201789442515, "AUTO_CLAMPED"], [0.0, 400.0, "BEZIER", "EASE_IN", 1266.6666666666665, 0.0, "AUTO_CLAMPED", 1455.5555979410808, 0.0, "AUTO_CLAMPED"], [0.0, 166.66666666666674, "BEZIER", "AUTO", 1511.111068725586, 0.0, "AUTO_CLAMPED", 1622.2222646077473, 0.0, "AUTO_CLAMPED"]], "z": [[0.0, 0.0, "LINEAR", "AUTO"], [0.0, 366.66666666666663, "LINEAR", "AUTO"], [0.0, 133.33333333333337, "BEZIER", "EASE_IN", 555.555534362793, 0.0, "ALIGNED"], [0.0, 266.66666666666663, "CONSTANT", "AUTO", 677.7777989705404, 0.0, "AUTO_CLAMPED"], [-7.264861555018716, 233.33333333333337, "BEZIER", "AUTO", 1133.3333333333333, -7.264861555018716, "AUTO_CLAMPED"], [0.0, 400.0, "BEZIER", "EASE_IN", 1266.6666666666665, 0.0, "AUTO_CLAMPED", 1455.5555979410808, 0.0, "AUTO_CLAMPED"], [-0.0, 166.66666666666674, "BEZIER", "AUTO", 1511.111068725586, -0.0, "AUTO_CLAMPED", 1622.2222646077473, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "LINEAR", "AUTO"], [0.0, 366.66666666666663, "LINEAR", "AUTO"], [0.0, 133.33333333333337, "BEZIER", "EASE_IN", 555.555534362793, 0.0, "ALIGNED"], [0.0, 266.66666666666663, "CONSTANT", "AUTO", 677.7777989705404, 0.0, "AUTO_CLAMPED"], [-3.817224960598638, 233.33333333333337, "BEZIER", "AUTO", 1133.3333333333333, -3.817224960598638, "AUTO_CLAMPED"], [0.0, 400.0, "BEZIER", "EASE_IN", 1266.6666666666665, 0.0, "AUTO_CLAMPED", 1455.5555979410808, 0.0, "AUTO_CLAMPED"], [0.0, 166.66666666666674, "BEZIER", "AUTO", 1511.111068725586, 0.0, "AUTO_CLAMPED", 1622.2222646077473, 0.0, "AUTO_CLAMPED"]]}}, "Slide": {"location": {"x": [[-3.25, 0.0, "BEZIER", "AUTO", 666.6666666666666, -3.25, "AUTO_CLAMPED"], [-3.25, 2000.0, "BEZIER", "AUTO", 1766.6666666666665, -3.25, "ALIGNED", 2022.2221374511719, -3.25, "ALIGNED"], [-1.75, 200.0, "LINEAR", "AUTO", 2161.1111958821616, -1.75, "ALIGNED"], [-1.75, 133.33333333333348, "LINEAR", "AUTO"], [-3.25, 99.99999999999955, "BEZIER", "AUTO", 2433.333333333333, -3.25, "ALIGNED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 16.666666666666668, -0.0, "AUTO_CLAMPED"]], "y": [[0.75, 0.0, "BEZIER", "AUTO", 16.666666666666668, 0.75, "AUTO_CLAMPED"]]}}}}, "offset": {"Bullet": [1.59375, 0.5625, -2.443810274144198e-07], "Decal": [-2.3125, 0.6875, 0.3850004971027374], "DecalM": [0.0, 0.0, -10.609639167785645], "GripM": [0.0, 0.0, -10.609639167785645], "Hammer": [3.125, 0.125, 1.862645149230957e-08], "Magazine": [2.125, -1.5, -2.443810274144198e-07], "Slide": [-3.25, 0.75, -0.0], "SlideM": [0.0, 0.0, -10.609639167785645], "Text": [-6.25, 0.6875, 0.3850004971027374], "TextM": [0.0, 0.0, -10.609639167785645]}, "hierarchy": {"Bullet": "Magazine", "Decal": "Slide", "DecalM": "SlideM", "Hammer": "Grip", "Magazine": "Grip", "Slide": "Grip", "SlideM": "GripM", "Text": "Slide", "TextM": "SlideM"}} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/weapons/c130.obj b/src/main/resources/assets/hbm/models/weapons/c130.obj new file mode 100644 index 000000000..062ea4ab5 --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/c130.obj @@ -0,0 +1,3946 @@ +# Blender v2.79 (sub 0) OBJ File: 'c130.blend' +# www.blender.org +o Prop4 +v 8.876309 4.210099 19.990316 +v 9.975476 4.210099 20.539900 +v 8.876309 3.821485 20.151285 +v 8.876309 3.660516 20.539900 +v 8.876309 3.821485 20.928514 +v 8.876309 4.210099 21.089483 +v 8.876309 4.598713 20.928514 +v 8.876309 4.759683 20.539900 +v 8.876309 4.598713 20.151285 +v 9.092196 4.022467 23.179798 +v 9.092196 4.397732 23.179798 +v 9.092196 4.397732 20.800001 +v 9.092196 4.022467 20.800001 +v 9.259592 4.022467 20.800001 +v 9.259592 4.397732 20.800001 +v 9.259592 4.397732 23.179798 +v 9.259592 4.022467 23.179798 +v 9.092196 4.022467 20.279799 +v 9.092196 4.397732 20.279799 +v 9.092196 4.397732 17.900002 +v 9.092196 4.022467 17.900002 +v 9.259590 4.397732 17.900002 +v 9.259590 4.022467 17.900002 +v 9.259590 4.397732 20.279799 +v 9.259590 4.022467 20.279799 +v 9.092196 1.570201 20.352268 +v 9.092196 1.570201 20.727533 +v 9.092196 3.949998 20.727533 +v 9.092196 3.949998 20.352268 +v 9.259590 3.949998 20.352268 +v 9.259590 3.949998 20.727533 +v 9.259590 1.570201 20.727533 +v 9.259590 1.570201 20.352268 +v 9.092196 4.470201 20.352268 +v 9.092196 4.470201 20.727533 +v 9.092196 6.849997 20.727533 +v 9.092196 6.849997 20.352268 +v 9.259590 6.849997 20.727533 +v 9.259590 6.849997 20.352268 +v 9.259590 4.470201 20.727533 +v 9.259590 4.470201 20.352268 +vt 0.057500 0.876667 +vt 0.055000 0.893333 +vt 0.053750 0.876667 +vt 0.061250 0.876667 +vt 0.058750 0.893333 +vt 0.057500 0.876667 +vt 0.065000 0.876667 +vt 0.062500 0.893333 +vt 0.061250 0.876667 +vt 0.068750 0.876667 +vt 0.066250 0.893333 +vt 0.065000 0.876667 +vt 0.072500 0.876667 +vt 0.070000 0.893333 +vt 0.068750 0.876667 +vt 0.076250 0.876667 +vt 0.073750 0.893333 +vt 0.072500 0.876667 +vt 0.080000 0.876667 +vt 0.077500 0.893333 +vt 0.076250 0.876667 +vt 0.053750 0.876667 +vt 0.051250 0.893333 +vt 0.050000 0.876667 +vt 0.185000 0.908333 +vt 0.188750 0.876667 +vt 0.188750 0.908333 +vt 0.183750 0.876667 +vt 0.180000 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.908333 +vt 0.180000 0.910000 +vt 0.178750 0.908333 +vt 0.178750 0.876667 +vt 0.185000 0.876667 +vt 0.188750 0.876667 +vt 0.185000 0.908333 +vt 0.185000 0.876667 +vt 0.180000 0.910000 +vt 0.183750 0.908333 +vt 0.183750 0.910000 +vt 0.180000 0.908333 +vt 0.183750 0.876667 +vt 0.178750 0.908333 +vt 0.180000 0.876667 +vt 0.185000 0.908333 +vt 0.188750 0.876667 +vt 0.188750 0.908333 +vt 0.183750 0.876667 +vt 0.180000 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.908333 +vt 0.180000 0.910000 +vt 0.178750 0.908333 +vt 0.178750 0.876667 +vt 0.185000 0.876667 +vt 0.188750 0.876667 +vt 0.185000 0.908333 +vt 0.185000 0.876667 +vt 0.180000 0.910000 +vt 0.183750 0.908333 +vt 0.183750 0.910000 +vt 0.180000 0.908333 +vt 0.183750 0.876667 +vt 0.178750 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.910000 +vt 0.188750 0.908333 +vt 0.178750 0.876667 +vt 0.183750 0.910000 +vt 0.188750 0.908333 +vt 0.178750 0.876667 +vn 0.4194 -0.3474 -0.8387 +vn 0.4194 -0.8387 -0.3474 +vn 0.4194 -0.8387 0.3474 +vn 0.4194 -0.3474 0.8387 +vn 0.4194 0.3474 0.8387 +vn 0.4194 0.8387 0.3474 +vn 0.4194 0.8387 -0.3474 +vn 0.4194 0.3474 -0.8387 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +s 1 +f 1/1/1 2/2/1 3/3/1 +f 3/4/2 2/5/2 4/6/2 +f 4/7/3 2/8/3 5/9/3 +f 5/10/4 2/11/4 6/12/4 +f 6/13/5 2/14/5 7/15/5 +f 7/16/6 2/17/6 8/18/6 +f 8/19/7 2/20/7 9/21/7 +f 9/22/8 2/23/8 1/24/8 +f 11/25/9 13/26/9 10/27/9 +f 15/28/10 17/29/10 14/30/10 +f 16/31/11 10/32/11 17/29/11 +f 14/30/12 10/33/12 13/34/12 +f 12/35/13 16/31/13 15/28/13 +f 19/36/9 21/37/9 18/38/9 +f 20/39/14 23/40/14 21/41/14 +f 22/42/10 25/43/10 23/40/10 +f 23/40/12 18/38/12 21/37/12 +f 20/44/13 24/45/13 22/42/13 +f 27/46/9 29/47/9 26/48/9 +f 31/49/10 33/50/10 30/51/10 +f 32/52/12 26/53/12 33/50/12 +f 30/51/14 26/54/14 29/55/14 +f 28/56/11 32/52/11 31/49/11 +f 35/57/9 37/58/9 34/59/9 +f 36/60/13 39/61/13 37/62/13 +f 38/63/10 41/64/10 39/61/10 +f 39/61/14 34/59/14 37/58/14 +f 36/65/11 40/66/11 38/63/11 +f 11/25/9 12/35/9 13/26/9 +f 15/28/10 16/31/10 17/29/10 +f 16/31/11 11/67/11 10/32/11 +f 14/30/12 17/29/12 10/33/12 +f 12/35/13 11/25/13 16/31/13 +f 19/36/9 20/68/9 21/37/9 +f 20/39/14 22/42/14 23/40/14 +f 22/42/10 24/45/10 25/43/10 +f 23/40/12 25/43/12 18/38/12 +f 20/44/13 19/69/13 24/45/13 +f 27/46/9 28/56/9 29/47/9 +f 31/49/10 32/52/10 33/50/10 +f 32/52/12 27/70/12 26/53/12 +f 30/51/14 33/50/14 26/54/14 +f 28/56/11 27/46/11 32/52/11 +f 35/57/9 36/71/9 37/58/9 +f 36/60/13 38/63/13 39/61/13 +f 38/63/10 40/66/10 41/64/10 +f 39/61/14 41/64/14 34/59/14 +f 36/65/11 35/72/11 40/66/11 +o Prop3 +v 8.876309 4.210100 10.612316 +v 9.975476 4.210100 11.161900 +v 8.876309 3.821486 10.773286 +v 8.876309 3.660517 11.161900 +v 8.876309 3.821486 11.550513 +v 8.876309 4.210100 11.711483 +v 8.876309 4.598713 11.550513 +v 8.876309 4.759684 11.161900 +v 8.876309 4.598713 10.773286 +v 9.092196 4.022468 13.801797 +v 9.092196 4.397733 13.801797 +v 9.092196 4.397733 11.422001 +v 9.092196 4.022468 11.422001 +v 9.259592 4.022468 11.422001 +v 9.259592 4.397733 11.422001 +v 9.259592 4.397733 13.801797 +v 9.259592 4.022468 13.801797 +v 9.092196 4.022468 10.901798 +v 9.092196 4.397733 10.901798 +v 9.092196 4.397733 8.522002 +v 9.092196 4.022468 8.522002 +v 9.259590 4.397733 8.522002 +v 9.259590 4.022468 8.522002 +v 9.259590 4.397733 10.901798 +v 9.259590 4.022468 10.901798 +v 9.092196 1.570202 10.974267 +v 9.092196 1.570202 11.349533 +v 9.092196 3.949999 11.349533 +v 9.092196 3.949999 10.974267 +v 9.259590 3.949999 10.974267 +v 9.259590 3.949999 11.349533 +v 9.259590 1.570202 11.349533 +v 9.259590 1.570202 10.974267 +v 9.092196 4.470201 10.974267 +v 9.092196 4.470201 11.349533 +v 9.092196 6.849998 11.349533 +v 9.092196 6.849998 10.974267 +v 9.259590 6.849998 11.349533 +v 9.259590 6.849998 10.974267 +v 9.259590 4.470201 11.349533 +v 9.259590 4.470201 10.974267 +vt 0.057500 0.876667 +vt 0.055000 0.893333 +vt 0.053750 0.876667 +vt 0.061250 0.876667 +vt 0.058750 0.893333 +vt 0.057500 0.876667 +vt 0.065000 0.876667 +vt 0.062500 0.893333 +vt 0.061250 0.876667 +vt 0.068750 0.876667 +vt 0.066250 0.893333 +vt 0.065000 0.876667 +vt 0.072500 0.876667 +vt 0.070000 0.893333 +vt 0.068750 0.876667 +vt 0.076250 0.876667 +vt 0.073750 0.893333 +vt 0.072500 0.876667 +vt 0.080000 0.876667 +vt 0.077500 0.893333 +vt 0.076250 0.876667 +vt 0.053750 0.876667 +vt 0.051250 0.893333 +vt 0.050000 0.876667 +vt 0.185000 0.908333 +vt 0.188750 0.876667 +vt 0.188750 0.908333 +vt 0.183750 0.876667 +vt 0.180000 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.908333 +vt 0.180000 0.910000 +vt 0.178750 0.908333 +vt 0.178750 0.876667 +vt 0.185000 0.876667 +vt 0.188750 0.876667 +vt 0.185000 0.908333 +vt 0.185000 0.876667 +vt 0.180000 0.910000 +vt 0.183750 0.908333 +vt 0.183750 0.910000 +vt 0.180000 0.908333 +vt 0.183750 0.876667 +vt 0.178750 0.908333 +vt 0.180000 0.876667 +vt 0.185000 0.908333 +vt 0.188750 0.876667 +vt 0.188750 0.908333 +vt 0.183750 0.876667 +vt 0.180000 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.908333 +vt 0.180000 0.910000 +vt 0.178750 0.908333 +vt 0.178750 0.876667 +vt 0.185000 0.876667 +vt 0.188750 0.876667 +vt 0.185000 0.908333 +vt 0.185000 0.876667 +vt 0.180000 0.910000 +vt 0.183750 0.908333 +vt 0.183750 0.910000 +vt 0.180000 0.908333 +vt 0.183750 0.876667 +vt 0.178750 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.910000 +vt 0.188750 0.908333 +vt 0.178750 0.876667 +vt 0.183750 0.910000 +vt 0.188750 0.908333 +vt 0.178750 0.876667 +vn 0.4194 -0.3474 -0.8387 +vn 0.4194 -0.8387 -0.3474 +vn 0.4194 -0.8387 0.3474 +vn 0.4194 -0.3474 0.8387 +vn 0.4194 0.3474 0.8387 +vn 0.4194 0.8387 0.3474 +vn 0.4194 0.8387 -0.3474 +vn 0.4194 0.3474 -0.8387 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +s 1 +f 42/73/15 43/74/15 44/75/15 +f 44/76/16 43/77/16 45/78/16 +f 45/79/17 43/80/17 46/81/17 +f 46/82/18 43/83/18 47/84/18 +f 47/85/19 43/86/19 48/87/19 +f 48/88/20 43/89/20 49/90/20 +f 49/91/21 43/92/21 50/93/21 +f 50/94/22 43/95/22 42/96/22 +f 52/97/23 54/98/23 51/99/23 +f 56/100/24 58/101/24 55/102/24 +f 57/103/25 51/104/25 58/101/25 +f 55/102/26 51/105/26 54/106/26 +f 53/107/27 57/103/27 56/100/27 +f 60/108/23 62/109/23 59/110/23 +f 61/111/28 64/112/28 62/113/28 +f 63/114/24 66/115/24 64/112/24 +f 64/112/26 59/110/26 62/109/26 +f 61/116/27 65/117/27 63/114/27 +f 68/118/23 70/119/23 67/120/23 +f 72/121/24 74/122/24 71/123/24 +f 73/124/26 67/125/26 74/122/26 +f 71/123/28 67/126/28 70/127/28 +f 69/128/25 73/124/25 72/121/25 +f 76/129/23 78/130/23 75/131/23 +f 77/132/27 80/133/27 78/134/27 +f 79/135/24 82/136/24 80/133/24 +f 80/133/28 75/131/28 78/130/28 +f 77/137/25 81/138/25 79/135/25 +f 52/97/23 53/107/23 54/98/23 +f 56/100/24 57/103/24 58/101/24 +f 57/103/25 52/139/25 51/104/25 +f 55/102/26 58/101/26 51/105/26 +f 53/107/27 52/97/27 57/103/27 +f 60/108/23 61/140/23 62/109/23 +f 61/111/28 63/114/28 64/112/28 +f 63/114/24 65/117/24 66/115/24 +f 64/112/26 66/115/26 59/110/26 +f 61/116/27 60/141/27 65/117/27 +f 68/118/23 69/128/23 70/119/23 +f 72/121/24 73/124/24 74/122/24 +f 73/124/26 68/142/26 67/125/26 +f 71/123/28 74/122/28 67/126/28 +f 69/128/25 68/118/25 73/124/25 +f 76/129/23 77/143/23 78/130/23 +f 77/132/27 79/135/27 80/133/27 +f 79/135/24 81/138/24 82/136/24 +f 80/133/28 82/136/28 75/131/28 +f 77/137/25 76/144/25 81/138/25 +o Prop2 +v 8.876309 4.210101 -11.711483 +v 9.975476 4.210101 -11.161900 +v 8.876309 3.821486 -11.550513 +v 8.876309 3.660517 -11.161900 +v 8.876309 3.821486 -10.773286 +v 8.876309 4.210101 -10.612316 +v 8.876309 4.598714 -10.773286 +v 8.876309 4.759685 -11.161900 +v 8.876309 4.598714 -11.550513 +v 9.092196 4.022469 -8.522002 +v 9.092196 4.397734 -8.522002 +v 9.092196 4.397734 -10.901798 +v 9.092196 4.022469 -10.901798 +v 9.259592 4.022469 -10.901798 +v 9.259592 4.397734 -10.901798 +v 9.259592 4.397734 -8.522002 +v 9.259592 4.022469 -8.522002 +v 9.092196 4.022469 -11.422001 +v 9.092196 4.397734 -11.422001 +v 9.092196 4.397734 -13.801797 +v 9.092196 4.022469 -13.801797 +v 9.259590 4.397734 -13.801797 +v 9.259590 4.022469 -13.801797 +v 9.259590 4.397734 -11.422001 +v 9.259590 4.022469 -11.422001 +v 9.092196 1.570202 -11.349532 +v 9.092196 1.570202 -10.974266 +v 9.092196 3.950000 -10.974266 +v 9.092196 3.950000 -11.349532 +v 9.259590 3.950000 -11.349532 +v 9.259590 3.950000 -10.974266 +v 9.259590 1.570202 -10.974266 +v 9.259590 1.570202 -11.349532 +v 9.092196 4.470202 -11.349532 +v 9.092196 4.470202 -10.974266 +v 9.092196 6.849998 -10.974266 +v 9.092196 6.849998 -11.349532 +v 9.259590 6.849998 -10.974266 +v 9.259590 6.849998 -11.349532 +v 9.259590 4.470202 -10.974266 +v 9.259590 4.470202 -11.349532 +vt 0.057500 0.876667 +vt 0.055000 0.893333 +vt 0.053750 0.876667 +vt 0.061250 0.876667 +vt 0.058750 0.893333 +vt 0.057500 0.876667 +vt 0.065000 0.876667 +vt 0.062500 0.893333 +vt 0.061250 0.876667 +vt 0.068750 0.876667 +vt 0.066250 0.893333 +vt 0.065000 0.876667 +vt 0.072500 0.876667 +vt 0.070000 0.893333 +vt 0.068750 0.876667 +vt 0.076250 0.876667 +vt 0.073750 0.893333 +vt 0.072500 0.876667 +vt 0.080000 0.876667 +vt 0.077500 0.893333 +vt 0.076250 0.876667 +vt 0.053750 0.876667 +vt 0.051250 0.893333 +vt 0.050000 0.876667 +vt 0.185000 0.908333 +vt 0.188750 0.876667 +vt 0.188750 0.908333 +vt 0.183750 0.876667 +vt 0.180000 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.908333 +vt 0.180000 0.910000 +vt 0.178750 0.908333 +vt 0.178750 0.876667 +vt 0.185000 0.876667 +vt 0.188750 0.876667 +vt 0.185000 0.908333 +vt 0.185000 0.876667 +vt 0.180000 0.910000 +vt 0.183750 0.908333 +vt 0.183750 0.910000 +vt 0.180000 0.908333 +vt 0.183750 0.876667 +vt 0.178750 0.908333 +vt 0.180000 0.876667 +vt 0.185000 0.908333 +vt 0.188750 0.876667 +vt 0.188750 0.908333 +vt 0.183750 0.876667 +vt 0.180000 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.908333 +vt 0.180000 0.910000 +vt 0.178750 0.908333 +vt 0.178750 0.876667 +vt 0.185000 0.876667 +vt 0.188750 0.876667 +vt 0.185000 0.908333 +vt 0.185000 0.876667 +vt 0.180000 0.910000 +vt 0.183750 0.908333 +vt 0.183750 0.910000 +vt 0.180000 0.908333 +vt 0.183750 0.876667 +vt 0.178750 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.910000 +vt 0.188750 0.908333 +vt 0.178750 0.876667 +vt 0.183750 0.910000 +vt 0.188750 0.908333 +vt 0.178750 0.876667 +vn 0.4194 -0.3474 -0.8387 +vn 0.4194 -0.8387 -0.3474 +vn 0.4194 -0.8387 0.3474 +vn 0.4194 -0.3474 0.8387 +vn 0.4194 0.3474 0.8387 +vn 0.4194 0.8387 0.3474 +vn 0.4194 0.8387 -0.3474 +vn 0.4194 0.3474 -0.8387 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +s 1 +f 83/145/29 84/146/29 85/147/29 +f 85/148/30 84/149/30 86/150/30 +f 86/151/31 84/152/31 87/153/31 +f 87/154/32 84/155/32 88/156/32 +f 88/157/33 84/158/33 89/159/33 +f 89/160/34 84/161/34 90/162/34 +f 90/163/35 84/164/35 91/165/35 +f 91/166/36 84/167/36 83/168/36 +f 93/169/37 95/170/37 92/171/37 +f 97/172/38 99/173/38 96/174/38 +f 98/175/39 92/176/39 99/173/39 +f 96/174/40 92/177/40 95/178/40 +f 94/179/41 98/175/41 97/172/41 +f 101/180/37 103/181/37 100/182/37 +f 102/183/42 105/184/42 103/185/42 +f 104/186/38 107/187/38 105/184/38 +f 105/184/40 100/182/40 103/181/40 +f 102/188/41 106/189/41 104/186/41 +f 109/190/37 111/191/37 108/192/37 +f 113/193/38 115/194/38 112/195/38 +f 114/196/40 108/197/40 115/194/40 +f 112/195/42 108/198/42 111/199/42 +f 110/200/39 114/196/39 113/193/39 +f 117/201/37 119/202/37 116/203/37 +f 118/204/41 121/205/41 119/206/41 +f 120/207/38 123/208/38 121/205/38 +f 121/205/42 116/203/42 119/202/42 +f 118/209/39 122/210/39 120/207/39 +f 93/169/37 94/179/37 95/170/37 +f 97/172/38 98/175/38 99/173/38 +f 98/175/39 93/211/39 92/176/39 +f 96/174/40 99/173/40 92/177/40 +f 94/179/41 93/169/41 98/175/41 +f 101/180/37 102/212/37 103/181/37 +f 102/183/42 104/186/42 105/184/42 +f 104/186/38 106/189/38 107/187/38 +f 105/184/40 107/187/40 100/182/40 +f 102/188/41 101/213/41 106/189/41 +f 109/190/37 110/200/37 111/191/37 +f 113/193/38 114/196/38 115/194/38 +f 114/196/40 109/214/40 108/197/40 +f 112/195/42 115/194/42 108/198/42 +f 110/200/39 109/190/39 114/196/39 +f 117/201/37 118/215/37 119/202/37 +f 118/204/41 120/207/41 121/205/41 +f 120/207/38 122/210/38 123/208/38 +f 121/205/42 123/208/42 116/203/42 +f 118/209/39 117/216/39 122/210/39 +o Prop1 +v 8.876309 4.210101 -21.089483 +v 9.975476 4.210101 -20.539900 +v 8.876309 3.821487 -20.928514 +v 8.876309 3.660518 -20.539900 +v 8.876309 3.821487 -20.151285 +v 8.876309 4.210101 -19.990316 +v 8.876309 4.598715 -20.151285 +v 8.876309 4.759685 -20.539900 +v 8.876309 4.598715 -20.928514 +v 9.092196 4.022469 -17.900002 +v 9.092196 4.397734 -17.900002 +v 9.092196 4.397734 -20.279799 +v 9.092196 4.022469 -20.279799 +v 9.259592 4.022469 -20.279799 +v 9.259592 4.397734 -20.279799 +v 9.259592 4.397734 -17.900002 +v 9.259592 4.022469 -17.900002 +v 9.092196 4.022469 -20.800001 +v 9.092196 4.397734 -20.800001 +v 9.092196 4.397734 -23.179798 +v 9.092196 4.022469 -23.179798 +v 9.259590 4.397734 -23.179798 +v 9.259590 4.022469 -23.179798 +v 9.259590 4.397734 -20.800001 +v 9.259590 4.022469 -20.800001 +v 9.092196 1.570203 -20.727531 +v 9.092196 1.570203 -20.352266 +v 9.092196 3.950000 -20.352266 +v 9.092196 3.950000 -20.727531 +v 9.259590 3.950000 -20.727531 +v 9.259590 3.950000 -20.352266 +v 9.259590 1.570203 -20.352266 +v 9.259590 1.570203 -20.727531 +v 9.092196 4.470203 -20.727531 +v 9.092196 4.470203 -20.352266 +v 9.092196 6.849999 -20.352266 +v 9.092196 6.849999 -20.727531 +v 9.259590 6.849999 -20.352266 +v 9.259590 6.849999 -20.727531 +v 9.259590 4.470203 -20.352266 +v 9.259590 4.470203 -20.727531 +vt 0.076250 0.876667 +vt 0.073750 0.893333 +vt 0.072500 0.876667 +vt 0.070000 0.893333 +vt 0.068750 0.876667 +vt 0.066250 0.893333 +vt 0.065000 0.876667 +vt 0.062500 0.893333 +vt 0.061250 0.876667 +vt 0.057500 0.876667 +vt 0.055000 0.893333 +vt 0.053750 0.876667 +vt 0.051250 0.893333 +vt 0.050000 0.876667 +vt 0.061250 0.876667 +vt 0.058750 0.893333 +vt 0.057500 0.876667 +vt 0.080000 0.876667 +vt 0.077500 0.893333 +vt 0.185000 0.908333 +vt 0.188750 0.876667 +vt 0.188750 0.908333 +vt 0.183750 0.876667 +vt 0.180000 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.908333 +vt 0.180000 0.910000 +vt 0.178750 0.908333 +vt 0.178750 0.876667 +vt 0.185000 0.876667 +vt 0.188750 0.876667 +vt 0.185000 0.908333 +vt 0.185000 0.876667 +vt 0.180000 0.910000 +vt 0.183750 0.908333 +vt 0.183750 0.910000 +vt 0.180000 0.908333 +vt 0.183750 0.876667 +vt 0.178750 0.908333 +vt 0.180000 0.876667 +vt 0.185000 0.908333 +vt 0.188750 0.876667 +vt 0.188750 0.908333 +vt 0.183750 0.876667 +vt 0.180000 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.908333 +vt 0.180000 0.910000 +vt 0.178750 0.908333 +vt 0.178750 0.876667 +vt 0.185000 0.876667 +vt 0.188750 0.876667 +vt 0.185000 0.908333 +vt 0.185000 0.876667 +vt 0.180000 0.910000 +vt 0.183750 0.908333 +vt 0.183750 0.910000 +vt 0.180000 0.908333 +vt 0.183750 0.876667 +vt 0.178750 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.910000 +vt 0.188750 0.908333 +vt 0.178750 0.876667 +vt 0.183750 0.910000 +vt 0.188750 0.908333 +vt 0.178750 0.876667 +vn 0.4194 -0.3474 -0.8387 +vn 0.4194 -0.8387 -0.3474 +vn 0.4194 -0.8387 0.3474 +vn 0.4194 -0.3474 0.8387 +vn 0.4194 0.3474 0.8387 +vn 0.4194 0.8387 0.3474 +vn 0.4194 0.8387 -0.3474 +vn 0.4194 0.3474 -0.8387 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +s 1 +f 124/217/43 125/218/43 126/219/43 +f 126/219/44 125/220/44 127/221/44 +f 127/221/45 125/222/45 128/223/45 +f 128/223/46 125/224/46 129/225/46 +f 129/226/47 125/227/47 130/228/47 +f 130/228/48 125/229/48 131/230/48 +f 131/231/49 125/232/49 132/233/49 +f 132/234/50 125/235/50 124/217/50 +f 134/236/51 136/237/51 133/238/51 +f 138/239/52 140/240/52 137/241/52 +f 139/242/53 133/243/53 140/240/53 +f 137/241/54 133/244/54 136/245/54 +f 135/246/55 139/242/55 138/239/55 +f 142/247/51 144/248/51 141/249/51 +f 143/250/56 146/251/56 144/252/56 +f 145/253/52 148/254/52 146/251/52 +f 146/251/54 141/249/54 144/248/54 +f 143/255/55 147/256/55 145/253/55 +f 150/257/51 152/258/51 149/259/51 +f 154/260/52 156/261/52 153/262/52 +f 155/263/54 149/264/54 156/261/54 +f 153/262/56 149/265/56 152/266/56 +f 151/267/53 155/263/53 154/260/53 +f 158/268/51 160/269/51 157/270/51 +f 159/271/55 162/272/55 160/273/55 +f 161/274/52 164/275/52 162/272/52 +f 162/272/56 157/270/56 160/269/56 +f 159/276/53 163/277/53 161/274/53 +f 134/236/51 135/246/51 136/237/51 +f 138/239/52 139/242/52 140/240/52 +f 139/242/53 134/278/53 133/243/53 +f 137/241/54 140/240/54 133/244/54 +f 135/246/55 134/236/55 139/242/55 +f 142/247/51 143/279/51 144/248/51 +f 143/250/56 145/253/56 146/251/56 +f 145/253/52 147/256/52 148/254/52 +f 146/251/54 148/254/54 141/249/54 +f 143/255/55 142/280/55 147/256/55 +f 150/257/51 151/267/51 152/258/51 +f 154/260/52 155/263/52 156/261/52 +f 155/263/54 150/281/54 149/264/54 +f 153/262/56 156/261/56 149/265/56 +f 151/267/53 150/257/53 155/263/53 +f 158/268/51 159/282/51 160/269/51 +f 159/271/55 161/274/55 162/272/55 +f 161/274/52 163/277/52 164/275/52 +f 162/272/56 164/275/56 157/270/56 +f 159/276/53 158/283/53 163/277/53 +o Plane +v -8.648877 2.337463 -3.828772 +v 17.109543 2.337462 -3.828772 +v 17.109543 0.872254 -3.537324 +v -8.648877 0.872255 -3.537324 +v 17.109543 -0.369889 -2.707351 +v -8.648877 -0.369888 -2.707351 +v 17.109543 -1.199862 -1.465208 +v -8.648877 -1.199861 -1.465208 +v 17.109543 -1.491310 -0.000000 +v -8.648877 -1.491309 -0.000000 +v 17.109543 -1.199862 1.465208 +v -8.648877 -1.199861 1.465208 +v 17.109543 -0.369889 2.707351 +v -8.648877 -0.369888 2.707351 +v 17.109543 0.872254 3.537324 +v -8.648877 0.872255 3.537324 +v 17.109543 2.337462 3.828772 +v -8.648877 2.337463 3.828772 +v 17.109543 3.802669 3.537324 +v -8.648877 3.802670 3.537324 +v 17.109543 5.044812 2.707351 +v -8.648877 5.044813 2.707351 +v 17.109543 5.874785 1.465208 +v -8.648877 5.874786 1.465208 +v 17.109543 6.166234 0.000000 +v -8.648877 6.166231 0.000000 +v 17.109543 5.874785 -1.465208 +v -8.648877 5.874786 -1.465208 +v 17.109543 5.044812 -2.707351 +v -8.648877 5.044813 -2.707351 +v 18.622576 0.819016 -3.307737 +v 18.622576 -0.342507 -2.531632 +v 17.109543 3.802669 -3.537324 +v -8.648877 3.802670 -3.537324 +v -22.527349 6.033054 -0.479178 +v -22.527349 5.863158 -0.885406 +v -24.803490 5.347558 0.000000 +v -17.322922 2.833023 -1.568635 +v -17.322922 2.415598 -0.848939 +v -22.527349 4.584874 -0.479178 +v -22.527349 4.754769 -0.885406 +v -17.322922 3.457743 2.049520 +v -17.322922 4.194651 2.218385 +v -22.527349 5.308964 1.252153 +v -22.527349 5.009036 1.156838 +v -17.322922 4.194651 -2.218385 +v -17.322922 3.457743 -2.049520 +v -22.527349 5.009036 -1.156838 +v -22.527349 5.308964 -1.252153 +v -17.322922 6.120280 0.000000 +v -17.322922 5.973704 -0.848939 +v -22.527349 6.092710 0.000000 +v -17.322922 2.415598 0.848939 +v -17.322922 2.833023 1.568635 +v -22.527349 4.754769 0.885406 +v -22.527349 4.584874 0.479178 +v -17.322922 5.556279 1.568635 +v -17.322922 5.973704 0.848939 +v -22.527349 6.033054 0.479178 +v -22.527349 5.863158 0.885406 +v -17.322922 4.931559 -2.049520 +v -22.527349 5.608891 -1.156838 +v -17.322922 2.269018 0.000000 +v -22.527349 4.525215 0.000000 +v -17.322922 4.931559 2.049520 +v -22.527349 5.608891 1.156838 +v -17.322922 5.556279 -1.568635 +v 18.622576 3.559235 -3.307737 +v 18.622576 4.720757 -2.531632 +v 20.313610 3.625209 -1.918521 +v 20.313610 2.744985 -2.506668 +v 18.622576 -0.342507 2.531632 +v 18.622576 0.819016 3.307737 +v 18.622576 5.496862 1.370110 +v 18.622576 5.769394 0.000000 +v 18.622576 -1.391143 -0.000000 +v 18.622576 -1.118612 1.370110 +v 18.622576 3.559235 3.307737 +v 18.622576 4.720757 2.531632 +v 18.622576 -1.118612 -1.370110 +v 18.622576 2.189125 3.580269 +v 18.622576 2.189125 -3.580269 +v 18.622576 5.496862 -1.370110 +v 20.313610 -0.799979 1.038296 +v 20.313610 -1.006509 -0.000000 +v 21.630833 -0.630115 -0.000000 +v 21.630833 -0.488594 0.711476 +v 20.313610 0.668393 2.506668 +v 20.313610 1.706689 2.713198 +v 20.313610 1.706689 -2.713198 +v 20.313610 0.668393 -2.506668 +v 20.313610 2.744985 2.506668 +v 20.313610 -0.211831 -1.918521 +v 20.313610 3.625209 1.918521 +v 20.313610 -0.799979 -1.038296 +v 20.313610 4.213357 1.038296 +v 20.313610 4.419887 0.000000 +v 20.313610 4.213357 -1.038296 +v 20.313610 -0.211831 1.918521 +v 21.630833 2.543696 1.314636 +v 21.630833 1.940536 1.717654 +v 23.161669 1.704029 1.096937 +v 23.161669 2.089221 0.839559 +v 21.630833 3.088236 0.000000 +v 21.630833 2.946714 -0.711476 +v 21.630833 -0.085575 1.314636 +v 21.630833 2.543696 -1.314635 +v 21.630833 0.517585 1.717654 +v 21.630833 1.940536 -1.717654 +v 21.630833 1.229060 1.859176 +v 21.630833 1.229060 -1.859176 +v 21.630833 0.517585 -1.717654 +v 21.630833 -0.085575 -1.314635 +v 21.630833 -0.488594 -0.711476 +v 21.630833 2.946714 0.711476 +v 23.161669 1.704029 -1.096937 +v 23.161669 2.089221 -0.839559 +v 23.950235 1.751938 -0.467252 +v 23.950235 1.537561 -0.610494 +v 23.161669 0.410103 -0.839559 +v 23.161669 0.152726 -0.454366 +v 23.161669 2.346599 0.454366 +v 23.161669 0.062347 0.000000 +v 23.161669 2.436978 0.000000 +v 23.161669 0.152726 0.454366 +v 23.161669 2.346599 -0.454366 +v 23.161669 0.410103 0.839559 +v 23.161669 0.795296 1.096937 +v 23.161669 1.249662 1.187316 +v 23.161669 1.249662 -1.187316 +v 23.161669 0.795296 -1.096937 +v 23.950235 1.031812 -0.610494 +v 23.950235 1.284687 -0.660794 +v 23.950235 1.895180 -0.252875 +v 23.950235 1.945480 0.000000 +v 23.950235 1.895180 0.252875 +v 23.950235 1.751938 0.467252 +v 23.950235 1.537561 0.610494 +v 23.950235 1.284687 0.660794 +v 23.950235 1.031812 0.610494 +v 23.950235 0.817435 0.467252 +v 23.950235 0.674193 0.252875 +v 23.950235 0.623893 0.000000 +v 23.950235 0.674193 -0.252875 +v 23.950235 0.817435 -0.467252 +v -23.618507 18.840416 -0.394288 +v -23.811937 6.847831 -0.394289 +v -29.203978 8.049699 0.000000 +v -18.412893 8.049699 0.000000 +v -23.272705 18.840416 0.000001 +v -23.618507 18.840416 0.394290 +v -18.758696 8.049699 0.404003 +v -23.811937 6.847831 0.394289 +v -16.836498 7.231033 0.394289 +v -26.797274 19.118101 0.000001 +v -29.365820 6.847831 0.000000 +v -23.435175 6.224818 -0.513844 +v -29.125296 6.008132 0.000000 +v -16.490694 7.231033 0.000000 +v -10.014664 5.966194 0.451128 +v -23.435175 6.224818 0.513844 +v -22.237053 5.198684 1.199751 +v -16.683172 5.198684 1.199751 +v -26.535391 5.330534 1.007645 +v -7.680647 5.966194 0.000000 +v -16.836498 7.231033 -0.394289 +v -10.014664 5.966194 -0.451128 +v -27.328730 4.765311 0.844866 +v -22.237053 5.198684 -1.199751 +v -26.535391 5.330534 -1.007645 +v -16.683172 5.198684 -1.199751 +v -27.328730 4.765311 -0.844866 +v -18.758696 8.049699 -0.404003 +v -21.774847 4.765311 -0.844866 +v -21.774847 4.765311 0.000000 +v -21.774847 4.765311 0.844866 +v -27.797274 18.840416 0.000001 +v -20.182421 5.820175 -13.388203 +v -17.837469 5.820174 -0.207668 +v -17.837469 5.519457 -0.207668 +v -20.182421 5.519457 -13.388203 +v -21.592556 6.009354 -13.388203 +v -23.479408 6.009353 -0.207668 +v -18.044111 6.009353 -0.207668 +v -20.374386 6.009354 -13.388203 +v -20.374386 5.330279 -13.388203 +v -18.044111 5.330279 -0.207668 +v -23.479408 5.330279 -0.207668 +v -21.592556 5.330279 -13.388203 +v -23.225643 5.669816 -13.388203 +v -25.237371 5.669816 -0.207668 +v -20.182421 5.519456 13.388203 +v -17.837469 5.519459 0.207668 +v -17.837469 5.820175 0.207668 +v -20.182421 5.820174 13.388203 +v -21.592556 5.330278 13.388203 +v -23.479408 5.330280 0.207668 +v -18.044111 5.330279 0.207668 +v -20.374386 5.330278 13.388203 +v -20.374386 6.009353 13.388203 +v -18.044111 6.009354 0.207668 +v -23.479408 6.009354 0.207668 +v -21.592556 6.009353 13.388203 +v -23.225643 5.669816 13.388203 +v -25.237371 5.669816 0.207668 +v -14.045300 3.096631 0.848939 +v -14.045300 3.514056 1.568635 +v -14.045300 3.096631 -0.848939 +v -14.045300 2.950051 0.000000 +v -14.045300 3.514056 -1.568635 +v -5.371254 0.311145 -2.707351 +v -5.371254 -0.518828 -1.465208 +v -5.371254 -0.518828 1.465208 +v -5.371254 0.311145 2.707351 +v -5.371254 -0.810276 -0.000000 +v 2.656979 -0.906801 -1.548738 +v 4.656979 -0.906801 -1.548738 +v 4.656979 -1.282411 -2.455540 +v 2.656979 -1.282411 -2.455540 +v 4.656979 -0.906801 -3.362341 +v 2.656979 -0.906801 -3.362341 +v 4.656979 0.000000 -3.737951 +v 2.656979 0.000000 -3.737951 +v 4.656979 0.906801 -3.362341 +v 2.656979 0.906801 -3.362341 +v 1.209754 0.906801 -3.362341 +v 1.209754 0.000000 -3.737951 +v 1.209754 -1.282411 -2.455540 +v 1.209754 -0.906801 -3.362341 +v 0.003049 -0.392748 -2.648372 +v 0.003049 -0.768357 -1.741571 +v 6.104204 0.000000 -3.737951 +v 6.104204 0.906802 -3.362341 +v 6.104204 -1.282411 -2.455540 +v 6.104204 -0.906801 -3.362341 +v 1.209754 -0.906801 -1.548738 +v 6.104204 -0.906801 -1.548738 +v 7.310909 -0.768357 -1.741571 +v 7.310909 -0.392747 -2.648372 +v 0.003049 0.514054 -3.023982 +v 7.310909 0.514054 -3.023982 +v 0.003048 1.420855 -2.648372 +v 7.310909 1.420856 -2.648372 +v 0.003049 -0.392748 -0.834769 +v 7.310909 -0.392747 -0.834769 +v 2.656979 -0.906801 1.548734 +v 4.656979 -0.906801 1.548734 +v 4.656979 -1.282411 2.455535 +v 2.656979 -1.282411 2.455535 +v 4.656979 -0.906801 3.362337 +v 2.656979 -0.906801 3.362337 +v 4.656979 -0.000000 3.737946 +v 2.656979 -0.000000 3.737946 +v 4.656979 0.906801 3.362337 +v 2.656979 0.906802 3.362337 +v 1.209754 0.906802 3.362337 +v 1.209754 -0.000000 3.737946 +v 1.209754 -1.282411 2.455535 +v 1.209754 -0.906801 3.362337 +v 0.003049 -0.392747 2.648367 +v 0.003049 -0.768357 1.741566 +v 6.104204 -0.000000 3.737946 +v 6.104204 0.906801 3.362337 +v 6.104204 -1.282411 2.455535 +v 6.104204 -0.906801 3.362337 +v 1.209754 -0.906801 1.548734 +v 6.104204 -0.906801 1.548734 +v 7.310909 -0.768357 1.741566 +v 7.310909 -0.392748 2.648367 +v 0.003049 0.514054 3.023977 +v 7.310909 0.514054 3.023977 +v 0.003049 1.420856 2.648367 +v 7.310909 1.420855 2.648367 +v 0.003049 -0.392747 0.834765 +v 7.310909 -0.392748 0.834765 +v 1.500305 3.122780 -17.418180 +v 2.907010 3.122780 -17.418180 +v 2.907010 2.581584 -16.876984 +v 1.500305 2.581584 -16.876984 +v 2.907010 2.581584 -16.111618 +v 1.500305 2.581584 -16.111618 +v 2.907010 3.122780 -15.570421 +v 1.500305 3.122781 -15.570421 +v 2.907010 3.888147 -15.570421 +v 1.500305 3.888147 -15.570421 +v 2.907010 4.429342 -16.111618 +v 1.500305 4.429342 -16.111618 +v 2.907010 4.429343 -16.876984 +v 2.907010 5.216080 -16.876984 +v 2.907010 5.216080 -16.111618 +v 2.907010 3.888147 -17.418180 +v 5.008881 4.429343 -16.876984 +v 5.008881 3.888147 -17.418180 +v 1.500305 4.429343 -16.876984 +v 1.500305 3.888147 -17.418180 +v 5.008881 2.581584 -16.876984 +v 5.008881 2.581584 -16.111618 +v -0.285478 4.429344 -16.111618 +v -0.285478 3.888148 -15.570421 +v 5.008881 3.888147 -15.570421 +v 5.008881 4.429342 -16.111618 +v -0.285478 3.122781 -15.570421 +v -0.285478 2.581584 -16.111618 +v -0.285478 3.122781 -17.418180 +v -0.285478 3.888147 -17.418180 +v -0.285478 2.581584 -16.876984 +v 5.008881 3.122780 -15.570421 +v 5.008881 3.122780 -17.418180 +v -0.285478 4.429343 -16.876984 +v -6.039415 3.505464 -16.494301 +v 7.367077 3.369535 -16.822462 +v 7.367077 3.177303 -16.630230 +v 7.367077 3.641392 -16.822462 +v 7.367077 3.833624 -16.630230 +v 7.367077 3.833624 -16.358374 +v 7.367077 3.641392 -16.166142 +v 7.367077 3.369535 -16.166142 +v 7.367077 3.177303 -16.358374 +v 1.500305 5.216080 -16.111618 +v 1.500305 5.216080 -16.876984 +v 4.805163 4.210103 -12.231182 +v 7.559474 4.239601 -11.989785 +v 7.559474 3.025841 -11.747283 +v 4.805163 2.904310 -11.917976 +v 7.559474 2.783338 -11.161830 +v 4.805163 2.591105 -11.161829 +v 7.559474 3.025841 -10.576376 +v 4.805163 2.904310 -10.405683 +v 7.559474 4.239601 -10.333874 +v 4.805163 4.210103 -10.092476 +v 7.559474 4.825054 -10.576376 +v 4.805163 4.966249 -10.405683 +v 7.559474 5.067556 -11.161829 +v 4.805163 5.279455 -11.161829 +v 8.887003 3.803822 -11.568155 +v 8.887003 3.635535 -11.161875 +v 7.559474 4.825054 -11.747282 +v 4.805163 4.966249 -11.917976 +v 8.887003 4.210102 -11.736441 +v 8.887003 4.616381 -11.568155 +v 8.887003 4.784667 -11.161875 +v 8.887003 4.616381 -10.755596 +v 8.887003 4.210102 -10.587309 +v 8.887003 3.803822 -10.755596 +v 2.193453 4.210103 -12.231182 +v 2.193453 2.904310 -11.917976 +v -0.516882 3.711920 -11.527017 +v -0.516882 4.254626 -11.678282 +v 2.193453 4.210103 -10.092476 +v 2.193453 2.904310 -10.405683 +v 2.193453 2.591105 -11.161829 +v 2.193453 4.966249 -10.405683 +v 2.193453 4.966249 -11.917976 +v -0.516882 3.560654 -11.161829 +v -0.516882 3.711920 -10.796642 +v -0.516882 4.254626 -10.645377 +v -0.516882 4.619813 -10.796642 +v -0.516882 4.771080 -11.161829 +v -0.516882 4.619813 -11.527017 +v 2.193454 5.279455 -11.161829 +v 4.354962 5.543211 -34.577400 +v 4.464384 5.455995 -34.388062 +v 4.464384 5.200350 -34.388062 +v 4.365958 5.151175 -34.558372 +v 3.854457 5.349201 -35.443459 +v 3.854457 5.543211 -35.443459 +v 4.245422 5.113065 -34.399647 +v 4.746218 4.829812 -10.770060 +v -3.556738 5.186512 -10.723449 +v -0.380831 5.328140 -34.644386 +v 4.245421 5.543215 -34.399647 +v 1.347604 5.543211 -35.483459 +v 4.964909 4.917097 -10.771288 +v 4.964909 5.455994 -10.771288 +v 4.999471 5.455992 -4.836422 +v 4.999471 4.779428 -4.836423 +v 1.347604 5.349200 -35.483459 +v 4.746218 5.543214 -10.770059 +v -3.470909 4.692151 -4.788582 +v -3.470909 5.543211 -4.788580 +v -5.886427 4.692151 -2.723212 +v -5.886427 5.543211 -1.772059 +v 4.780781 4.692149 -4.835188 +v 4.780781 5.543209 -4.835186 +v 4.999470 5.455994 -2.717648 +v 4.999470 4.779427 -2.717649 +v 4.780781 4.692150 -2.717762 +v 4.780781 5.543210 -2.717758 +v 4.780214 5.543206 -1.608046 +v 4.998903 5.455990 -1.607934 +v 4.805163 4.210103 -21.609173 +v 7.559474 4.239601 -21.367777 +v 7.559474 3.025841 -21.125275 +v 4.805162 2.904311 -21.295967 +v 7.559474 2.783338 -20.539822 +v 4.805162 2.591105 -20.539822 +v 7.559474 3.025841 -19.954369 +v 4.805162 2.904311 -19.783674 +v 7.559474 4.239601 -19.711866 +v 4.805163 4.210102 -19.470469 +v 7.559474 4.825054 -19.954369 +v 4.805163 4.966249 -19.783674 +v 7.559474 5.067557 -20.539822 +v 4.805163 5.279455 -20.539822 +v 8.887003 3.803822 -20.946146 +v 8.887003 3.635536 -20.539867 +v 7.559474 4.825054 -21.125275 +v 4.805163 4.966250 -21.295967 +v 2.193454 5.279455 -20.539822 +v 2.193453 4.966249 -19.783674 +v 8.887003 4.210102 -21.114433 +v 8.887003 4.616381 -20.946148 +v 8.887003 4.784668 -20.539867 +v 8.887003 4.616381 -20.133587 +v 8.887003 4.210101 -19.965302 +v 8.887003 3.803822 -20.133587 +v 2.193453 4.210103 -21.609173 +v 2.193453 2.904311 -21.295967 +v -0.516882 3.711920 -20.905008 +v -0.516882 4.254626 -21.056274 +v 2.193453 4.210102 -19.470469 +v 2.193453 2.904311 -19.783674 +v 2.193453 4.966249 -21.295967 +v 2.193453 2.591105 -20.539822 +v -0.516882 3.560655 -20.539822 +v -0.516882 3.711921 -20.174635 +v -0.516882 4.254626 -20.023371 +v -0.516882 4.619814 -20.174635 +v -0.516882 4.771080 -20.539822 +v -0.516882 4.619813 -20.905008 +v 4.998903 4.779424 -1.607935 +v -5.886994 5.543206 -1.613495 +v 1.500305 3.122778 17.418180 +v 2.907010 3.122778 17.418180 +v 2.907010 2.581582 16.876984 +v 1.500305 2.581582 16.876984 +v 2.907010 2.581582 16.111618 +v 1.500305 2.581582 16.111618 +v 2.907010 3.122779 15.570421 +v 1.500305 3.122779 15.570421 +v 2.907010 3.888145 15.570421 +v 1.500305 3.888145 15.570421 +v 2.907010 4.429341 16.111618 +v 1.500305 4.429341 16.111618 +v 2.907010 4.429341 16.876984 +v 2.907010 5.216078 16.876984 +v 2.907010 5.216079 16.111618 +v 2.907010 3.888145 17.418180 +v 5.008881 4.429341 16.876984 +v 5.008881 3.888145 17.418180 +v 1.500305 4.429341 16.876984 +v 1.500305 3.888145 17.418180 +v 5.008881 2.581582 16.876984 +v 5.008881 2.581582 16.111618 +v -0.285478 4.429343 16.111618 +v -0.285478 3.888146 15.570421 +v 5.008881 3.888145 15.570421 +v 5.008881 4.429341 16.111618 +v -0.285478 3.122779 15.570421 +v -0.285478 2.581582 16.111618 +v -0.285478 3.122778 17.418180 +v -0.285478 3.888145 17.418180 +v -0.285478 2.581582 16.876984 +v 5.008881 3.122778 15.570421 +v 5.008881 3.122778 17.418180 +v -0.285478 4.429341 16.876984 +v -6.039415 3.505462 16.494301 +v 7.367077 3.369533 16.822462 +v 7.367077 3.177301 16.630230 +v 7.367077 3.641390 16.822462 +v 7.367077 3.833622 16.630230 +v 7.367077 3.833622 16.358374 +v 7.367077 3.641390 16.166142 +v 7.367077 3.369533 16.166142 +v 7.367077 3.177301 16.358374 +v 1.500305 5.216079 16.111618 +v 1.500305 5.216078 16.876984 +v 4.805163 4.210102 12.231182 +v 7.559474 4.239600 11.989785 +v 7.559474 3.025840 11.747282 +v 4.805163 2.904310 11.917976 +v 7.559474 2.783338 11.161830 +v 4.805163 2.591104 11.161829 +v 7.559474 3.025840 10.576376 +v 4.805163 2.904310 10.405683 +v 7.559474 4.239600 10.333874 +v 4.805163 4.210102 10.092476 +v 7.559474 4.825053 10.576376 +v 4.805163 4.966249 10.405683 +v 7.559474 5.067555 11.161829 +v 4.805163 5.279455 11.161829 +v 8.887003 3.803821 11.568155 +v 8.887003 3.635535 11.161875 +v 7.559474 4.825053 11.747282 +v 4.805163 4.966249 11.917976 +v 8.887003 4.210101 11.736441 +v 8.887003 4.616380 11.568155 +v 8.887003 4.784667 11.161875 +v 8.887003 4.616381 10.755596 +v 8.887003 4.210101 10.587309 +v 8.887003 3.803821 10.755596 +v 2.193453 4.210102 12.231182 +v 2.193453 2.904310 11.917976 +v -0.516882 3.711920 11.527017 +v -0.516882 4.254625 11.678282 +v 2.193453 4.210102 10.092476 +v 2.193453 2.904310 10.405683 +v 2.193453 2.591104 11.161829 +v 2.193453 4.966249 10.405683 +v 2.193453 4.966249 11.917976 +v -0.516882 3.560653 11.161829 +v -0.516882 3.711920 10.796642 +v -0.516882 4.254625 10.645377 +v -0.516882 4.619812 10.796642 +v -0.516882 4.771079 11.161829 +v -0.516882 4.619812 11.527017 +v 2.193454 5.279454 11.161829 +v 4.354962 5.543208 34.577400 +v 4.464384 5.455991 34.388062 +v 4.464384 5.200346 34.388062 +v 4.365958 5.151172 34.558372 +v 3.854456 5.349198 35.443459 +v 3.854457 5.543209 35.443459 +v 4.245422 5.113067 34.399647 +v 4.746218 4.829815 10.770060 +v -3.556738 5.186512 10.723449 +v -0.380831 5.328137 34.644386 +v 4.245421 5.543208 34.399647 +v 1.347604 5.543208 35.483459 +v 4.964909 4.917096 10.771288 +v 4.964909 5.455994 10.771288 +v 4.999471 5.455993 4.836423 +v 4.999471 4.779428 4.836423 +v 1.347604 5.349197 35.483459 +v 4.746218 5.543210 10.770059 +v -3.470909 4.692152 4.788581 +v -3.470909 5.543211 4.788581 +v -5.886427 4.692151 2.723212 +v -5.886427 5.543211 1.772059 +v 4.780781 4.692150 4.835188 +v 4.780781 5.543209 4.835187 +v 4.999470 5.455994 2.717648 +v 4.999470 4.779428 2.717649 +v 4.780781 4.692151 2.717762 +v 4.780781 5.543211 2.717758 +v 4.780214 5.543207 1.608046 +v 4.998903 5.455990 1.607934 +v 4.805163 4.210100 21.609173 +v 7.559474 4.239599 21.367777 +v 7.559474 3.025839 21.125275 +v 4.805162 2.904309 21.295967 +v 7.559474 2.783336 20.539822 +v 4.805162 2.591103 20.539822 +v 7.559474 3.025839 19.954369 +v 4.805162 2.904309 19.783674 +v 7.559474 4.239599 19.711866 +v 4.805163 4.210100 19.470469 +v 7.559474 4.825052 19.954369 +v 4.805163 4.966247 19.783674 +v 7.559474 5.067555 20.539822 +v 4.805163 5.279453 20.539822 +v 8.887003 3.803820 20.946146 +v 8.887003 3.635534 20.539867 +v 7.559474 4.825052 21.125275 +v 4.805163 4.966248 21.295967 +v 2.193454 5.279453 20.539822 +v 2.193453 4.966247 19.783674 +v 8.887003 4.210099 21.114433 +v 8.887003 4.616379 20.946148 +v 8.887003 4.784666 20.539867 +v 8.887003 4.616379 20.133587 +v 8.887003 4.210099 19.965302 +v 8.887003 3.803820 20.133587 +v 2.193453 4.210101 21.609173 +v 2.193453 2.904309 21.295967 +v -0.516882 3.711918 20.905008 +v -0.516882 4.254624 21.056274 +v 2.193453 4.210100 19.470469 +v 2.193453 2.904309 19.783674 +v 2.193453 4.966247 21.295967 +v 2.193453 2.591103 20.539822 +v -0.516882 3.560653 20.539822 +v -0.516882 3.711918 20.174635 +v -0.516882 4.254624 20.023371 +v -0.516882 4.619812 20.174635 +v -0.516882 4.771078 20.539822 +v -0.516882 4.619811 20.905008 +v 4.998903 4.779424 1.607935 +v -5.886994 5.543207 1.613495 +v 1.683473 5.441774 -10.576500 +v 4.056783 5.531373 -10.576500 +v 4.056783 5.531373 -18.701500 +v 1.683473 5.441775 -18.701500 +v 1.683473 5.441773 18.701500 +v 4.056783 5.531371 18.701500 +v 4.056783 5.531372 10.576500 +v 1.683473 5.441773 10.576500 +v 1.176675 5.141184 -25.716265 +v 3.549040 5.029347 -25.716265 +v 3.552980 5.112920 -33.840836 +v 1.180615 5.224756 -33.840836 +v 1.176675 5.141182 25.716253 +v 3.549040 5.029345 25.716253 +v 3.552980 5.112917 33.840820 +v 1.180615 5.224753 33.840820 +vt 0.181250 0.853333 +vt 0.188750 0.858333 +vt 0.185000 0.868333 +vt 0.101250 0.863333 +vt 0.097500 0.865000 +vt 0.093750 0.863333 +vt 0.177500 0.858333 +vt 0.185000 0.853333 +vt 0.188750 0.863333 +vt 0.101250 0.863333 +vt 0.097500 0.865000 +vt 0.093750 0.863333 +vt 0.181250 0.868333 +vt 0.185000 0.868333 +vt 0.188750 0.863333 +vt 0.101250 0.851667 +vt 0.097500 0.850000 +vt 0.093750 0.851667 +vt 0.627500 0.311667 +vt 0.625000 0.311667 +vt 0.625000 0.315000 +vt 0.671250 0.191667 +vt 0.902500 0.131667 +vt 0.673750 0.131667 +vt 0.643750 0.138333 +vt 0.636250 0.131667 +vt 0.633750 0.133333 +vt 0.387500 0.311667 +vt 0.330000 0.318333 +vt 0.387500 0.318333 +vt 0.638750 0.311667 +vt 0.663750 0.315000 +vt 0.663750 0.311667 +vt 0.620000 0.315000 +vt 0.620000 0.318333 +vt 0.636250 0.193333 +vt 0.398750 0.133333 +vt 0.398750 0.241667 +vt 0.682500 0.311667 +vt 0.825000 0.295000 +vt 0.765000 0.295000 +vt 0.765000 0.306667 +vt 0.732500 0.310000 +vt 0.960000 0.238333 +vt 0.902500 0.238333 +vt 0.340000 0.241667 +vt 0.308750 0.310000 +vt 0.330000 0.310000 +vt 0.980000 0.131667 +vt 0.960000 0.131667 +vt 0.318750 0.133333 +vt 0.340000 0.133333 +vt 0.307500 0.130000 +vt 0.318750 0.130000 +vt 0.673750 0.128333 +vt 0.671250 0.130000 +vt 0.633750 0.130000 +vt 0.398750 0.130000 +vt 0.340000 0.130000 +vt 0.960000 0.128333 +vt 0.980000 0.128333 +vt 0.662500 0.168333 +vt 0.181250 0.853333 +vt 0.177500 0.863333 +vt 0.185000 0.868333 +vt 0.101250 0.851667 +vt 0.097500 0.850000 +vt 0.093750 0.851667 +vt 0.297500 0.318333 +vt 0.308750 0.318333 +vt 0.307500 0.133333 +vt 0.310000 0.273333 +vt 0.411250 0.090000 +vt 0.330000 0.058333 +vt 0.411250 0.058333 +vt 0.411250 0.090000 +vt 0.330000 0.058333 +vt 0.411250 0.058333 +vt 0.411250 0.058333 +vt 0.330000 0.090000 +vt 0.330000 0.058333 +vt 0.411250 0.090000 +vt 0.330000 0.058333 +vt 0.411250 0.058333 +vt 0.185000 0.853333 +vt 0.188750 0.863333 +vt 0.181250 0.868333 +vt 0.177500 0.863333 +vt 0.177500 0.858333 +vt 0.092500 0.858333 +vt 0.102500 0.858333 +vt 0.093750 0.851667 +vt 0.101250 0.851667 +vt 0.097500 0.850000 +vt 0.185000 0.868333 +vt 0.181250 0.868333 +vt 0.177500 0.863333 +vt 0.181250 0.853333 +vt 0.188750 0.858333 +vt 0.092500 0.858333 +vt 0.102500 0.858333 +vt 0.093750 0.851667 +vt 0.101250 0.851667 +vt 0.097500 0.850000 +vt 0.188750 0.858333 +vt 0.185000 0.853333 +vt 0.181250 0.853333 +vt 0.177500 0.858333 +vt 0.177500 0.863333 +vt 0.092500 0.858333 +vt 0.102500 0.858333 +vt 0.093750 0.863333 +vt 0.101250 0.863333 +vt 0.097500 0.865000 +vt 0.627500 0.316667 +vt 0.637500 0.316667 +vt 0.637500 0.313333 +vt 0.645000 0.171667 +vt 0.638750 0.315000 +vt 0.726250 0.295000 +vt 0.980000 0.268333 +vt 0.902500 0.128333 +vt 0.662500 0.136667 +vt 0.188750 0.863333 +vt 0.188750 0.858333 +vt 0.185000 0.853333 +vt 0.177500 0.858333 +vt 0.181250 0.868333 +vt 0.092500 0.858333 +vt 0.102500 0.858333 +vt 0.093750 0.863333 +vt 0.101250 0.863333 +vt 0.097500 0.865000 +vt 0.297500 0.310000 +vt 0.307500 0.273333 +vt 0.330000 0.090000 +vt 0.330000 0.090000 +vt 0.411250 0.090000 +vt 0.330000 0.090000 +vt 0.620000 0.603333 +vt 0.362500 0.623333 +vt 0.362500 0.603333 +vt 0.620000 0.623333 +vt 0.362500 0.643333 +vt 0.620000 0.643333 +vt 0.362500 0.663333 +vt 0.620000 0.663333 +vt 0.362500 0.683333 +vt 0.620000 0.683333 +vt 0.362500 0.703333 +vt 0.620000 0.703333 +vt 0.362500 0.723333 +vt 0.620000 0.723333 +vt 0.362500 0.743333 +vt 0.620000 0.743333 +vt 0.362500 0.763333 +vt 0.620000 0.763333 +vt 0.362500 0.783333 +vt 0.620000 0.783333 +vt 0.362500 0.803333 +vt 0.620000 0.803333 +vt 0.362500 0.823333 +vt 0.620000 0.823333 +vt 0.362500 0.843333 +vt 0.620000 0.523333 +vt 0.362500 0.543333 +vt 0.362500 0.523333 +vt 0.620000 0.543333 +vt 0.362500 0.563333 +vt 0.635000 0.623333 +vt 0.635000 0.643333 +vt 0.620000 0.563333 +vt 0.362500 0.583333 +vt 0.620000 0.583333 +vt 0.222500 0.551667 +vt 0.222500 0.558333 +vt 0.197500 0.555000 +vt 0.273750 0.665000 +vt 0.217500 0.676667 +vt 0.217500 0.665000 +vt 0.271250 0.758333 +vt 0.216250 0.750000 +vt 0.271250 0.748333 +vt 0.271250 0.608333 +vt 0.215000 0.616667 +vt 0.215000 0.611667 +vt 0.275000 0.528333 +vt 0.222500 0.538333 +vt 0.222500 0.531667 +vt 0.273750 0.711667 +vt 0.217500 0.700000 +vt 0.273750 0.700000 +vt 0.275000 0.820000 +vt 0.222500 0.810000 +vt 0.275000 0.808333 +vt 0.272500 0.588333 +vt 0.218750 0.596667 +vt 0.218750 0.591667 +vt 0.273750 0.676667 +vt 0.217500 0.688333 +vt 0.272500 0.778333 +vt 0.218750 0.770000 +vt 0.272500 0.768333 +vt 0.275000 0.548333 +vt 0.268750 0.628333 +vt 0.212500 0.636667 +vt 0.212500 0.631667 +vt 0.268750 0.738333 +vt 0.212500 0.730000 +vt 0.268750 0.728333 +vt 0.275000 0.838333 +vt 0.222500 0.828333 +vt 0.275000 0.826667 +vt 0.273750 0.688333 +vt 0.273750 0.798333 +vt 0.220000 0.790000 +vt 0.273750 0.788333 +vt 0.635000 0.583333 +vt 0.656250 0.563333 +vt 0.656250 0.583333 +vt 0.635000 0.743333 +vt 0.635000 0.843333 +vt 0.620000 0.843333 +vt 0.635000 0.703333 +vt 0.635000 0.803333 +vt 0.635000 0.563333 +vt 0.635000 0.663333 +vt 0.635000 0.763333 +vt 0.635000 0.603333 +vt 0.635000 0.523333 +vt 0.635000 0.543333 +vt 0.635000 0.723333 +vt 0.635000 0.823333 +vt 0.635000 0.683333 +vt 0.635000 0.783333 +vt 0.656250 0.686667 +vt 0.670000 0.698333 +vt 0.656250 0.701667 +vt 0.656250 0.763333 +vt 0.656250 0.603333 +vt 0.656250 0.623333 +vt 0.656250 0.783333 +vt 0.656250 0.643333 +vt 0.656250 0.803333 +vt 0.656250 0.663333 +vt 0.656250 0.823333 +vt 0.656250 0.683333 +vt 0.656250 0.843333 +vt 0.656250 0.703333 +vt 0.656250 0.523333 +vt 0.656250 0.543333 +vt 0.656250 0.723333 +vt 0.656250 0.743333 +vt 0.673750 0.798333 +vt 0.690000 0.790000 +vt 0.690000 0.796667 +vt 0.656250 0.541667 +vt 0.675000 0.530000 +vt 0.675000 0.540000 +vt 0.656250 0.705000 +vt 0.670000 0.716667 +vt 0.656250 0.720000 +vt 0.656250 0.561667 +vt 0.673750 0.550000 +vt 0.673750 0.560000 +vt 0.656250 0.725000 +vt 0.671250 0.736667 +vt 0.656250 0.740000 +vt 0.656250 0.581667 +vt 0.673750 0.570000 +vt 0.673750 0.580000 +vt 0.656250 0.746667 +vt 0.671250 0.758333 +vt 0.656250 0.761667 +vt 0.656250 0.620000 +vt 0.671250 0.608333 +vt 0.671250 0.618333 +vt 0.656250 0.601667 +vt 0.672500 0.590000 +vt 0.672500 0.600000 +vt 0.656250 0.768333 +vt 0.672500 0.780000 +vt 0.656250 0.781667 +vt 0.656250 0.641667 +vt 0.671250 0.630000 +vt 0.671250 0.640000 +vt 0.656250 0.786667 +vt 0.656250 0.801667 +vt 0.656250 0.661667 +vt 0.670000 0.650000 +vt 0.670000 0.660000 +vt 0.656250 0.806667 +vt 0.673750 0.816667 +vt 0.656250 0.820000 +vt 0.656250 0.681667 +vt 0.670000 0.670000 +vt 0.670000 0.680000 +vt 0.656250 0.826667 +vt 0.675000 0.836667 +vt 0.656250 0.840000 +vt 0.690000 0.571667 +vt 0.700000 0.576667 +vt 0.690000 0.578333 +vt 0.686250 0.658333 +vt 0.690000 0.808333 +vt 0.690000 0.815000 +vt 0.686206 0.678333 +vt 0.691250 0.828333 +vt 0.691250 0.835000 +vt 0.686250 0.690000 +vt 0.686250 0.696667 +vt 0.691250 0.538333 +vt 0.686250 0.708333 +vt 0.686250 0.715000 +vt 0.690000 0.558333 +vt 0.687500 0.728333 +vt 0.687500 0.735000 +vt 0.687500 0.750000 +vt 0.687500 0.756667 +vt 0.687500 0.616667 +vt 0.688750 0.598333 +vt 0.688750 0.771667 +vt 0.688750 0.778333 +vt 0.687500 0.638333 +vt 0.717500 0.551667 +vt 0.721250 0.555000 +vt 0.711250 0.565000 +vt 0.697500 0.751667 +vt 0.697500 0.755000 +vt 0.687500 0.610000 +vt 0.697500 0.615000 +vt 0.688750 0.591667 +vt 0.698750 0.596667 +vt 0.698750 0.773333 +vt 0.698750 0.776667 +vt 0.687500 0.631667 +vt 0.697500 0.636667 +vt 0.700000 0.791667 +vt 0.700000 0.795000 +vt 0.686250 0.651667 +vt 0.696250 0.656667 +vt 0.701250 0.810000 +vt 0.701250 0.813333 +vt 0.686250 0.671667 +vt 0.696250 0.676667 +vt 0.701250 0.830000 +vt 0.701250 0.833333 +vt 0.696250 0.691667 +vt 0.696250 0.695000 +vt 0.691250 0.531667 +vt 0.701250 0.536667 +vt 0.696250 0.710000 +vt 0.696250 0.713333 +vt 0.690000 0.551667 +vt 0.700000 0.556667 +vt 0.697500 0.730000 +vt 0.697500 0.733333 +vt 0.212500 0.735000 +vt 0.186250 0.731667 +vt 0.220000 0.571667 +vt 0.220000 0.576667 +vt 0.193750 0.575000 +vt 0.216250 0.755000 +vt 0.190000 0.753333 +vt 0.188750 0.613333 +vt 0.192500 0.595000 +vt 0.218750 0.775000 +vt 0.192500 0.773333 +vt 0.186250 0.635000 +vt 0.220000 0.795000 +vt 0.193750 0.791667 +vt 0.217500 0.668333 +vt 0.217500 0.675000 +vt 0.192500 0.671667 +vt 0.222500 0.816667 +vt 0.197500 0.813333 +vt 0.217500 0.680000 +vt 0.217500 0.686667 +vt 0.192500 0.683333 +vt 0.222500 0.835000 +vt 0.198750 0.831667 +vt 0.217500 0.690000 +vt 0.217500 0.696667 +vt 0.192500 0.693333 +vt 0.198750 0.535000 +vt 0.217500 0.701667 +vt 0.217500 0.708333 +vt 0.192500 0.705000 +vt 0.083750 0.290000 +vt 0.082500 0.125000 +vt 0.027500 0.141667 +vt 0.083750 0.290000 +vt 0.132500 0.141667 +vt 0.132500 0.141667 +vt 0.082500 0.125000 +vt 0.152500 0.130000 +vt 0.246250 0.413333 +vt 0.211250 0.413333 +vt 0.243750 0.406667 +vt 0.026250 0.111667 +vt 0.026250 0.125000 +vt 0.155000 0.130000 +vt 0.118750 0.101667 +vt 0.185000 0.078333 +vt 0.252500 0.101667 +vt 0.087500 0.081667 +vt 0.118750 0.078333 +vt 0.221250 0.111667 +vt 0.242500 0.111667 +vt 0.086250 0.111667 +vt 0.152500 0.130000 +vt 0.086250 0.111667 +vt 0.272500 0.440000 +vt 0.301250 0.440000 +vt 0.272500 0.453333 +vt 0.118750 0.101667 +vt 0.087500 0.081667 +vt 0.061250 0.101667 +vt 0.185000 0.078333 +vt 0.118750 0.078333 +vt 0.301250 0.490000 +vt 0.272500 0.490000 +vt 0.272500 0.476667 +vt 0.221250 0.111667 +vt 0.243750 0.420000 +vt 0.132500 0.141667 +vt 0.217500 0.465000 +vt 0.217500 0.453333 +vt 0.217500 0.476667 +vt 0.217500 0.440000 +vt 0.083750 0.290000 +vt 0.052500 0.295000 +vt 0.042500 0.290000 +vt 0.296250 0.465000 +vt 0.103750 0.321667 +vt 0.106250 0.498333 +vt 0.103750 0.498333 +vt 0.048750 0.321667 +vt 0.101250 0.498333 +vt 0.047500 0.498333 +vt 0.108750 0.498333 +vt 0.162500 0.321667 +vt 0.162500 0.498333 +vt 0.101250 0.321667 +vt 0.108750 0.321667 +vt 0.106250 0.321667 +vt 0.101250 0.500000 +vt 0.030000 0.498333 +vt 0.180000 0.498333 +vt 0.103750 0.321667 +vt 0.106250 0.498333 +vt 0.103750 0.498333 +vt 0.047500 0.321667 +vt 0.101250 0.498333 +vt 0.047500 0.498333 +vt 0.108297 0.498333 +vt 0.162500 0.321667 +vt 0.162500 0.498333 +vt 0.101250 0.321667 +vt 0.108750 0.321667 +vt 0.106250 0.321667 +vt 0.101250 0.500000 +vt 0.030000 0.498333 +vt 0.180000 0.498333 +vt 0.273750 0.568333 +vt 0.230000 0.885000 +vt 0.238750 0.930000 +vt 0.230000 0.930000 +vt 0.271250 0.743333 +vt 0.271250 0.623333 +vt 0.271250 0.603333 +vt 0.275000 0.543333 +vt 0.275000 0.523333 +vt 0.256250 0.885000 +vt 0.247500 0.930000 +vt 0.247500 0.885000 +vt 0.275000 0.803333 +vt 0.272500 0.603333 +vt 0.272500 0.583333 +vt 0.265000 0.885000 +vt 0.256250 0.930000 +vt 0.272500 0.763333 +vt 0.275000 0.563333 +vt 0.268750 0.643333 +vt 0.268750 0.623333 +vt 0.268750 0.723333 +vt 0.275000 0.823333 +vt 0.238750 0.885000 +vt 0.273750 0.783333 +vt 0.273750 0.583333 +vt 0.273750 0.563333 +vt 0.122500 0.990000 +vt 0.216250 0.971667 +vt 0.216250 0.990000 +vt 0.122500 0.916667 +vt 0.216250 0.935000 +vt 0.122500 0.935000 +vt 0.122500 0.971667 +vt 0.216250 0.953333 +vt 0.122500 0.953333 +vt 0.333750 0.885000 +vt 0.318750 0.928333 +vt 0.318750 0.885000 +vt 0.303750 0.928333 +vt 0.303750 0.885000 +vt 0.288750 0.885000 +vt 0.288750 0.928333 +vt 0.333750 0.986667 +vt 0.240000 0.941667 +vt 0.333750 0.941667 +vt 0.333750 0.941667 +vt 0.240000 0.986667 +vt 0.240000 0.941667 +vt 0.273750 0.885000 +vt 0.273750 0.928333 +vt 0.435000 0.963333 +vt 0.415000 0.976667 +vt 0.435000 0.976667 +vt 0.435000 0.950000 +vt 0.415000 0.963333 +vt 0.435000 0.936667 +vt 0.415000 0.950000 +vt 0.435000 0.923333 +vt 0.415000 0.936667 +vt 0.450000 0.936667 +vt 0.450000 0.963333 +vt 0.465000 0.950000 +vt 0.450000 0.950000 +vt 0.415000 0.923333 +vt 0.400000 0.936667 +vt 0.400000 0.950000 +vt 0.450000 0.976667 +vt 0.400000 0.963333 +vt 0.385000 0.950000 +vt 0.462500 0.936667 +vt 0.450000 0.923333 +vt 0.400000 0.923333 +vt 0.387500 0.936667 +vt 0.462500 0.963333 +vt 0.387500 0.963333 +vt 0.400000 0.976667 +vt 0.435000 0.923333 +vt 0.415000 0.936667 +vt 0.415000 0.923333 +vt 0.435000 0.936667 +vt 0.415000 0.950000 +vt 0.435000 0.950000 +vt 0.415000 0.963333 +vt 0.435000 0.963333 +vt 0.415000 0.976667 +vt 0.400000 0.963333 +vt 0.400000 0.936667 +vt 0.385000 0.950000 +vt 0.385000 0.936667 +vt 0.450000 0.976667 +vt 0.435000 0.976667 +vt 0.450000 0.950000 +vt 0.400000 0.950000 +vt 0.450000 0.963333 +vt 0.400000 0.923333 +vt 0.450000 0.936667 +vt 0.465000 0.950000 +vt 0.465000 0.963333 +vt 0.400000 0.976667 +vt 0.387500 0.963333 +vt 0.462500 0.963333 +vt 0.462500 0.976667 +vt 0.387500 0.936667 +vt 0.387500 0.923333 +vt 0.450000 0.923333 +vt 0.462500 0.936667 +vt 0.143750 0.846667 +vt 0.136250 0.828333 +vt 0.143750 0.828333 +vt 0.136250 0.846667 +vt 0.128750 0.828333 +vt 0.121250 0.846667 +vt 0.121250 0.828333 +vt 0.113750 0.846667 +vt 0.113750 0.828333 +vt 0.106250 0.828333 +vt 0.076250 0.898333 +vt 0.068750 0.908333 +vt 0.068750 0.898333 +vt 0.158750 0.846667 +vt 0.151250 0.875000 +vt 0.151250 0.846667 +vt 0.151250 0.828333 +vt 0.158750 0.828333 +vt 0.128750 0.875000 +vt 0.128750 0.846667 +vt 0.113750 0.805000 +vt 0.106250 0.875000 +vt 0.106250 0.846667 +vt 0.128750 0.805000 +vt 0.151250 0.805000 +vt 0.143750 0.805000 +vt 0.121250 0.875000 +vt 0.143750 0.875000 +vt 0.136250 0.875000 +vt 0.166250 0.805000 +vt 0.166250 0.828333 +vt 0.166250 0.846667 +vt 0.158750 0.875000 +vt 0.121250 0.805000 +vt 0.113750 0.875000 +vt 0.136250 0.805000 +vt 0.158750 0.805000 +vt 0.125000 0.726667 +vt 0.155000 0.726667 +vt 0.141250 0.908333 +vt 0.138750 0.908333 +vt 0.117500 0.726667 +vt 0.147500 0.726667 +vt 0.140000 0.726667 +vt 0.106250 0.805000 +vt 0.110000 0.726667 +vt 0.102500 0.871667 +vt 0.101250 0.878333 +vt 0.096250 0.876667 +vt 0.132500 0.726667 +vt 0.162500 0.726667 +vt 0.131250 0.908333 +vt 0.123750 0.908333 +vt 0.116250 0.908333 +vt 0.108750 0.908333 +vt 0.166250 0.875000 +vt 0.161250 0.908333 +vt 0.153750 0.908333 +vt 0.146250 0.908333 +vt 0.055000 0.908333 +vt 0.055000 0.898333 +vt 0.090000 0.898333 +vt 0.076250 0.908333 +vt 0.097500 0.898333 +vt 0.090000 0.908333 +vt 0.075000 0.626667 +vt 0.047500 0.610000 +vt 0.075000 0.608333 +vt 0.047500 0.606667 +vt 0.075000 0.596667 +vt 0.047500 0.586667 +vt 0.075000 0.585000 +vt 0.047500 0.583333 +vt 0.075000 0.566667 +vt 0.047500 0.565000 +vt 0.075000 0.555000 +vt 0.047500 0.553333 +vt 0.075000 0.543333 +vt 0.031250 0.600000 +vt 0.047500 0.598333 +vt 0.075000 0.650000 +vt 0.047500 0.640000 +vt 0.075000 0.638333 +vt 0.047500 0.628333 +vt 0.033750 0.558333 +vt 0.047500 0.556667 +vt 0.033750 0.635000 +vt 0.033750 0.630000 +vt 0.047500 0.626667 +vt 0.033750 0.621667 +vt 0.031250 0.593333 +vt 0.031250 0.586667 +vt 0.033750 0.546667 +vt 0.047500 0.545000 +vt 0.047500 0.566667 +vt 0.033750 0.571667 +vt 0.033750 0.566667 +vt 0.033750 0.646667 +vt 0.033750 0.640000 +vt 0.101250 0.626667 +vt 0.128750 0.618333 +vt 0.128750 0.625000 +vt 0.101250 0.585000 +vt 0.101250 0.608333 +vt 0.101250 0.566667 +vt 0.101250 0.638333 +vt 0.101250 0.596667 +vt 0.128750 0.630000 +vt 0.128750 0.636667 +vt 0.101250 0.543333 +vt 0.128750 0.551667 +vt 0.101250 0.555000 +vt 0.128750 0.575000 +vt 0.128750 0.601667 +vt 0.128750 0.606667 +vt 0.101250 0.650000 +vt 0.128750 0.641667 +vt 0.128750 0.646667 +vt 0.128750 0.563333 +vt 0.128750 0.591667 +vt 0.627500 0.311667 +vt 0.637500 0.313333 +vt 0.627500 0.316667 +vt 0.902500 0.131667 +vt 0.671250 0.191667 +vt 0.673750 0.131667 +vt 0.633750 0.133333 +vt 0.643750 0.138333 +vt 0.645000 0.171667 +vt 0.387500 0.311667 +vt 0.330000 0.318333 +vt 0.330000 0.310000 +vt 0.663750 0.315000 +vt 0.638750 0.311667 +vt 0.663750 0.311667 +vt 0.387500 0.318333 +vt 0.620000 0.315000 +vt 0.620000 0.318333 +vt 0.636250 0.193333 +vt 0.398750 0.133333 +vt 0.682500 0.311667 +vt 0.825000 0.295000 +vt 0.765000 0.306667 +vt 0.765000 0.295000 +vt 0.732500 0.310000 +vt 0.726250 0.295000 +vt 0.960000 0.238333 +vt 0.902500 0.238333 +vt 0.340000 0.241667 +vt 0.340000 0.133333 +vt 0.308750 0.310000 +vt 0.980000 0.131667 +vt 0.980000 0.268333 +vt 0.318750 0.133333 +vt 0.307500 0.130000 +vt 0.318750 0.130000 +vt 0.673750 0.128333 +vt 0.671250 0.130000 +vt 0.633750 0.130000 +vt 0.636250 0.131667 +vt 0.902500 0.128333 +vt 0.398750 0.130000 +vt 0.340000 0.130000 +vt 0.960000 0.128333 +vt 0.960000 0.131667 +vt 0.980000 0.128333 +vt 0.662500 0.168333 +vt 0.662500 0.136667 +vt 0.075000 0.626667 +vt 0.047500 0.610000 +vt 0.075000 0.608333 +vt 0.047500 0.606667 +vt 0.075000 0.596667 +vt 0.047500 0.586667 +vt 0.075000 0.585000 +vt 0.047500 0.583333 +vt 0.075000 0.566667 +vt 0.047500 0.565000 +vt 0.075000 0.555000 +vt 0.047500 0.553333 +vt 0.075000 0.543333 +vt 0.031250 0.600000 +vt 0.047500 0.598333 +vt 0.075000 0.650000 +vt 0.047500 0.640000 +vt 0.075000 0.638333 +vt 0.047500 0.628333 +vt 0.101250 0.543333 +vt 0.101250 0.555000 +vt 0.033750 0.558333 +vt 0.047500 0.556667 +vt 0.033750 0.635000 +vt 0.033750 0.630000 +vt 0.047500 0.626667 +vt 0.033750 0.621667 +vt 0.031250 0.593333 +vt 0.031250 0.586667 +vt 0.033750 0.546667 +vt 0.047500 0.545000 +vt 0.047500 0.566667 +vt 0.033750 0.571667 +vt 0.033750 0.566667 +vt 0.033750 0.646667 +vt 0.033750 0.640000 +vt 0.101250 0.626667 +vt 0.128750 0.618333 +vt 0.128750 0.625000 +vt 0.101250 0.585000 +vt 0.101250 0.650000 +vt 0.101250 0.608333 +vt 0.101250 0.566667 +vt 0.101250 0.638333 +vt 0.101250 0.596667 +vt 0.128750 0.630000 +vt 0.128750 0.636667 +vt 0.128750 0.551667 +vt 0.128750 0.575000 +vt 0.128750 0.601667 +vt 0.128750 0.606667 +vt 0.128750 0.641667 +vt 0.128750 0.646667 +vt 0.128750 0.563333 +vt 0.128750 0.591667 +vt 0.297500 0.318333 +vt 0.297500 0.310000 +vt 0.310000 0.273333 +vt 0.307500 0.133333 +vt 0.136250 0.828333 +vt 0.143750 0.846667 +vt 0.143750 0.828333 +vt 0.128750 0.828333 +vt 0.136250 0.846667 +vt 0.121250 0.828333 +vt 0.128750 0.846667 +vt 0.113750 0.828333 +vt 0.121250 0.846667 +vt 0.106250 0.828333 +vt 0.113750 0.846667 +vt 0.068750 0.908333 +vt 0.076250 0.898333 +vt 0.068750 0.898333 +vt 0.151250 0.875000 +vt 0.158750 0.846667 +vt 0.151250 0.846667 +vt 0.151250 0.828333 +vt 0.158750 0.828333 +vt 0.128750 0.875000 +vt 0.113750 0.805000 +vt 0.106250 0.875000 +vt 0.106250 0.846667 +vt 0.128750 0.805000 +vt 0.151250 0.805000 +vt 0.143750 0.805000 +vt 0.121250 0.875000 +vt 0.143750 0.875000 +vt 0.136250 0.875000 +vt 0.166250 0.805000 +vt 0.166250 0.828333 +vt 0.158750 0.875000 +vt 0.166250 0.846667 +vt 0.121250 0.805000 +vt 0.113750 0.875000 +vt 0.136250 0.805000 +vt 0.158750 0.805000 +vt 0.125000 0.726667 +vt 0.155000 0.726667 +vt 0.141250 0.908333 +vt 0.117500 0.726667 +vt 0.147500 0.726667 +vt 0.140000 0.726667 +vt 0.110000 0.726667 +vt 0.106250 0.805000 +vt 0.097500 0.878333 +vt 0.101250 0.878333 +vt 0.102500 0.876667 +vt 0.132500 0.726667 +vt 0.162500 0.726667 +vt 0.131250 0.908333 +vt 0.123750 0.908333 +vt 0.116250 0.908333 +vt 0.111250 0.908333 +vt 0.161250 0.908333 +vt 0.166250 0.875000 +vt 0.156250 0.908333 +vt 0.146250 0.908333 +vt 0.055000 0.908333 +vt 0.055000 0.898333 +vt 0.076250 0.908333 +vt 0.090000 0.898333 +vt 0.090000 0.908333 +vt 0.097500 0.898333 +vt 0.075000 0.626667 +vt 0.047500 0.610000 +vt 0.047500 0.626667 +vt 0.075000 0.596667 +vt 0.047500 0.606667 +vt 0.075000 0.608333 +vt 0.047500 0.586667 +vt 0.047500 0.595000 +vt 0.075000 0.566667 +vt 0.047500 0.583333 +vt 0.075000 0.585000 +vt 0.075000 0.555000 +vt 0.047500 0.565000 +vt 0.075000 0.543333 +vt 0.047500 0.553333 +vt 0.031250 0.600000 +vt 0.047500 0.598333 +vt 0.075000 0.650000 +vt 0.047500 0.640000 +vt 0.047500 0.648333 +vt 0.075000 0.638333 +vt 0.047500 0.628333 +vt 0.047500 0.636667 +vt 0.033750 0.558333 +vt 0.047500 0.556667 +vt 0.033750 0.635000 +vt 0.033750 0.621667 +vt 0.031250 0.593333 +vt 0.033750 0.546667 +vt 0.047500 0.545000 +vt 0.047500 0.566667 +vt 0.033750 0.571667 +vt 0.033750 0.646667 +vt 0.101250 0.626667 +vt 0.128750 0.618333 +vt 0.101250 0.608333 +vt 0.101250 0.585000 +vt 0.101250 0.566667 +vt 0.101250 0.638333 +vt 0.101250 0.596667 +vt 0.128750 0.630000 +vt 0.128750 0.551667 +vt 0.101250 0.543333 +vt 0.101250 0.555000 +vt 0.128750 0.575000 +vt 0.128750 0.601667 +vt 0.101250 0.650000 +vt 0.128750 0.641667 +vt 0.128750 0.563333 +vt 0.128750 0.591667 +vt 0.075000 0.626667 +vt 0.047500 0.610000 +vt 0.047500 0.626667 +vt 0.075000 0.596667 +vt 0.047500 0.606667 +vt 0.075000 0.608333 +vt 0.047500 0.586667 +vt 0.047500 0.595000 +vt 0.075000 0.566667 +vt 0.047500 0.583333 +vt 0.075000 0.585000 +vt 0.075000 0.555000 +vt 0.047500 0.565000 +vt 0.075000 0.543333 +vt 0.047500 0.553333 +vt 0.031250 0.600000 +vt 0.047500 0.598333 +vt 0.075000 0.650000 +vt 0.047500 0.640000 +vt 0.047500 0.648333 +vt 0.075000 0.638333 +vt 0.047500 0.628333 +vt 0.047500 0.636667 +vt 0.101250 0.543333 +vt 0.033750 0.558333 +vt 0.047500 0.556667 +vt 0.033750 0.635000 +vt 0.033750 0.621667 +vt 0.031250 0.593333 +vt 0.033750 0.546667 +vt 0.047500 0.545000 +vt 0.047500 0.566667 +vt 0.033750 0.571667 +vt 0.033750 0.646667 +vt 0.101250 0.626667 +vt 0.128750 0.618333 +vt 0.101250 0.608333 +vt 0.101250 0.585000 +vt 0.101250 0.650000 +vt 0.101250 0.566667 +vt 0.101250 0.596667 +vt 0.101250 0.638333 +vt 0.128750 0.630000 +vt 0.128750 0.551667 +vt 0.101250 0.555000 +vt 0.128750 0.575000 +vt 0.128750 0.601667 +vt 0.128750 0.641667 +vt 0.128750 0.563333 +vt 0.128750 0.591667 +vt 0.271250 0.618333 +vt 0.275000 0.540000 +vt 0.217500 0.711667 +vt 0.272500 0.598333 +vt 0.275000 0.560000 +vt 0.268750 0.638333 +vt 0.670000 0.688333 +vt 0.673750 0.788333 +vt 0.656250 0.526667 +vt 0.670000 0.706667 +vt 0.656250 0.546667 +vt 0.671250 0.726667 +vt 0.656250 0.566667 +vt 0.671250 0.748333 +vt 0.656250 0.605000 +vt 0.656250 0.586667 +vt 0.672500 0.770000 +vt 0.656250 0.626667 +vt 0.656250 0.646667 +vt 0.673750 0.806667 +vt 0.656250 0.666667 +vt 0.675000 0.826667 +vt 0.700000 0.573333 +vt 0.722500 0.558333 +vt 0.722500 0.561667 +vt 0.721250 0.565000 +vt 0.720000 0.566667 +vt 0.717500 0.568333 +vt 0.715000 0.568333 +vt 0.712500 0.566667 +vt 0.710000 0.561667 +vt 0.712500 0.553333 +vt 0.710000 0.558333 +vt 0.711250 0.555000 +vt 0.715000 0.551667 +vt 0.720000 0.553333 +vt 0.697500 0.611667 +vt 0.698750 0.593333 +vt 0.697500 0.633333 +vt 0.696250 0.653333 +vt 0.696250 0.673333 +vt 0.701250 0.533333 +vt 0.700000 0.553333 +vt 0.061250 0.101610 +vt 0.252500 0.101667 +vt 0.217500 0.490000 +vt 0.108750 0.500000 +vt 0.108750 0.516667 +vt 0.101250 0.516667 +vt 0.105000 0.538333 +vt 0.030000 0.321667 +vt 0.180000 0.321667 +vt 0.108750 0.500000 +vt 0.108750 0.516667 +vt 0.101250 0.516667 +vt 0.105000 0.538333 +vt 0.030000 0.321667 +vt 0.180000 0.321667 +vt 0.273750 0.578333 +vt 0.271250 0.763333 +vt 0.265000 0.930000 +vt 0.272500 0.783333 +vt 0.268750 0.743333 +vt 0.275000 0.843333 +vt 0.273750 0.803333 +vt 0.216250 0.916667 +vt 0.333750 0.928333 +vt 0.240000 0.986667 +vt 0.333750 0.986667 +vt 0.465000 0.963333 +vt 0.385000 0.963333 +vt 0.465000 0.936667 +vt 0.385000 0.936667 +vt 0.462500 0.923333 +vt 0.387500 0.923333 +vt 0.462500 0.976667 +vt 0.387500 0.976667 +vt 0.465000 0.936667 +vt 0.385000 0.963333 +vt 0.387500 0.976667 +vt 0.462500 0.923333 +vt 0.097500 0.870000 +vt 0.101250 0.870000 +vt 0.102500 0.876667 +vt 0.097500 0.878333 +vt 0.096250 0.871667 +vt 0.133750 0.908333 +vt 0.126250 0.908333 +vt 0.118750 0.908333 +vt 0.111250 0.908333 +vt 0.163750 0.908333 +vt 0.156250 0.908333 +vt 0.148750 0.908333 +vt 0.097500 0.908333 +vt 0.047500 0.595000 +vt 0.031250 0.606667 +vt 0.047500 0.648333 +vt 0.047500 0.636667 +vt 0.033750 0.563333 +vt 0.033750 0.626667 +vt 0.033750 0.553333 +vt 0.128750 0.546667 +vt 0.128750 0.568333 +vt 0.128750 0.558333 +vt 0.128750 0.586667 +vt 0.637500 0.316667 +vt 0.625000 0.315000 +vt 0.625000 0.311667 +vt 0.638750 0.315000 +vt 0.398750 0.241667 +vt 0.308750 0.318333 +vt 0.047500 0.595000 +vt 0.031250 0.606667 +vt 0.047500 0.648333 +vt 0.047500 0.636667 +vt 0.033750 0.563333 +vt 0.033750 0.626667 +vt 0.033750 0.553333 +vt 0.128750 0.546667 +vt 0.128750 0.568333 +vt 0.128750 0.558333 +vt 0.128750 0.586667 +vt 0.307500 0.273333 +vt 0.138750 0.908333 +vt 0.102500 0.871667 +vt 0.101250 0.870000 +vt 0.097500 0.870000 +vt 0.096250 0.871667 +vt 0.096250 0.876667 +vt 0.133750 0.908333 +vt 0.126250 0.908333 +vt 0.118750 0.908333 +vt 0.108750 0.908333 +vt 0.163750 0.908333 +vt 0.153750 0.908333 +vt 0.148750 0.908333 +vt 0.097500 0.908333 +vt 0.031250 0.606667 +vt 0.033750 0.563333 +vt 0.033750 0.630000 +vt 0.033750 0.626667 +vt 0.031250 0.586667 +vt 0.033750 0.553333 +vt 0.033750 0.566667 +vt 0.033750 0.640000 +vt 0.128750 0.625000 +vt 0.128750 0.636667 +vt 0.128750 0.546667 +vt 0.128750 0.568333 +vt 0.128750 0.606667 +vt 0.128750 0.646667 +vt 0.128750 0.558333 +vt 0.128750 0.586667 +vt 0.031250 0.606667 +vt 0.033750 0.563333 +vt 0.033750 0.630000 +vt 0.033750 0.626667 +vt 0.031250 0.586667 +vt 0.033750 0.553333 +vt 0.033750 0.566667 +vt 0.033750 0.640000 +vt 0.128750 0.625000 +vt 0.128750 0.636667 +vt 0.128750 0.546667 +vt 0.128750 0.568333 +vt 0.128750 0.606667 +vt 0.128750 0.646667 +vt 0.128750 0.558333 +vt 0.128750 0.586667 +vn 1.0000 0.0000 0.0000 +vn -1.0000 -0.0000 0.0000 +vn 0.8658 0.0000 0.5004 +vn -0.0459 -0.9989 0.0110 +vn 0.0000 1.0000 -0.0000 +vn 1.0000 0.0000 0.0058 +vn 0.0160 0.0000 0.9999 +vn 0.9998 0.0000 0.0212 +vn -0.0429 0.9991 -0.0002 +vn -0.4367 0.0000 0.8996 +vn -0.9999 0.0000 -0.0145 +vn -0.6499 0.0000 0.7600 +vn -0.0432 -0.9957 0.0823 +vn -0.0432 0.9973 0.0593 +vn -0.0000 -1.0000 -0.0000 +vn 0.3704 0.9289 -0.0002 +vn 0.3671 -0.9285 -0.0559 +vn 0.3514 0.9109 -0.2165 +vn 0.3704 0.9288 0.0078 +vn 0.3711 -0.9284 0.0190 +vn 0.3704 0.9289 0.0022 +vn 0.3704 -0.9286 0.0237 +vn 0.3704 0.9289 0.0000 +vn 0.3707 -0.9288 0.0000 +vn -0.0405 -0.9933 0.1083 +vn 1.0000 0.0000 -0.0005 +vn -0.0377 0.9993 0.0000 +vn -0.0471 -0.9988 -0.0103 +vn -0.0471 -0.9988 0.0103 +vn -0.0430 -0.9990 0.0116 +vn -0.0535 0.9883 -0.1431 +vn -0.0465 0.9989 -0.0010 +vn -0.6399 0.5727 0.5124 +vn -0.0001 -0.9997 0.0232 +vn 0.3705 -0.9286 0.0190 +vn 0.3705 -0.9285 0.0237 +vn 0.0119 -0.9743 0.2249 +vn 0.0035 -0.9751 0.2219 +vn 0.0810 0.0057 -0.9967 +vn -0.1343 -0.3904 -0.9108 +vn -0.0938 -0.0125 -0.9955 +vn 0.0630 -0.3770 -0.9241 +vn -0.0927 -0.6622 -0.7436 +vn 0.0473 -0.7034 -0.7093 +vn -0.0000 -0.9239 -0.3827 +vn 0.0367 -0.9224 -0.3845 +vn 0.0329 -0.9995 -0.0000 +vn -0.0000 -0.9239 0.3827 +vn 0.0367 -0.9224 0.3845 +vn -0.0927 -0.6622 0.7436 +vn 0.0473 -0.7034 0.7093 +vn -0.1343 -0.3904 0.9108 +vn 0.0630 -0.3770 0.9241 +vn -0.0938 -0.0125 0.9955 +vn 0.0810 0.0057 0.9967 +vn -0.0550 0.3723 0.9265 +vn 0.0986 0.3856 0.9174 +vn -0.0249 0.7017 0.7120 +vn 0.1131 0.7053 0.6998 +vn -0.0070 0.9226 0.3858 +vn 0.1226 0.9177 0.3779 +vn -0.0014 1.0000 0.0000 +vn 0.1259 0.9920 0.0000 +vn -0.0070 0.9226 -0.3858 +vn 0.1226 0.9177 -0.3779 +vn -0.0249 0.7017 -0.7120 +vn 0.2507 -0.3642 -0.8969 +vn 0.1960 -0.6891 -0.6976 +vn 0.1131 0.7053 -0.6998 +vn -0.0550 0.3723 -0.9265 +vn 0.0986 0.3856 -0.9174 +vn -0.1689 0.9518 -0.2560 +vn -0.2026 0.8198 -0.5356 +vn -0.9999 0.0152 -0.0000 +vn -0.3334 -0.6673 -0.6660 +vn -0.3677 -0.8964 -0.2474 +vn -0.3703 -0.7707 -0.5186 +vn -0.1850 0.0004 0.9827 +vn -0.3649 -0.4770 0.7996 +vn -0.2728 -0.4089 0.8708 +vn -0.1850 0.0004 -0.9827 +vn -0.3649 -0.4770 -0.7996 +vn -0.3264 0.0192 -0.9450 +vn -0.0032 1.0000 0.0000 +vn -0.1583 0.9874 0.0000 +vn -0.3334 -0.6673 0.6660 +vn -0.3677 -0.8964 0.2474 +vn -0.3863 -0.8696 0.3074 +vn -0.0117 0.9403 0.3403 +vn -0.2026 0.8198 0.5356 +vn -0.0419 0.7512 0.6588 +vn -0.1008 0.4241 -0.9000 +vn -0.2608 0.5178 -0.8148 +vn -0.3863 -0.8696 -0.3074 +vn -0.3669 -0.9303 -0.0000 +vn -0.1008 0.4241 0.9000 +vn -0.3264 0.0192 0.9450 +vn -0.0117 0.9403 -0.3403 +vn -0.2728 -0.4089 -0.8708 +vn -0.3703 -0.7707 0.5186 +vn -0.1689 0.9518 0.2560 +vn -0.3977 -0.9175 -0.0000 +vn -0.2608 0.5178 0.8148 +vn 0.3630 0.3606 -0.8592 +vn 0.6235 0.5508 -0.5548 +vn 0.5707 0.3111 -0.7599 +vn 0.2507 -0.3642 0.8969 +vn 0.4384 0.8988 0.0000 +vn 0.1571 -0.9110 0.3812 +vn 0.4042 0.6486 0.6449 +vn 0.4042 0.6486 -0.6449 +vn 0.1571 -0.9110 -0.3812 +vn 0.3097 0.0059 0.9508 +vn 0.3097 0.0059 -0.9508 +vn 0.4298 0.8347 -0.3444 +vn 0.1960 -0.6891 0.6976 +vn 0.4298 0.8347 0.3444 +vn 0.1430 -0.9897 -0.0000 +vn 0.3630 0.3606 0.8592 +vn 0.2476 -0.9689 0.0000 +vn 0.3523 -0.8680 0.3499 +vn 0.2698 -0.8895 0.3687 +vn 0.4980 -0.0029 0.8672 +vn 0.4980 -0.0029 -0.8672 +vn 0.4128 -0.3500 -0.8409 +vn 0.5707 0.3111 0.7599 +vn 0.3303 -0.6676 -0.6672 +vn 0.6235 0.5508 0.5548 +vn 0.2698 -0.8895 -0.3687 +vn 0.6547 0.6978 0.2907 +vn 0.6649 0.7469 -0.0000 +vn 0.6547 0.6978 -0.2907 +vn 0.3303 -0.6676 0.6672 +vn 0.4128 -0.3500 0.8409 +vn 0.5478 0.5836 0.5994 +vn 0.4691 0.3372 0.8162 +vn 0.4631 0.6263 0.6271 +vn 0.5732 0.8194 0.0000 +vn 0.5669 0.7589 -0.3205 +vn 0.3827 -0.6643 0.6421 +vn 0.5478 0.5836 -0.5994 +vn 0.4269 -0.3638 0.8279 +vn 0.5161 0.3131 -0.7973 +vn 0.4737 -0.0189 0.8805 +vn 0.4737 -0.0189 -0.8805 +vn 0.4257 -0.3636 -0.8286 +vn 0.5161 0.3131 0.7973 +vn 0.3827 -0.6643 -0.6421 +vn 0.3523 -0.8680 -0.3499 +vn 0.5669 0.7589 0.3205 +vn 0.3415 -0.9399 0.0000 +vn 0.4631 0.6263 -0.6271 +vn 0.8540 0.2014 -0.4797 +vn 0.4691 0.3372 -0.8162 +vn 0.4920 -0.8044 -0.3329 +vn 0.4591 0.8206 0.3403 +vn 0.4933 -0.8699 -0.0000 +vn 0.4577 0.8891 0.0000 +vn 0.4920 -0.8044 0.3329 +vn 0.4591 0.8206 -0.3403 +vn 0.4883 -0.6175 0.6167 +vn 0.4827 -0.3358 0.8088 +vn 0.4759 -0.0008 0.8795 +vn 0.4827 -0.3358 -0.8088 +vn 0.4759 -0.0008 -0.8795 +vn 0.4883 -0.6175 -0.6167 +vn 0.8654 -0.5011 0.0000 +vn 0.8631 -0.3559 -0.3584 +vn 0.8512 0.3725 0.3698 +vn 0.8604 -0.1928 0.4717 +vn 0.8572 0.0026 0.5149 +vn 0.8604 -0.1928 -0.4717 +vn 0.8572 0.0026 -0.5149 +vn 0.8540 0.2014 0.4797 +vn 0.8648 -0.4635 -0.1931 +vn 0.8493 0.4881 0.2010 +vn 0.8486 0.5290 -0.0000 +vn 0.8648 -0.4635 0.1931 +vn 0.8493 0.4881 -0.2010 +vn 0.8631 -0.3559 0.3584 +vn 0.8512 0.3725 -0.3698 +vn 0.2304 0.6351 -0.7372 +vn -0.0556 0.0738 -0.9957 +vn -0.0764 0.0081 -0.9970 +vn 0.6917 0.7222 -0.0000 +vn 0.2932 0.2402 0.9254 +vn 0.5995 0.8004 0.0000 +vn -0.0477 0.0732 0.9962 +vn 0.1893 0.5721 0.7980 +vn -0.2282 0.9736 0.0000 +vn 0.2304 0.6351 0.7372 +vn -0.9997 0.0243 0.0000 +vn -0.0708 -0.0046 -0.9975 +vn 0.2401 0.9707 -0.0000 +vn -0.0307 0.3710 0.9281 +vn 0.0147 0.6209 0.7838 +vn 0.1072 0.7709 0.6279 +vn -0.0940 0.2428 0.9655 +vn -0.0321 0.0475 0.9984 +vn 0.1421 0.9899 0.0000 +vn 0.1893 0.5721 -0.7980 +vn -0.0307 0.3710 -0.9281 +vn -0.3565 -0.6551 0.6661 +vn -0.0940 0.2428 -0.9655 +vn 0.0147 0.6209 -0.7838 +vn -0.0321 0.0475 -0.9984 +vn -0.3565 -0.6551 -0.6661 +vn 0.1072 0.7709 -0.6279 +vn 0.2892 0.2425 -0.9260 +vn -0.0185 -0.9506 0.3099 +vn -0.0185 -0.9506 -0.3099 +vn -0.0938 0.0570 0.9940 +vn -0.0768 0.0053 0.9970 +vn -0.0708 -0.0046 0.9975 +vn -0.0938 0.0570 -0.9940 +vn 0.9098 0.3822 -0.1619 +vn 0.9036 -0.3973 -0.1603 +vn 0.9036 0.3973 -0.1603 +vn -0.1043 0.9944 -0.0158 +vn 0.3414 0.9380 -0.0604 +vn -0.0931 0.9956 -0.0133 +vn 0.3414 -0.9380 -0.0604 +vn -0.1043 -0.9944 -0.0158 +vn -0.0931 -0.9956 -0.0133 +vn 0.3955 0.9158 -0.0703 +vn 0.3955 -0.9158 -0.0703 +vn 0.9098 -0.3822 -0.1619 +vn 0.0000 0.0000 -1.0000 +vn -0.2024 0.9789 -0.0291 +vn -0.2024 -0.9789 -0.0291 +vn 0.9098 -0.3822 0.1619 +vn 0.9036 0.3973 0.1603 +vn 0.9036 -0.3973 0.1603 +vn -0.1043 -0.9944 0.0158 +vn 0.3414 -0.9380 0.0604 +vn -0.0931 -0.9956 0.0133 +vn 0.3414 0.9380 0.0604 +vn -0.1043 0.9944 0.0158 +vn -0.0931 0.9956 0.0133 +vn 0.3955 -0.9158 0.0704 +vn 0.3955 0.9158 0.0703 +vn 0.9098 0.3822 0.1619 +vn -0.0000 0.0000 1.0000 +vn -0.2024 -0.9789 0.0291 +vn -0.2024 0.9789 0.0291 +vn -0.0419 0.7512 -0.6588 +vn 0.1769 -0.8514 0.4938 +vn 0.1911 -0.9199 0.3424 +vn 0.1922 -0.9249 -0.3279 +vn 0.2034 -0.9791 0.0000 +vn 0.1769 -0.8514 -0.4938 +vn 0.1911 -0.9199 -0.3424 +vn 0.1922 -0.9249 0.3279 +vn -0.3601 -0.7774 -0.5156 +vn -0.3792 -0.8660 -0.3260 +vn -0.3595 -0.8072 -0.4682 +vn -0.3601 -0.7774 0.5156 +vn -0.3792 -0.8660 0.3260 +vn -0.3829 -0.8572 0.3443 +vn -0.3829 -0.8572 -0.3443 +vn -0.3946 -0.9188 0.0000 +vn -0.0478 0.2298 -0.9721 +vn -0.1878 0.9036 -0.3850 +vn -0.1892 0.9107 -0.3673 +vn -0.2034 0.9791 0.0000 +vn -0.1892 0.9107 0.3673 +vn -0.1878 0.9036 0.3850 +vn 0.0460 -0.2216 -0.9740 +vn -0.1276 0.6143 -0.7787 +vn -0.0478 0.2298 0.9721 +vn 0.0460 -0.2216 0.9740 +vn -0.1276 0.6143 0.7787 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 0.3827 -0.9239 +vn -0.2584 -0.0301 -0.9656 +vn -0.2138 -0.9758 -0.0466 +vn -0.5821 -0.5915 -0.5579 +vn -0.2876 -0.6718 -0.6826 +vn 0.2584 -0.0301 -0.9656 +vn 0.2876 -0.6718 -0.6826 +vn -0.0962 -0.9196 0.3809 +vn 0.2138 -0.9758 -0.0466 +vn 0.5821 -0.5915 -0.5579 +vn -0.4781 0.0910 -0.8736 +vn -0.2081 0.3743 -0.9036 +vn 0.2081 0.3743 -0.9036 +vn 0.4781 0.0910 -0.8736 +vn -0.3220 -0.9376 0.1309 +vn 0.3220 -0.9376 0.1309 +vn 0.0962 -0.9196 0.3809 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.3827 0.9239 +vn -0.2584 -0.0301 0.9656 +vn -0.2138 -0.9758 0.0466 +vn -0.5821 -0.5915 0.5579 +vn -0.3220 -0.9376 -0.1309 +vn 0.2081 0.3743 0.9036 +vn 0.2876 -0.6718 0.6826 +vn -0.2876 -0.6718 0.6826 +vn 0.2584 -0.0301 0.9656 +vn -0.0962 -0.9196 -0.3809 +vn 0.2138 -0.9758 0.0466 +vn 0.5821 -0.5915 0.5579 +vn 0.4781 0.0910 0.8736 +vn -0.2081 0.3743 0.9037 +vn -0.4781 0.0910 0.8736 +vn 0.3582 0.3573 0.8626 +vn -0.1649 -0.9112 -0.3774 +vn 0.0962 -0.9196 -0.3809 +vn 0.3220 -0.9376 -0.1309 +vn 0.0000 -0.3827 -0.9239 +vn -0.0000 -0.3827 0.9239 +vn -0.2811 0.6786 0.6786 +vn 0.2811 0.6786 -0.6786 +vn 0.7071 0.0000 0.7071 +vn 0.2811 0.6786 0.6786 +vn 0.1290 0.3795 -0.9162 +vn -0.2811 0.6786 -0.6786 +vn 0.1290 -0.9162 0.3795 +vn -0.0842 0.3813 0.9206 +vn 0.1290 0.9162 0.3795 +vn -0.0842 -0.9206 0.3813 +vn -0.0842 0.3813 -0.9206 +vn -0.0842 -0.3813 -0.9206 +vn 0.1290 -0.3795 0.9162 +vn 0.1290 -0.3795 -0.9162 +vn 0.1290 -0.9162 -0.3795 +vn -0.0842 0.9206 0.3813 +vn 0.1290 0.9162 -0.3795 +vn -0.0842 -0.3813 0.9206 +vn 0.1290 0.3795 0.9162 +vn -0.0842 -0.9206 -0.3813 +vn -0.0842 0.9206 -0.3813 +vn 0.7274 -0.2626 -0.6340 +vn 0.7274 -0.6340 -0.2626 +vn 0.7274 0.6340 -0.2626 +vn 0.7274 0.2626 0.6340 +vn 0.7274 -0.6340 0.2626 +vn 0.7274 -0.2626 0.6340 +vn 0.7274 0.6340 0.2626 +vn 0.7274 0.2626 -0.6340 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.0395 0.0793 -0.9961 +vn 0.2579 -0.6421 -0.7219 +vn 0.0374 -0.6482 -0.7605 +vn 0.0345 -0.9994 0.0000 +vn 0.2580 -0.6421 0.7219 +vn 0.0374 -0.6482 0.7605 +vn 0.0395 0.0793 0.9961 +vn 0.1484 0.0900 0.9848 +vn 0.0396 0.7059 0.7072 +vn 0.1393 0.7021 0.6983 +vn 0.0380 0.9993 0.0000 +vn 0.5402 -0.8415 -0.0000 +vn 0.2980 -0.9546 0.0000 +vn 0.1393 0.7021 -0.6983 +vn 0.0396 0.7059 -0.7072 +vn 0.1483 0.0900 -0.9848 +vn 0.2023 0.6897 0.6953 +vn 0.2022 0.6897 -0.6953 +vn 0.1873 -0.0056 -0.9823 +vn 0.3633 -0.5613 -0.7436 +vn 0.3633 -0.5613 0.7436 +vn 0.2084 0.9780 -0.0000 +vn 0.1406 0.9901 0.0000 +vn 0.1874 -0.0056 0.9823 +vn -0.0994 0.0743 -0.9923 +vn -0.2799 -0.6041 -0.7461 +vn -0.1984 0.0653 -0.9779 +vn -0.1426 -0.6541 0.7428 +vn -0.1426 -0.6541 -0.7428 +vn -0.0994 0.0743 0.9923 +vn -0.0928 0.7032 -0.7049 +vn -0.1643 -0.9864 0.0000 +vn -0.1889 0.6964 -0.6923 +vn -0.0906 0.9959 0.0000 +vn -0.1889 0.6964 0.6923 +vn -0.0928 0.7032 0.7049 +vn -0.2799 -0.6041 0.7461 +vn -0.3368 -0.9416 0.0000 +vn -0.1844 0.9829 0.0000 +vn -0.1984 0.0653 0.9779 +vn 0.6227 -0.6827 -0.3822 +vn 0.4008 -0.5261 -0.7501 +vn 0.6464 0.7155 -0.2650 +vn 0.1749 -0.9843 -0.0258 +vn -0.9373 -0.0099 -0.3483 +vn 0.1369 -0.9880 -0.0719 +vn 0.1380 0.9894 0.0443 +vn 0.4011 0.6112 -0.6824 +vn -0.1967 0.7052 -0.6812 +vn 0.8295 -0.5582 -0.0210 +vn 0.8281 0.5606 -0.0024 +vn 0.8262 -0.5633 -0.0090 +vn -0.1756 -0.6143 -0.7693 +vn 0.8286 0.5598 -0.0112 +vn 0.8478 -0.4952 -0.1898 +vn 0.8588 0.4836 -0.1688 +vn 0.1747 0.9846 -0.0085 +vn -0.9999 -0.0000 0.0145 +vn -0.9059 0.0000 -0.4234 +vn -0.9123 0.0653 -0.4043 +vn -0.6550 0.5133 -0.5545 +vn -0.6399 0.5727 -0.5124 +vn -0.0103 -0.9997 -0.0232 +vn -0.0431 -0.9979 -0.0485 +vn -0.0108 0.9998 -0.0148 +vn 0.1889 0.9820 -0.0005 +vn 0.9311 -0.3647 0.0002 +vn 0.1888 -0.9820 0.0000 +vn 0.1886 0.9820 0.0000 +vn 0.8278 0.5611 0.0004 +vn 0.8278 0.5610 0.0002 +vn 0.1887 -0.9820 -0.0119 +vn 1.0000 -0.0000 0.0005 +vn 0.1886 0.9821 0.0001 +vn 0.2579 -0.6421 0.7219 +vn 0.1483 0.0900 0.9848 +vn 0.2580 -0.6421 -0.7219 +vn 0.1484 0.0900 -0.9848 +vn 0.2023 0.6897 -0.6953 +vn 0.2022 0.6897 0.6953 +vn -0.1896 0.9814 -0.0289 +vn -0.1896 -0.9814 -0.0289 +vn -0.1896 -0.9814 0.0289 +vn -0.1896 0.9814 0.0289 +vn -0.3595 -0.8072 0.4682 +vn -0.3582 0.3573 -0.8626 +vn 0.3582 0.3573 -0.8626 +vn -0.1649 -0.9112 0.3774 +vn 0.1649 -0.9112 0.3774 +vn -0.3582 0.3573 0.8626 +vn 0.1649 -0.9112 -0.3774 +vn -0.0431 0.9986 -0.0308 +vn 0.1874 -0.0056 -0.9823 +vn 0.1873 -0.0056 0.9823 +s off +f 500/284/57 503/285/57 505/286/57 +f 521/287/58 522/288/58 523/289/58 +f 577/290/57 579/291/57 570/292/57 +f 592/293/58 593/294/58 594/295/58 +f 662/296/57 661/297/57 660/298/57 +f 676/299/58 675/300/58 668/301/58 +f 685/302/59 684/303/59 683/304/59 +f 691/305/60 689/306/60 688/307/60 +f 687/308/61 682/309/61 692/310/61 +f 694/311/62 696/312/62 695/313/62 +f 686/314/63 693/315/63 698/316/63 +f 684/317/64 695/313/64 683/318/64 +f 691/319/65 699/320/65 690/321/65 +f 691/322/66 698/316/66 693/315/66 +f 690/323/67 701/324/67 700/325/67 +f 701/324/68 702/326/68 700/325/68 +f 700/327/69 689/306/69 690/328/69 +f 699/320/70 701/329/70 690/321/70 +f 707/330/57 696/312/57 697/331/57 +f 700/327/71 708/332/71 704/333/71 +f 709/334/61 701/329/61 705/335/61 +f 711/336/72 709/334/72 706/337/72 +f 684/338/73 685/339/73 688/307/73 +f 692/310/74 682/309/74 683/340/74 +f 683/340/75 699/320/75 692/310/75 +f 689/306/76 684/338/76 688/307/76 +f 705/335/77 695/341/77 696/342/77 +f 697/343/78 689/306/78 704/333/78 +f 706/337/79 705/335/79 696/342/79 +f 707/344/80 704/333/80 708/332/80 +f 698/345/81 691/305/81 688/307/81 +f 736/346/57 734/347/57 732/348/57 +f 747/349/58 746/350/58 740/351/58 +f 707/330/82 711/352/82 706/353/82 +f 710/354/61 703/355/61 709/334/61 +f 755/356/83 757/357/83 754/358/83 +f 759/359/83 761/360/83 758/361/83 +f 765/362/84 763/363/84 762/364/84 +f 767/365/85 769/366/85 766/367/85 +f 500/284/57 499/368/57 503/285/57 +f 503/285/57 504/369/57 505/286/57 +f 505/286/57 506/370/57 500/284/57 +f 506/370/57 507/371/57 500/284/57 +f 507/371/57 508/372/57 500/284/57 +f 523/289/58 512/373/58 520/374/58 +f 512/373/58 511/375/58 519/376/58 +f 511/375/58 518/377/58 519/376/58 +f 519/376/58 520/374/58 512/373/58 +f 520/374/58 521/287/58 523/289/58 +f 570/292/57 569/378/57 577/290/57 +f 569/378/57 575/379/57 577/290/57 +f 575/379/57 576/380/57 577/290/57 +f 577/290/57 578/381/57 579/291/57 +f 579/291/57 580/382/57 570/292/57 +f 594/295/58 584/383/58 591/384/58 +f 584/383/58 583/385/58 590/386/58 +f 583/385/58 589/387/58 590/386/58 +f 590/386/58 591/384/58 584/383/58 +f 591/384/58 592/293/58 594/295/58 +f 660/298/57 656/388/57 657/389/57 +f 657/389/57 665/390/57 660/298/57 +f 665/390/57 664/391/57 660/298/57 +f 664/391/57 663/392/57 660/298/57 +f 663/392/57 662/296/57 660/298/57 +f 668/301/58 669/393/58 677/394/58 +f 669/393/58 680/395/58 678/396/58 +f 680/395/58 679/397/58 678/396/58 +f 678/396/58 677/394/58 669/393/58 +f 677/394/58 676/299/58 668/301/58 +f 683/304/59 682/398/59 685/302/59 +f 682/398/59 687/399/59 686/400/59 +f 685/302/59 682/398/59 686/400/59 +f 691/305/86 690/328/86 689/306/86 +f 692/310/87 691/319/87 693/401/87 +f 693/401/61 687/308/61 692/310/61 +f 694/311/62 697/331/62 696/312/62 +f 686/314/63 687/402/63 693/315/63 +f 684/317/64 694/311/64 695/313/64 +f 691/319/88 692/310/88 699/320/88 +f 701/324/89 703/403/89 702/326/89 +f 700/327/90 704/333/90 689/306/90 +f 699/320/61 705/335/61 701/329/61 +f 707/330/57 706/353/57 696/312/57 +f 700/327/71 702/404/71 708/332/71 +f 709/334/61 703/355/61 701/329/61 +f 711/336/72 710/354/72 709/334/72 +f 683/340/75 695/341/75 699/320/75 +f 689/306/91 694/405/91 684/338/91 +f 705/335/77 699/320/77 695/341/77 +f 697/343/92 694/405/92 689/306/92 +f 706/337/79 709/334/79 705/335/79 +f 707/344/80 697/343/80 704/333/80 +f 688/307/93 685/339/93 686/406/93 +f 686/406/94 698/345/94 688/307/94 +f 732/348/57 726/407/57 736/346/57 +f 726/407/57 727/408/57 736/346/57 +f 727/408/57 737/409/57 736/346/57 +f 736/346/57 735/410/57 734/347/57 +f 734/347/57 733/411/57 732/348/57 +f 740/351/58 741/412/58 748/413/58 +f 741/412/58 751/414/58 749/415/58 +f 751/414/58 750/416/58 749/415/58 +f 749/415/58 748/413/58 741/412/58 +f 748/413/58 747/349/58 740/351/58 +f 707/330/82 752/417/82 711/352/82 +f 710/354/61 753/418/61 703/355/61 +f 755/356/83 756/419/83 757/357/83 +f 759/359/83 760/420/83 761/360/83 +f 765/362/84 764/421/84 763/363/84 +f 767/365/85 768/422/85 769/366/85 +s 1 +f 166/423/95 168/424/96 165/425/97 +f 167/426/98 170/427/99 168/424/96 +f 169/428/100 172/429/101 170/427/99 +f 171/430/102 174/431/71 172/429/101 +f 173/432/103 176/433/104 174/431/71 +f 175/434/105 178/435/106 176/433/104 +f 177/436/107 180/437/108 178/435/106 +f 179/438/109 182/439/110 180/437/108 +f 181/440/111 184/441/112 182/439/110 +f 183/442/113 186/443/114 184/441/112 +f 185/444/115 188/445/116 186/443/114 +f 187/446/117 190/447/118 188/445/116 +f 189/448/119 192/449/120 190/450/118 +f 191/451/121 194/452/122 192/449/120 +f 169/428/100 195/453/123 196/454/124 +f 193/455/125 198/456/126 194/452/122 +f 197/457/127 165/425/97 198/456/126 +f 199/458/128 200/459/129 201/460/130 +f 202/461/131 204/462/132 205/463/133 +f 207/464/134 209/465/135 206/466/136 +f 210/467/137 212/468/138 213/469/139 +f 214/470/140 199/471/128 216/472/141 +f 218/473/142 220/474/143 217/475/144 +f 222/476/145 224/477/146 221/478/147 +f 225/479/148 213/480/139 226/481/149 +f 203/482/150 228/483/151 204/462/132 +f 229/484/152 208/485/153 207/486/134 +f 215/487/154 200/459/129 199/458/128 +f 211/488/155 205/489/133 212/490/138 +f 206/491/136 219/492/156 218/493/142 +f 214/494/140 223/495/157 222/496/145 +f 217/475/144 228/483/151 227/497/158 +f 221/498/147 230/499/159 229/500/152 +f 232/501/160 234/502/161 235/503/162 +f 177/436/107 237/504/163 179/438/109 +f 187/446/117 239/505/164 189/506/119 +f 173/432/103 241/507/165 175/434/105 +f 183/442/113 243/508/166 185/444/115 +f 197/457/127 233/509/167 232/501/160 +f 171/430/102 196/454/124 244/510/168 +f 179/438/109 245/511/169 181/440/111 +f 167/426/98 246/512/170 195/453/123 +f 191/451/121 239/513/164 247/514/171 +f 175/434/105 236/515/172 177/436/107 +f 185/444/115 238/516/173 187/446/117 +f 166/423/95 232/501/160 246/512/170 +f 173/432/103 244/510/168 240/517/174 +f 181/440/111 242/518/175 183/442/113 +f 193/455/125 247/514/171 233/509/167 +f 249/519/176 251/520/177 248/521/178 +f 237/504/163 253/522/179 245/511/169 +f 195/453/123 254/523/180 255/524/181 +f 246/512/170 235/503/162 254/523/180 +f 245/511/169 256/525/182 242/518/175 +f 196/454/124 255/524/181 257/526/183 +f 242/518/175 258/527/184 243/508/166 +f 244/510/168 257/526/183 259/528/185 +f 243/508/166 260/529/186 238/516/173 +f 240/517/174 259/528/185 249/530/176 +f 238/516/173 261/531/187 239/505/164 +f 240/517/174 248/532/178 241/507/165 +f 247/514/171 261/533/187 262/534/188 +f 241/507/165 263/535/189 236/515/172 +f 233/509/167 262/534/188 234/502/161 +f 236/515/172 252/536/190 237/504/163 +f 264/537/191 266/538/192 267/539/193 +f 262/540/188 268/541/194 269/542/195 +f 248/543/178 270/544/196 263/545/189 +f 234/546/161 269/547/195 271/548/197 +f 263/549/189 272/550/198 252/551/190 +f 235/552/162 271/553/197 273/554/199 +f 252/555/190 274/556/200 253/557/179 +f 255/558/181 275/559/201 276/560/202 +f 254/561/180 273/562/199 275/563/201 +f 253/564/179 265/565/203 256/566/182 +f 257/567/183 276/568/202 277/569/204 +f 256/570/182 264/537/191 258/571/184 +f 259/572/185 277/573/204 278/574/205 +f 258/575/184 279/576/206 260/577/186 +f 249/578/176 278/579/205 250/580/207 +f 260/581/186 268/582/194 261/583/187 +f 281/584/208 283/585/209 280/586/210 +f 277/573/204 285/587/211 278/574/205 +f 279/576/206 267/588/193 286/589/212 +f 278/579/205 287/590/213 250/580/207 +f 268/582/194 286/591/212 288/592/214 +f 251/520/177 287/593/213 289/594/215 +f 268/541/194 290/595/216 269/542/195 +f 270/544/196 289/596/215 291/597/217 +f 269/547/195 281/598/208 271/548/197 +f 272/550/198 291/599/217 292/600/218 +f 271/553/197 280/586/210 273/554/199 +f 274/556/200 292/601/218 293/602/219 +f 275/559/201 295/603/220 276/560/202 +f 273/562/199 294/604/221 275/563/201 +f 265/565/203 293/605/219 266/606/192 +f 276/568/202 284/607/222 277/569/204 +f 307/608/223 309/609/224 301/610/225 +f 293/602/219 304/611/226 303/612/227 +f 294/613/221 296/614/228 295/603/220 +f 280/615/210 297/616/229 294/604/221 +f 266/606/192 303/617/227 302/618/230 +f 295/619/220 309/620/224 284/607/222 +f 267/539/193 302/621/230 301/622/225 +f 284/623/222 308/624/231 285/587/211 +f 286/589/212 301/625/225 300/626/232 +f 285/627/211 307/628/223 287/590/213 +f 288/592/214 300/629/232 299/630/233 +f 289/594/215 307/631/223 306/632/234 +f 288/633/214 298/634/235 290/595/216 +f 291/597/217 306/635/234 305/636/236 +f 290/637/216 282/638/237 281/598/208 +f 292/600/218 305/639/236 304/640/226 +f 219/492/156 209/641/135 201/642/130 +f 200/643/129 226/644/149 201/645/130 +f 209/465/135 208/646/153 201/647/130 +f 213/469/139 212/468/138 201/648/130 +f 226/481/149 213/480/139 201/649/130 +f 208/485/153 230/650/159 201/651/130 +f 212/490/138 205/489/133 201/652/130 +f 230/499/159 224/653/146 201/654/130 +f 205/655/133 204/656/132 201/657/130 +f 224/477/146 223/658/157 201/659/130 +f 204/660/132 228/661/151 201/662/130 +f 223/495/157 216/663/141 201/664/130 +f 228/665/151 220/666/143 201/667/130 +f 216/472/141 199/471/128 201/668/130 +f 220/669/143 219/670/156 201/671/130 +f 310/672/238 311/673/239 312/674/240 +f 314/675/241 316/676/242 313/677/243 +f 317/678/244 318/679/245 316/676/242 +f 314/680/241 319/681/246 315/682/247 +f 311/673/239 322/683/248 320/684/249 +f 313/677/243 318/679/245 323/685/250 +f 325/686/251 327/687/252 324/688/253 +f 325/686/251 328/689/254 326/690/255 +f 323/685/250 324/691/253 329/692/256 +f 317/678/244 322/683/248 325/693/251 +f 330/694/257 321/695/258 311/673/239 +f 318/679/245 325/693/251 324/691/253 +f 328/696/254 322/697/248 332/698/259 +f 321/699/258 334/700/260 322/701/248 +f 321/699/258 335/702/261 333/703/262 +f 322/704/248 334/705/260 336/706/263 +f 323/685/250 331/707/264 330/694/257 +f 330/694/257 313/677/243 323/685/250 +f 310/708/238 319/681/246 314/680/241 +f 337/709/265 314/675/241 313/677/243 +f 339/710/71 340/711/266 332/698/259 +f 334/705/260 338/712/267 336/706/263 +f 328/696/254 340/711/266 326/713/255 +f 316/676/242 315/714/247 317/678/244 +f 315/714/247 319/715/246 341/716/268 +f 317/678/244 315/714/247 312/674/269 +f 341/716/268 312/674/269 315/714/247 +f 312/674/269 320/684/270 317/678/244 +f 312/674/240 341/716/271 310/672/238 +f 341/716/271 319/715/246 310/672/238 +f 310/672/238 337/709/265 311/673/239 +f 337/709/265 330/694/257 311/673/239 +f 311/673/239 320/684/249 312/674/240 +f 322/717/248 336/706/263 332/698/259 +f 343/718/272 345/719/273 342/720/274 +f 347/721/275 349/722/276 346/723/277 +f 350/724/278 352/725/279 353/726/280 +f 342/720/274 348/727/281 343/718/272 +f 351/728/282 345/719/273 344/729/283 +f 349/730/284 342/720/284 345/719/284 +f 354/731/285 347/721/275 346/723/277 +f 352/725/279 354/732/286 353/726/280 +f 357/733/287 359/734/288 356/735/289 +f 361/736/290 363/737/291 360/738/292 +f 364/739/293 366/740/294 367/741/295 +f 356/735/289 362/742/296 357/733/287 +f 365/743/297 359/734/288 358/744/298 +f 363/745/299 356/735/299 359/734/299 +f 368/746/300 361/736/290 360/738/292 +f 366/740/294 368/747/301 367/741/295 +f 231/748/302 226/644/149 200/643/129 +f 218/749/303 370/750/304 371/751/303 +f 182/439/110 206/752/136 180/437/108 +f 165/425/97 211/753/155 210/754/137 +f 190/450/118 215/755/154 214/756/140 +f 203/757/305 373/758/306 227/759/306 +f 188/445/116 221/760/147 186/443/114 +f 198/456/126 210/761/137 225/762/148 +f 202/763/307 372/764/308 203/757/305 +f 184/441/112 207/765/134 182/439/110 +f 192/449/120 231/766/302 215/755/154 +f 168/424/96 202/767/131 211/768/155 +f 180/437/108 218/769/142 178/435/106 +f 190/447/118 222/770/145 188/445/116 +f 217/771/309 373/758/306 370/750/304 +f 186/443/114 229/772/152 184/441/112 +f 194/452/122 225/773/148 231/774/302 +f 375/775/310 372/776/311 374/777/312 +f 378/778/313 370/779/314 377/780/315 +f 376/781/316 373/782/317 372/776/311 +f 377/780/315 373/782/317 379/783/158 +f 178/784/318 377/785/319 176/786/320 +f 176/786/320 379/787/321 174/788/321 +f 172/789/322 379/787/321 376/790/323 +f 178/791/318 371/792/324 378/793/325 +f 170/794/326 374/795/327 202/796/327 +f 170/797/326 376/790/323 375/798/328 +f 383/799/71 381/800/104 380/801/104 +f 385/802/329 382/803/71 383/799/71 +f 387/804/284 384/805/329 385/802/329 +f 389/806/330 386/807/284 387/804/284 +f 391/808/331 389/806/330 387/804/284 +f 392/809/332 394/810/333 393/811/334 +f 388/812/330 396/813/335 386/807/284 +f 392/809/332 385/802/329 383/799/71 +f 399/814/336 382/803/71 384/805/329 +f 393/811/334 387/804/284 385/802/329 +f 396/813/335 384/805/329 386/807/284 +f 400/815/337 383/799/71 380/801/104 +f 398/816/338 381/800/104 382/803/71 +f 403/817/339 398/816/338 399/814/336 +f 394/810/333 391/808/331 393/811/334 +f 396/813/335 403/817/339 399/814/336 +f 404/818/340 390/819/341 391/808/331 +f 397/820/342 405/821/343 396/813/335 +f 400/815/337 395/822/344 392/809/332 +f 402/823/345 401/824/346 398/816/338 +f 411/825/101 413/826/71 410/827/101 +f 412/828/71 415/829/347 413/826/71 +f 414/830/347 417/831/299 415/829/347 +f 416/832/299 419/833/348 417/831/299 +f 419/833/348 421/834/349 417/831/299 +f 422/835/350 424/836/351 425/837/352 +f 416/832/299 427/838/353 418/839/348 +f 415/829/347 422/835/350 413/826/71 +f 412/828/71 429/840/354 414/830/347 +f 417/831/299 423/841/355 415/829/347 +f 414/830/347 426/842/356 416/832/299 +f 413/826/71 430/843/357 410/827/101 +f 411/825/101 428/844/358 412/828/71 +f 428/844/358 433/845/359 429/840/354 +f 421/834/349 424/836/351 423/841/355 +f 426/842/356 433/845/359 435/846/360 +f 420/847/361 434/848/362 421/834/349 +f 427/838/353 435/849/360 437/850/363 +f 430/843/357 425/851/352 438/852/364 +f 431/853/365 432/854/366 428/844/358 +f 441/855/367 443/856/101 440/857/367 +f 442/858/101 445/859/104 443/856/101 +f 445/859/104 446/860/368 447/861/368 +f 447/861/368 448/862/348 449/863/348 +f 448/862/348 451/864/369 449/863/348 +f 452/865/370 454/866/371 450/867/372 +f 452/868/370 457/869/373 455/870/330 +f 452/868/370 459/871/330 458/872/374 +f 455/870/330 440/857/367 459/871/330 +f 442/858/101 461/873/375 444/874/104 +f 451/864/369 463/875/376 449/863/348 +f 448/862/348 465/876/377 450/877/372 +f 447/861/368 467/878/378 445/859/104 +f 440/857/367 469/879/379 459/871/330 +f 443/856/101 468/880/380 440/857/367 +f 444/874/104 471/881/381 446/860/368 +f 455/870/330 472/882/382 441/855/367 +f 441/855/367 460/883/383 442/858/101 +f 458/872/374 462/884/384 451/885/369 +f 450/886/372 456/887/385 452/868/370 +f 449/863/348 466/888/386 447/861/368 +f 446/860/368 464/889/387 448/862/348 +f 445/859/104 470/890/388 443/856/101 +f 459/871/330 473/891/389 458/872/374 +f 467/878/378 466/888/386 474/892/58 +f 473/891/389 469/879/379 474/893/58 +f 460/883/383 475/894/390 476/895/391 +f 466/888/386 463/875/376 474/896/58 +f 469/879/379 468/880/380 474/897/58 +f 468/880/380 470/890/388 474/898/58 +f 463/875/376 462/899/384 474/900/58 +f 475/901/390 478/902/392 480/903/393 +f 470/890/388 467/878/378 474/904/58 +f 462/884/384 473/891/389 474/905/58 +f 460/883/383 482/906/394 461/873/375 +f 461/873/375 481/907/395 471/881/381 +f 471/881/381 480/908/393 464/889/387 +f 464/889/387 479/909/396 465/876/377 +f 465/910/377 478/911/392 456/887/385 +f 456/887/385 477/912/397 457/869/373 +f 457/869/373 475/913/390 472/882/382 +f 450/867/372 483/914/398 451/915/369 +f 458/916/374 453/917/399 452/865/370 +f 451/918/369 484/919/400 458/916/374 +f 485/920/401 487/921/402 488/922/403 +f 487/923/402 490/924/404 488/922/403 +f 490/924/404 491/925/405 492/926/406 +f 491/927/405 494/928/407 492/926/406 +f 493/929/408 496/930/409 494/928/407 +f 495/931/410 498/932/411 496/930/409 +f 487/923/402 500/933/412 489/934/413 +f 498/935/411 501/936/414 502/937/415 +f 502/937/415 486/938/416 485/920/401 +f 493/929/408 506/939/417 495/940/410 +f 486/938/416 504/941/418 503/942/419 +f 486/943/416 499/944/420 487/921/402 +f 491/925/405 500/945/412 508/946/421 +f 495/931/410 505/947/422 497/948/423 +f 493/949/408 508/950/421 507/951/424 +f 501/936/414 505/952/422 504/953/418 +f 509/954/425 511/955/426 512/956/427 +f 494/928/407 514/957/428 492/926/406 +f 490/924/404 510/958/429 488/922/403 +f 496/930/409 513/959/430 494/928/407 +f 485/920/401 517/960/431 502/937/415 +f 488/922/403 509/954/425 485/920/401 +f 492/926/406 515/961/432 490/924/404 +f 517/960/431 512/962/427 523/963/433 +f 524/964/434 521/965/435 516/966/436 +f 513/959/430 519/967/437 514/957/428 +f 510/958/429 518/968/438 511/969/426 +f 524/970/434 523/971/433 522/972/439 +f 516/966/436 520/973/440 513/959/430 +f 514/957/428 518/974/438 515/961/432 +f 528/975/441 529/976/442 525/977/443 +f 532/978/444 534/979/445 531/980/446 +f 535/981/447 530/982/448 536/983/449 +f 537/984/450 539/985/451 540/986/452 +f 536/987/449 529/988/442 541/989/453 +f 538/990/454 527/991/455 526/992/456 +f 534/993/445 542/994/457 535/981/447 +f 534/995/445 536/987/449 541/989/453 +f 533/996/458 543/997/459 544/998/460 +f 544/998/460 545/999/461 546/1000/462 +f 532/978/444 543/1001/463 533/1002/464 +f 542/994/457 544/1003/465 548/1004/466 +f 539/985/451 550/1005/467 540/986/452 +f 543/1001/463 551/1006/468 545/1007/71 +f 544/1003/465 552/1008/469 548/1004/466 +f 552/1008/469 554/1009/470 549/1010/471 +f 527/1011/455 531/980/446 528/1012/441 +f 535/981/447 526/1013/456 525/1014/443 +f 542/994/457 526/1013/456 535/981/447 +f 532/978/444 527/1011/455 537/1015/450 +f 538/1016/454 548/1004/466 539/1017/451 +f 532/978/444 540/1018/452 547/1019/472 +f 549/1010/471 548/1004/466 552/1008/469 +f 547/1019/472 550/1020/467 551/1006/468 +f 531/980/446 541/1021/453 529/1022/442 +f 555/1023/401 557/1024/402 558/1025/403 +f 557/1026/402 560/1027/404 558/1025/403 +f 560/1027/404 561/1028/405 562/1029/406 +f 561/1030/405 564/1031/407 562/1029/406 +f 563/1032/408 566/1033/409 564/1031/407 +f 565/1034/410 568/1035/411 566/1033/409 +f 557/1026/402 570/1036/412 559/1037/413 +f 568/1038/411 571/1039/414 572/1040/415 +f 572/1040/415 556/1041/416 555/1023/401 +f 566/1033/409 573/1042/434 574/1043/436 +f 563/1032/408 578/1044/417 565/1045/410 +f 556/1041/416 576/1046/418 575/1047/419 +f 556/1048/416 569/1049/420 557/1024/402 +f 561/1028/405 570/1050/412 580/1051/421 +f 565/1034/410 577/1052/422 567/1053/423 +f 563/1054/408 580/1055/421 579/1056/424 +f 571/1039/414 577/1057/422 576/1058/418 +f 581/1059/425 583/1060/426 584/1061/427 +f 564/1031/407 586/1062/428 562/1029/406 +f 572/1040/415 573/1063/434 568/1038/411 +f 560/1027/404 582/1064/429 558/1025/403 +f 566/1033/409 585/1065/430 564/1031/407 +f 555/1023/401 587/1066/431 572/1040/415 +f 558/1025/403 581/1059/425 555/1023/401 +f 562/1029/406 588/1067/432 560/1027/404 +f 587/1066/431 584/1068/427 594/1069/433 +f 573/1042/434 592/1070/435 574/1043/436 +f 585/1065/430 590/1071/437 586/1062/428 +f 582/1064/429 589/1072/438 583/1073/426 +f 573/1063/434 594/1074/433 593/1075/439 +f 574/1043/436 591/1076/440 585/1065/430 +f 586/1062/428 589/1077/438 588/1067/432 +f 550/1005/467 554/1078/470 595/1079/473 +f 546/1080/61 553/1081/474 552/1008/469 +f 600/1082/104 598/1083/368 597/1084/368 +f 602/1085/101 599/1086/104 600/1082/104 +f 604/1087/367 601/1088/101 602/1085/101 +f 606/1089/330 603/1090/367 604/1087/367 +f 608/1091/374 605/1092/330 606/1089/330 +f 611/1093/399 609/1094/372 607/1095/370 +f 614/1096/387 609/1097/372 612/1098/348 +f 616/1099/348 609/1097/372 615/1100/369 +f 597/1084/368 612/1098/348 616/1099/348 +f 618/1101/383 599/1086/104 601/1088/101 +f 620/1102/379 608/1091/374 606/1089/330 +f 622/1103/385 605/1092/330 607/1104/370 +f 624/1105/388 604/1087/367 602/1085/101 +f 626/1106/376 597/1084/368 616/1099/348 +f 625/1107/386 600/1082/104 597/1084/368 +f 628/1108/382 601/1088/101 603/1090/367 +f 629/1109/381 612/1098/348 598/1083/368 +f 617/1110/375 598/1083/368 599/1086/104 +f 619/1111/389 615/1100/369 608/1112/374 +f 613/1113/377 607/1114/370 609/1097/372 +f 623/1115/380 606/1089/330 604/1087/367 +f 621/1116/373 603/1090/367 605/1092/330 +f 627/1117/378 602/1085/101 600/1082/104 +f 630/1118/384 616/1099/348 615/1100/369 +f 624/1105/388 631/1119/58 623/1115/380 +f 630/1118/384 631/1120/58 626/1106/376 +f 617/1110/375 632/1121/395 629/1109/381 +f 623/1115/380 631/1122/58 620/1102/379 +f 626/1106/376 631/1123/58 625/1107/386 +f 625/1107/386 631/1124/58 627/1117/378 +f 620/1102/379 631/1125/58 619/1126/389 +f 635/1127/396 634/1128/393 632/1129/395 +f 627/1117/378 631/1130/58 624/1105/388 +f 619/1111/389 631/1131/58 630/1118/384 +f 639/1132/391 617/1110/375 618/1101/383 +f 638/1133/390 618/1101/383 628/1108/382 +f 637/1134/397 628/1108/382 621/1116/373 +f 622/1103/385 637/1135/397 621/1116/373 +f 635/1136/396 622/1137/385 613/1113/377 +f 614/1096/387 635/1138/396 613/1113/377 +f 632/1139/395 614/1096/387 629/1109/381 +f 640/1140/400 607/1095/370 608/1141/374 +f 610/1142/371 615/1143/369 609/1094/372 +f 641/1144/398 608/1145/374 615/1143/369 +f 642/1146/407 644/1147/475 643/1148/476 +f 647/1149/404 644/1150/475 645/1151/406 +f 647/1149/404 648/1152/477 646/1153/413 +f 651/1154/401 648/1155/477 649/1156/403 +f 653/1157/415 650/1158/478 651/1154/401 +f 655/1159/411 652/1160/414 653/1157/415 +f 657/1161/412 644/1150/475 646/1162/413 +f 655/1163/411 658/1164/410 654/1165/423 +f 659/1166/409 643/1167/476 658/1168/410 +f 663/1169/479 650/1158/478 652/1170/414 +f 643/1167/476 661/1171/480 658/1168/410 +f 656/1172/421 643/1148/476 644/1147/475 +f 648/1152/477 657/1173/412 646/1153/413 +f 662/1174/422 652/1160/414 654/1175/423 +f 650/1176/478 665/1177/420 648/1155/477 +f 658/1164/410 662/1178/422 654/1165/423 +f 666/1179/430 668/1180/437 667/1181/428 +f 671/1182/429 651/1154/401 649/1156/403 +f 667/1181/428 647/1149/404 645/1151/406 +f 670/1183/425 653/1157/415 651/1154/401 +f 674/1184/436 642/1146/407 659/1166/409 +f 666/1179/430 645/1151/406 642/1146/407 +f 672/1185/432 649/1156/403 647/1149/404 +f 674/1184/436 669/1186/440 666/1179/430 +f 678/1187/433 681/1188/434 673/1189/431 +f 676/1190/426 670/1183/425 671/1182/429 +f 667/1181/428 675/1191/438 672/1185/432 +f 681/1192/434 680/1193/435 674/1184/436 +f 677/1194/427 673/1189/431 670/1183/425 +f 675/1195/438 671/1182/429 672/1185/432 +f 712/1196/407 714/1197/475 713/1198/476 +f 717/1199/404 714/1200/475 715/1201/406 +f 717/1199/404 718/1202/477 716/1203/413 +f 721/1204/401 718/1205/477 719/1206/403 +f 723/1207/415 720/1208/478 721/1204/401 +f 725/1209/411 722/1210/414 723/1207/415 +f 727/1211/412 714/1200/475 716/1212/413 +f 725/1213/411 728/1214/410 724/1215/423 +f 729/1216/409 713/1217/476 728/1218/410 +f 723/1207/415 730/1219/434 725/1209/411 +f 735/1220/479 720/1208/478 722/1221/414 +f 713/1217/476 733/1222/480 728/1218/410 +f 726/1223/421 713/1198/476 714/1197/475 +f 718/1202/477 727/1224/412 716/1203/413 +f 734/1225/422 722/1210/414 724/1226/423 +f 720/1227/478 737/1228/420 718/1205/477 +f 728/1214/410 734/1229/422 724/1215/423 +f 738/1230/430 740/1231/437 739/1232/428 +f 743/1233/429 721/1204/401 719/1206/403 +f 730/1234/434 729/1216/409 725/1213/411 +f 739/1232/428 717/1199/404 715/1201/406 +f 742/1235/425 723/1207/415 721/1204/401 +f 729/1216/409 738/1230/430 712/1196/407 +f 738/1230/430 715/1201/406 712/1196/407 +f 745/1236/432 719/1206/403 717/1199/404 +f 744/1237/436 741/1238/440 738/1230/430 +f 749/1239/433 730/1219/434 731/1240/431 +f 747/1241/426 742/1235/425 743/1233/429 +f 739/1232/428 746/1242/438 745/1236/432 +f 730/1234/434 751/1243/435 744/1237/436 +f 748/1244/427 731/1240/431 742/1235/425 +f 746/1245/438 743/1233/429 745/1236/432 +f 524/964/434 496/930/409 498/932/411 +f 502/937/415 524/970/434 498/935/411 +f 659/1166/409 681/1192/434 674/1184/436 +f 653/1157/415 681/1188/434 655/1159/411 +f 166/423/95 167/426/98 168/424/96 +f 167/426/98 169/428/100 170/427/99 +f 169/428/100 171/430/102 172/429/101 +f 171/430/102 173/432/103 174/431/71 +f 173/432/103 175/434/105 176/433/104 +f 175/434/105 177/436/107 178/435/106 +f 177/436/107 179/438/109 180/437/108 +f 179/438/109 181/440/111 182/439/110 +f 181/440/111 183/442/113 184/441/112 +f 183/442/113 185/444/115 186/443/114 +f 185/444/115 187/446/117 188/445/116 +f 187/446/117 189/506/119 190/447/118 +f 189/448/119 191/451/121 192/449/120 +f 191/451/121 193/455/125 194/452/122 +f 169/428/100 167/426/98 195/453/123 +f 193/455/125 197/457/127 198/456/126 +f 197/457/127 166/423/95 165/425/97 +f 202/461/131 203/482/150 204/462/132 +f 207/464/134 208/646/153 209/465/135 +f 210/467/137 211/1246/155 212/468/138 +f 214/470/140 215/1247/154 199/471/128 +f 218/473/142 219/1248/156 220/474/143 +f 222/476/145 223/658/157 224/477/146 +f 225/479/148 210/1249/137 213/480/139 +f 203/482/150 227/497/158 228/483/151 +f 229/484/152 230/650/159 208/485/153 +f 215/487/154 231/1250/302 200/459/129 +f 211/488/155 202/1251/131 205/489/133 +f 206/491/136 209/641/135 219/492/156 +f 214/494/140 216/663/141 223/495/157 +f 217/475/144 220/474/143 228/483/151 +f 221/498/147 224/653/146 230/499/159 +f 232/501/160 233/509/167 234/502/161 +f 177/436/107 236/515/172 237/504/163 +f 187/446/117 238/516/173 239/505/164 +f 173/432/103 240/517/174 241/507/165 +f 183/442/113 242/518/175 243/508/166 +f 197/457/127 193/455/125 233/509/167 +f 171/430/102 169/428/100 196/454/124 +f 179/438/109 237/504/163 245/511/169 +f 167/426/98 166/423/95 246/512/170 +f 191/451/121 189/448/119 239/513/164 +f 175/434/105 241/507/165 236/515/172 +f 185/444/115 243/508/166 238/516/173 +f 166/423/95 197/457/127 232/501/160 +f 173/432/103 171/430/102 244/510/168 +f 181/440/111 245/511/169 242/518/175 +f 193/455/125 191/451/121 247/514/171 +f 249/519/176 250/1252/207 251/520/177 +f 237/504/163 252/536/190 253/522/179 +f 195/453/123 246/512/170 254/523/180 +f 246/512/170 232/501/160 235/503/162 +f 245/511/169 253/522/179 256/525/182 +f 196/454/124 195/453/123 255/524/181 +f 242/518/175 256/525/182 258/527/184 +f 244/510/168 196/454/124 257/526/183 +f 243/508/166 258/527/184 260/529/186 +f 240/517/174 244/510/168 259/528/185 +f 238/516/173 260/529/186 261/531/187 +f 240/517/174 249/530/176 248/532/178 +f 247/514/171 239/513/164 261/533/187 +f 241/507/165 248/532/178 263/535/189 +f 233/509/167 247/514/171 262/534/188 +f 236/515/172 263/535/189 252/536/190 +f 264/537/191 265/1253/203 266/538/192 +f 262/540/188 261/1254/187 268/541/194 +f 248/543/178 251/1255/177 270/544/196 +f 234/546/161 262/1256/188 269/547/195 +f 263/549/189 270/1257/196 272/550/198 +f 235/552/162 234/1258/161 271/553/197 +f 252/555/190 272/1259/198 274/556/200 +f 255/558/181 254/1260/180 275/559/201 +f 254/561/180 235/1261/162 273/562/199 +f 253/564/179 274/1262/200 265/565/203 +f 257/567/183 255/1263/181 276/568/202 +f 256/570/182 265/1253/203 264/537/191 +f 259/572/185 257/1264/183 277/573/204 +f 258/575/184 264/1265/191 279/576/206 +f 249/578/176 259/1266/185 278/579/205 +f 260/581/186 279/1267/206 268/582/194 +f 281/584/208 282/1268/237 283/585/209 +f 277/573/204 284/623/222 285/587/211 +f 279/576/206 264/1265/191 267/588/193 +f 278/579/205 285/627/211 287/590/213 +f 268/582/194 279/1267/206 286/591/212 +f 251/520/177 250/1252/207 287/593/213 +f 268/541/194 288/633/214 290/595/216 +f 270/544/196 251/1255/177 289/596/215 +f 269/547/195 290/637/216 281/598/208 +f 272/550/198 270/1257/196 291/599/217 +f 271/553/197 281/584/208 280/586/210 +f 274/556/200 272/1259/198 292/601/218 +f 275/559/201 294/613/221 295/603/220 +f 273/562/199 280/615/210 294/604/221 +f 265/565/203 274/1262/200 293/605/219 +f 276/568/202 295/619/220 284/607/222 +f 309/609/224 296/1269/228 297/1270/229 +f 297/1270/229 283/1271/209 309/609/224 +f 283/1271/209 282/1272/237 309/609/224 +f 282/1272/237 298/1273/235 299/1274/233 +f 299/1274/233 300/1275/232 301/610/225 +f 301/610/225 302/1276/230 305/1277/236 +f 302/1276/230 303/1278/227 305/1277/236 +f 303/1278/227 304/1279/226 305/1277/236 +f 305/1277/236 306/1280/234 307/608/223 +f 307/608/223 308/1281/231 309/609/224 +f 282/1272/237 299/1274/233 309/609/224 +f 299/1274/233 301/610/225 309/609/224 +f 305/1277/236 307/608/223 301/610/225 +f 293/602/219 292/601/218 304/611/226 +f 294/613/221 297/1282/229 296/614/228 +f 280/615/210 283/1283/209 297/616/229 +f 266/606/192 293/605/219 303/617/227 +f 295/619/220 296/1284/228 309/620/224 +f 267/539/193 266/538/192 302/621/230 +f 284/623/222 309/1285/224 308/624/231 +f 286/589/212 267/588/193 301/625/225 +f 285/627/211 308/1286/231 307/628/223 +f 288/592/214 286/591/212 300/629/232 +f 289/594/215 287/593/213 307/631/223 +f 288/633/214 299/1287/233 298/634/235 +f 291/597/217 289/596/215 306/635/234 +f 290/637/216 298/1288/235 282/638/237 +f 292/600/218 291/599/217 305/639/236 +f 314/675/241 315/714/247 316/676/242 +f 311/673/239 321/695/258 322/683/248 +f 313/677/243 316/676/242 318/679/245 +f 325/686/251 326/690/255 327/687/252 +f 325/686/251 322/1289/248 328/689/254 +f 323/685/250 318/679/245 324/691/253 +f 317/678/244 320/684/270 322/683/248 +f 330/694/257 331/707/264 321/695/258 +f 318/679/245 317/678/244 325/693/251 +f 321/699/258 333/703/262 334/700/260 +f 321/699/258 331/1290/264 335/702/261 +f 323/685/250 329/692/256 331/707/264 +f 330/694/257 337/709/265 313/677/243 +f 337/709/265 310/672/238 314/675/241 +f 332/698/259 336/706/263 339/710/71 +f 336/706/263 338/712/267 339/710/71 +f 334/705/260 333/1291/262 338/712/267 +f 328/696/254 332/698/259 340/711/266 +f 343/718/272 344/729/283 345/719/273 +f 347/721/275 348/727/281 349/722/276 +f 350/724/278 351/728/282 352/725/279 +f 342/720/274 349/722/276 348/727/281 +f 351/728/282 350/724/278 345/719/273 +f 350/1292/284 353/1293/284 346/1294/284 +f 353/1293/284 354/1295/284 346/1294/284 +f 346/1294/284 349/730/284 350/1292/284 +f 350/1292/284 349/730/284 345/719/284 +f 354/731/285 355/1296/481 347/721/275 +f 352/725/279 355/1297/482 354/732/286 +f 357/733/287 358/744/298 359/734/288 +f 361/736/290 362/742/296 363/737/291 +f 364/739/293 365/743/297 366/740/294 +f 356/735/289 363/737/291 362/742/296 +f 365/743/297 364/739/293 359/734/288 +f 364/1298/299 367/1299/299 360/1300/299 +f 367/1299/299 368/1301/299 360/1300/299 +f 360/1300/299 363/745/299 364/1298/299 +f 364/1298/299 363/745/299 359/734/299 +f 368/746/300 369/1302/483 361/736/290 +f 366/740/294 369/1303/484 368/747/301 +f 231/748/302 225/1304/148 226/644/149 +f 218/749/303 217/771/309 370/750/304 +f 182/439/110 207/1305/134 206/752/136 +f 165/425/97 168/424/96 211/753/155 +f 190/450/118 192/449/120 215/755/154 +f 203/757/305 372/764/308 373/758/306 +f 188/445/116 222/770/145 221/760/147 +f 198/456/126 165/425/97 210/761/137 +f 202/763/307 374/1306/307 372/764/308 +f 184/441/112 229/1307/152 207/765/134 +f 192/449/120 194/452/122 231/766/302 +f 168/424/96 170/427/99 202/767/131 +f 180/437/108 206/1308/136 218/769/142 +f 190/447/118 214/1309/140 222/770/145 +f 217/771/309 227/759/306 373/758/306 +f 186/443/114 221/1310/147 229/772/152 +f 194/452/122 198/456/126 225/773/148 +f 375/775/310 376/781/316 372/776/311 +f 378/778/313 371/1311/485 370/779/314 +f 376/781/316 379/783/158 373/782/317 +f 377/780/315 370/779/314 373/782/317 +f 178/784/318 378/1312/325 377/785/319 +f 176/786/320 377/785/319 379/787/321 +f 172/789/322 174/788/321 379/787/321 +f 178/791/318 218/1313/324 371/792/324 +f 170/794/326 375/1314/328 374/795/327 +f 170/797/326 172/789/322 376/790/323 +f 383/799/71 382/803/71 381/800/104 +f 385/802/329 384/805/329 382/803/71 +f 387/804/284 386/807/284 384/805/329 +f 389/806/330 388/812/330 386/807/284 +f 391/808/331 390/819/341 389/806/330 +f 392/809/332 395/1315/344 394/810/333 +f 388/812/330 397/820/342 396/813/335 +f 392/809/332 393/811/334 385/802/329 +f 399/814/336 398/816/338 382/803/71 +f 393/811/334 391/808/331 387/804/284 +f 396/813/335 399/814/336 384/805/329 +f 400/815/337 392/809/332 383/799/71 +f 398/816/338 401/824/346 381/800/104 +f 403/817/339 402/1316/345 398/816/338 +f 394/810/333 404/1317/340 391/808/331 +f 396/813/335 405/1318/343 403/817/339 +f 404/818/340 406/1319/486 390/819/341 +f 397/820/342 407/1320/487 405/821/343 +f 400/815/337 408/1321/488 395/822/344 +f 402/823/345 409/1322/489 401/824/346 +f 411/825/101 412/828/71 413/826/71 +f 412/828/71 414/830/347 415/829/347 +f 414/830/347 416/832/299 417/831/299 +f 416/832/299 418/839/348 419/833/348 +f 419/833/348 420/847/361 421/834/349 +f 422/835/350 423/841/355 424/836/351 +f 416/832/299 426/842/356 427/838/353 +f 415/829/347 423/841/355 422/835/350 +f 412/828/71 428/844/358 429/840/354 +f 417/831/299 421/834/349 423/841/355 +f 414/830/347 429/840/354 426/842/356 +f 413/826/71 422/835/350 430/843/357 +f 411/825/101 431/853/365 428/844/358 +f 428/844/358 432/1323/366 433/845/359 +f 421/834/349 434/1324/362 424/836/351 +f 426/842/356 429/840/354 433/845/359 +f 420/847/361 436/1325/490 434/848/362 +f 427/838/353 426/842/356 435/849/360 +f 430/843/357 422/835/350 425/851/352 +f 431/853/365 439/1326/491 432/854/366 +f 441/855/367 442/858/101 443/856/101 +f 442/858/101 444/874/104 445/859/104 +f 445/859/104 444/874/104 446/860/368 +f 447/861/368 446/860/368 448/862/348 +f 448/862/348 450/877/372 451/864/369 +f 452/865/370 453/917/399 454/866/371 +f 452/868/370 456/887/385 457/869/373 +f 452/868/370 455/870/330 459/871/330 +f 455/870/330 441/855/367 440/857/367 +f 442/858/101 460/883/383 461/873/375 +f 451/864/369 462/899/384 463/875/376 +f 448/862/348 464/889/387 465/876/377 +f 447/861/368 466/888/386 467/878/378 +f 440/857/367 468/880/380 469/879/379 +f 443/856/101 470/890/388 468/880/380 +f 444/874/104 461/873/375 471/881/381 +f 455/870/330 457/869/373 472/882/382 +f 441/855/367 472/882/382 460/883/383 +f 458/872/374 473/891/389 462/884/384 +f 450/886/372 465/910/377 456/887/385 +f 449/863/348 463/875/376 466/888/386 +f 446/860/368 471/881/381 464/889/387 +f 445/859/104 467/878/378 470/890/388 +f 459/871/330 469/879/379 473/891/389 +f 460/883/383 472/882/382 475/894/390 +f 482/1327/394 476/1328/391 475/901/390 +f 475/901/390 477/1329/397 478/902/392 +f 478/902/392 479/1330/396 480/903/393 +f 480/903/393 481/1331/395 482/1327/394 +f 482/1327/394 475/901/390 480/903/393 +f 460/883/383 476/1332/391 482/906/394 +f 461/873/375 482/1333/394 481/907/395 +f 471/881/381 481/1334/395 480/908/393 +f 464/889/387 480/1335/393 479/909/396 +f 465/910/377 479/1336/396 478/911/392 +f 456/887/385 478/1337/392 477/912/397 +f 457/869/373 477/1338/397 475/913/390 +f 450/867/372 454/866/371 483/914/398 +f 458/916/374 484/919/400 453/917/399 +f 451/918/369 483/1339/398 484/919/400 +f 485/920/401 486/943/416 487/921/402 +f 487/923/402 489/934/413 490/924/404 +f 490/924/404 489/1340/413 491/925/405 +f 491/927/405 493/949/408 494/928/407 +f 493/929/408 495/940/410 496/930/409 +f 495/931/410 497/948/423 498/932/411 +f 487/923/402 499/1341/420 500/933/412 +f 498/935/411 497/1342/423 501/936/414 +f 502/937/415 501/1343/414 486/938/416 +f 493/929/408 507/1344/424 506/939/417 +f 486/938/416 501/1343/414 504/941/418 +f 486/943/416 503/1345/419 499/944/420 +f 491/925/405 489/1340/413 500/945/412 +f 495/931/410 506/1346/417 505/947/422 +f 493/949/408 491/927/405 508/950/421 +f 501/936/414 497/1342/423 505/952/422 +f 509/954/425 510/958/429 511/955/426 +f 494/928/407 513/959/430 514/957/428 +f 490/924/404 515/961/432 510/958/429 +f 496/930/409 516/966/436 513/959/430 +f 485/920/401 509/954/425 517/960/431 +f 488/922/403 510/958/429 509/954/425 +f 492/926/406 514/957/428 515/961/432 +f 517/960/431 509/954/425 512/962/427 +f 524/964/434 522/1347/439 521/965/435 +f 513/959/430 520/1348/440 519/967/437 +f 510/958/429 515/961/432 518/968/438 +f 524/970/434 517/960/431 523/971/433 +f 516/966/436 521/1349/435 520/973/440 +f 514/957/428 519/1350/437 518/974/438 +f 530/1351/448 525/977/443 529/976/442 +f 525/977/443 526/1352/456 528/975/441 +f 526/1352/456 527/1353/455 528/975/441 +f 532/978/444 533/1002/464 534/979/445 +f 536/983/449 534/993/445 535/981/447 +f 535/981/447 525/1014/443 530/982/448 +f 537/984/450 538/990/454 539/985/451 +f 536/987/449 530/1354/448 529/988/442 +f 538/990/454 537/984/450 527/991/455 +f 534/993/445 533/1355/492 542/994/457 +f 544/998/460 543/997/459 545/999/461 +f 532/978/444 547/1019/472 543/1001/463 +f 542/994/457 533/1355/492 544/1003/465 +f 539/985/451 549/1356/471 550/1005/467 +f 543/1001/463 547/1019/472 551/1006/468 +f 544/1003/465 546/1080/61 552/1008/469 +f 552/1008/469 553/1081/474 554/1009/470 +f 542/994/457 538/1016/454 526/1013/456 +f 532/978/444 531/980/446 527/1011/455 +f 538/1016/454 542/994/457 548/1004/466 +f 532/978/444 537/1015/450 540/1018/452 +f 549/1010/471 539/1017/451 548/1004/466 +f 547/1019/472 540/1018/452 550/1020/467 +f 529/1022/442 528/1012/441 531/980/446 +f 531/980/446 534/979/445 541/1021/453 +f 555/1023/401 556/1048/416 557/1024/402 +f 557/1026/402 559/1037/413 560/1027/404 +f 560/1027/404 559/1357/413 561/1028/405 +f 561/1030/405 563/1054/408 564/1031/407 +f 563/1032/408 565/1045/410 566/1033/409 +f 565/1034/410 567/1053/423 568/1035/411 +f 557/1026/402 569/1358/420 570/1036/412 +f 568/1038/411 567/1359/423 571/1039/414 +f 572/1040/415 571/1360/414 556/1041/416 +f 566/1033/409 568/1035/411 573/1042/434 +f 563/1032/408 579/1361/424 578/1044/417 +f 556/1041/416 571/1360/414 576/1046/418 +f 556/1048/416 575/1362/419 569/1049/420 +f 561/1028/405 559/1357/413 570/1050/412 +f 565/1034/410 578/1363/417 577/1052/422 +f 563/1054/408 561/1030/405 580/1055/421 +f 571/1039/414 567/1359/423 577/1057/422 +f 581/1059/425 582/1064/429 583/1060/426 +f 564/1031/407 585/1065/430 586/1062/428 +f 572/1040/415 587/1066/431 573/1063/434 +f 560/1027/404 588/1067/432 582/1064/429 +f 566/1033/409 574/1043/436 585/1065/430 +f 555/1023/401 581/1059/425 587/1066/431 +f 558/1025/403 582/1064/429 581/1059/425 +f 562/1029/406 586/1062/428 588/1067/432 +f 587/1066/431 581/1059/425 584/1068/427 +f 573/1042/434 593/1364/439 592/1070/435 +f 585/1065/430 591/1365/440 590/1071/437 +f 582/1064/429 588/1067/432 589/1072/438 +f 573/1063/434 587/1066/431 594/1074/433 +f 574/1043/436 592/1366/435 591/1076/440 +f 586/1062/428 590/1367/437 589/1077/438 +f 550/1005/467 549/1356/471 554/1078/470 +f 546/1080/61 596/1368/61 553/1081/474 +f 600/1082/104 599/1086/104 598/1083/368 +f 602/1085/101 601/1088/101 599/1086/104 +f 604/1087/367 603/1090/367 601/1088/101 +f 606/1089/330 605/1092/330 603/1090/367 +f 608/1091/374 607/1104/370 605/1092/330 +f 611/1093/399 610/1142/371 609/1094/372 +f 614/1096/387 613/1113/377 609/1097/372 +f 616/1099/348 612/1098/348 609/1097/372 +f 597/1084/368 598/1083/368 612/1098/348 +f 618/1101/383 617/1110/375 599/1086/104 +f 620/1102/379 619/1126/389 608/1091/374 +f 622/1103/385 621/1116/373 605/1092/330 +f 624/1105/388 623/1115/380 604/1087/367 +f 626/1106/376 625/1107/386 597/1084/368 +f 625/1107/386 627/1117/378 600/1082/104 +f 628/1108/382 618/1101/383 601/1088/101 +f 629/1109/381 614/1096/387 612/1098/348 +f 617/1110/375 629/1109/381 598/1083/368 +f 619/1111/389 630/1118/384 615/1100/369 +f 613/1113/377 622/1137/385 607/1114/370 +f 623/1115/380 620/1102/379 606/1089/330 +f 621/1116/373 628/1108/382 603/1090/367 +f 627/1117/378 624/1105/388 602/1085/101 +f 630/1118/384 626/1106/376 616/1099/348 +f 617/1110/375 633/1369/394 632/1121/395 +f 632/1129/395 633/1370/394 639/1371/391 +f 639/1371/391 638/1372/390 632/1129/395 +f 638/1372/390 637/1373/397 632/1129/395 +f 637/1373/397 636/1374/392 632/1129/395 +f 636/1374/392 635/1127/396 632/1129/395 +f 639/1132/391 633/1375/394 617/1110/375 +f 638/1133/390 639/1376/391 618/1101/383 +f 637/1134/397 638/1377/390 628/1108/382 +f 622/1103/385 636/1378/392 637/1135/397 +f 635/1136/396 636/1379/392 622/1137/385 +f 614/1096/387 634/1380/393 635/1138/396 +f 632/1139/395 634/1381/393 614/1096/387 +f 640/1140/400 611/1093/399 607/1095/370 +f 610/1142/371 641/1144/398 615/1143/369 +f 641/1144/398 640/1382/400 608/1145/374 +f 642/1146/407 645/1151/406 644/1147/475 +f 647/1149/404 646/1162/413 644/1150/475 +f 647/1149/404 649/1156/403 648/1152/477 +f 651/1154/401 650/1176/478 648/1155/477 +f 653/1157/415 652/1170/414 650/1158/478 +f 655/1159/411 654/1175/423 652/1160/414 +f 657/1161/412 656/1383/421 644/1150/475 +f 655/1163/411 659/1166/409 658/1164/410 +f 659/1166/409 642/1146/407 643/1167/476 +f 663/1169/479 664/1384/493 650/1158/478 +f 643/1167/476 660/1385/494 661/1171/480 +f 656/1172/421 660/1386/494 643/1148/476 +f 648/1152/477 665/1387/420 657/1173/412 +f 662/1174/422 663/1388/479 652/1160/414 +f 650/1176/478 664/1389/493 665/1177/420 +f 658/1164/410 661/1390/480 662/1178/422 +f 666/1179/430 669/1391/440 668/1180/437 +f 671/1182/429 670/1183/425 651/1154/401 +f 667/1181/428 672/1185/432 647/1149/404 +f 670/1183/425 673/1189/431 653/1157/415 +f 674/1184/436 666/1179/430 642/1146/407 +f 666/1179/430 667/1181/428 645/1151/406 +f 672/1185/432 671/1182/429 649/1156/403 +f 674/1184/436 680/1392/435 669/1186/440 +f 678/1187/433 679/1393/439 681/1188/434 +f 676/1190/426 677/1394/427 670/1183/425 +f 667/1181/428 668/1395/437 675/1191/438 +f 681/1192/434 679/1396/439 680/1193/435 +f 677/1194/427 678/1397/433 673/1189/431 +f 675/1195/438 676/1398/426 671/1182/429 +f 712/1196/407 715/1201/406 714/1197/475 +f 717/1199/404 716/1212/413 714/1200/475 +f 717/1199/404 719/1206/403 718/1202/477 +f 721/1204/401 720/1227/478 718/1205/477 +f 723/1207/415 722/1221/414 720/1208/478 +f 725/1209/411 724/1226/423 722/1210/414 +f 727/1211/412 726/1399/421 714/1200/475 +f 725/1213/411 729/1216/409 728/1214/410 +f 729/1216/409 712/1196/407 713/1217/476 +f 723/1207/415 731/1240/431 730/1219/434 +f 735/1220/479 736/1400/493 720/1208/478 +f 713/1217/476 732/1401/494 733/1222/480 +f 726/1223/421 732/1402/494 713/1198/476 +f 718/1202/477 737/1403/420 727/1224/412 +f 734/1225/422 735/1404/479 722/1210/414 +f 720/1227/478 736/1405/493 737/1228/420 +f 728/1214/410 733/1406/480 734/1229/422 +f 738/1230/430 741/1407/440 740/1231/437 +f 743/1233/429 742/1235/425 721/1204/401 +f 730/1234/434 744/1237/436 729/1216/409 +f 739/1232/428 745/1236/432 717/1199/404 +f 742/1235/425 731/1240/431 723/1207/415 +f 729/1216/409 744/1237/436 738/1230/430 +f 738/1230/430 739/1232/428 715/1201/406 +f 745/1236/432 743/1233/429 719/1206/403 +f 744/1237/436 751/1408/435 741/1238/440 +f 749/1239/433 750/1409/439 730/1219/434 +f 747/1241/426 748/1410/427 742/1235/425 +f 739/1232/428 740/1411/437 746/1242/438 +f 730/1234/434 750/1412/439 751/1243/435 +f 748/1244/427 749/1413/433 731/1240/431 +f 746/1245/438 747/1414/426 743/1233/429 +f 524/964/434 516/966/436 496/930/409 +f 502/937/415 517/960/431 524/970/434 +f 659/1166/409 655/1163/411 681/1192/434 +f 653/1157/415 673/1189/431 681/1188/434 diff --git a/src/main/resources/assets/hbm/models/weapons/moonlight.obj b/src/main/resources/assets/hbm/models/weapons/folly.obj similarity index 54% rename from src/main/resources/assets/hbm/models/weapons/moonlight.obj rename to src/main/resources/assets/hbm/models/weapons/folly.obj index aa4bfc765..814647aec 100644 --- a/src/main/resources/assets/hbm/models/weapons/moonlight.obj +++ b/src/main/resources/assets/hbm/models/weapons/folly.obj @@ -1,6 +1,1449 @@ -# Blender v2.79 (sub 0) OBJ File: 'nice_try_shitass' +# Blender v2.79 (sub 0) OBJ File: 'folly.blend' # www.blender.org -o Circle +o Cog +v 0.382683 1.923880 -4.500000 +v 0.707107 1.707107 -4.500000 +v 0.923880 1.382684 -4.500000 +v 1.000000 1.000000 -4.500000 +v 0.923880 0.617316 -4.500000 +v 0.707107 0.292893 -4.500000 +v 0.382683 0.076120 -4.500000 +v 0.000000 0.000000 -4.500000 +v -0.382683 0.076120 -4.500000 +v -0.707107 0.292893 -4.500000 +v -0.923880 0.617316 -4.500000 +v -1.000000 1.000000 -4.500000 +v -0.923880 1.382683 -4.500000 +v -0.707107 1.707107 -4.500000 +v -0.382683 1.923880 -4.500000 +v 0.000000 2.000000 -4.500000 +v 0.000000 2.000000 -3.500000 +v -0.382683 1.923880 -3.500000 +v -0.707107 1.707107 -3.500000 +v -0.923880 1.382683 -3.500000 +v -1.000000 1.000000 -3.500000 +v -0.923880 0.617316 -3.500000 +v -0.707107 0.292893 -3.500000 +v -0.382683 0.076120 -3.500000 +v 0.000000 0.000000 -3.500000 +v 0.382683 0.076120 -3.500000 +v 0.707107 0.292893 -3.500000 +v 0.923880 0.617316 -3.500000 +v 1.000000 1.000000 -3.500000 +v 0.923880 1.382684 -3.500000 +v 0.707107 1.707107 -3.500000 +v 0.382683 1.923880 -3.500000 +v 1.250000 0.750000 -4.375000 +v -1.250000 0.750000 -4.375000 +v 1.250000 1.250000 -4.375000 +v -1.250000 1.250000 -4.375000 +v -1.250000 1.250000 -4.125000 +v 1.250000 1.250000 -4.125000 +v -1.250000 0.750000 -4.125000 +v 1.250000 0.750000 -4.125000 +v 0.250000 2.250000 -4.125000 +v 0.250000 -0.250000 -4.125000 +v -0.250000 2.250000 -4.125000 +v -0.250000 -0.250000 -4.125000 +v -0.250000 -0.250000 -4.375000 +v -0.250000 2.250000 -4.375000 +v 0.250000 -0.250000 -4.375000 +v 0.250000 2.250000 -4.375000 +v -0.707107 2.060660 -4.125000 +v 1.060660 0.292893 -4.125000 +v -1.060660 1.707107 -4.125000 +v 0.707107 -0.060660 -4.125000 +v 0.707107 -0.060660 -4.375000 +v -1.060660 1.707107 -4.375000 +v 1.060660 0.292893 -4.375000 +v -0.707107 2.060660 -4.375000 +v 1.060660 1.707107 -4.375000 +v -0.707107 -0.060660 -4.375000 +v 0.707107 2.060660 -4.375000 +v -1.060660 0.292893 -4.375000 +v -1.060660 0.292893 -4.125000 +v 0.707107 2.060660 -4.125000 +v -0.707107 -0.060660 -4.125000 +v 1.060660 1.707107 -4.125000 +vt 0.668136 0.865446 +vt 0.629147 0.797819 +vt 0.645297 0.634554 +vt 0.705005 0.634623 +vt 0.743971 0.702209 +vt 0.727831 0.865378 +vt 0.126866 0.765625 +vt 0.134328 0.828125 +vt 0.126866 0.828125 +vt 0.216418 0.828125 +vt 0.208955 0.765625 +vt 0.216418 0.765625 +vt 0.134328 0.671875 +vt 0.208955 0.734375 +vt 0.134328 0.734375 +vt 0.208955 0.765625 +vt 0.134328 0.828125 +vt 0.134328 0.765625 +vt 0.134328 0.859375 +vt 0.208955 0.828125 +vt 0.208955 0.859375 +vt 0.216418 0.828125 +vt 0.216418 0.765625 +vt 0.126866 0.765625 +vt 0.126866 0.828125 +vt 0.134328 0.859375 +vt 0.208955 0.828125 +vt 0.208955 0.859375 +vt 0.208955 0.734375 +vt 0.134328 0.765625 +vt 0.134328 0.734375 +vt 0.134328 0.671875 +vt 0.126866 0.765625 +vt 0.134328 0.828125 +vt 0.126866 0.828125 +vt 0.216418 0.828125 +vt 0.208955 0.765625 +vt 0.216418 0.765625 +vt 0.134328 0.859375 +vt 0.208955 0.828125 +vt 0.208955 0.859375 +vt 0.208955 0.734375 +vt 0.134328 0.765625 +vt 0.134328 0.734375 +vt 0.134328 0.671875 +vt 0.134328 0.671875 +vt 0.208955 0.734375 +vt 0.134328 0.734375 +vt 0.134328 0.765625 +vt 0.208955 0.828125 +vt 0.134328 0.828125 +vt 0.134328 0.859375 +vt 0.208955 0.859375 +vt 0.216418 0.828125 +vt 0.208955 0.765625 +vt 0.216418 0.765625 +vt 0.126866 0.765625 +vt 0.126866 0.828125 +vt 0.656716 0.874957 +vt 0.645297 0.865445 +vt 0.635616 0.838358 +vt 0.626876 0.750000 +vt 0.629147 0.702181 +vt 0.635616 0.661642 +vt 0.656716 0.625043 +vt 0.668136 0.634554 +vt 0.677817 0.661642 +vt 0.684285 0.702181 +vt 0.686557 0.750000 +vt 0.684285 0.797819 +vt 0.677817 0.838358 +vt 0.716418 0.874884 +vt 0.705005 0.865378 +vt 0.695330 0.838306 +vt 0.688865 0.797791 +vt 0.686595 0.750000 +vt 0.688865 0.702209 +vt 0.695330 0.661694 +vt 0.716418 0.625117 +vt 0.727831 0.634623 +vt 0.737506 0.661694 +vt 0.746241 0.750000 +vt 0.743971 0.797791 +vt 0.737506 0.838306 +vt 0.208955 0.671875 +vt 0.208955 0.671875 +vt 0.208955 0.671875 +vt 0.208955 0.671875 +vt 0.776119 0.562500 +vt 0.746269 0.515625 +vt 0.776119 0.515625 +vt 0.776119 0.187500 +vt 0.746269 0.140625 +vt 0.776119 0.140625 +vt 0.776119 0.609375 +vt 0.746269 0.562500 +vt 0.776119 0.234375 +vt 0.746269 0.187500 +vt 0.776119 0.656250 +vt 0.746269 0.609375 +vt 0.776119 0.281250 +vt 0.746269 0.234375 +vt 0.776119 0.703125 +vt 0.746269 0.656250 +vt 0.776119 0.328125 +vt 0.746269 0.281250 +vt 0.776119 0.750000 +vt 0.746269 0.703125 +vt 0.776119 0.421875 +vt 0.746269 0.375000 +vt 0.776119 0.375000 +vt 0.746269 0.328125 +vt 0.776119 0.046875 +vt 0.746269 -0.000000 +vt 0.776119 -0.000000 +vt 0.776119 0.468750 +vt 0.746269 0.421875 +vt 0.776119 0.093750 +vt 0.746269 0.046875 +vt 0.746269 0.468750 +vt 0.746269 0.093750 +vt 0.746269 0.750000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.9239 0.3827 0.0000 +vn 0.9239 -0.3827 0.0000 +vn -0.9239 -0.3827 0.0000 +vn 0.9239 0.3827 0.0000 +vn -0.3827 -0.9239 0.0000 +vn 0.3827 0.9239 0.0000 +vn -0.3827 0.9239 0.0000 +vn 0.3827 -0.9239 0.0000 +s off +f 32/1/1 20/2/1 24/3/1 +f 7/4/2 11/5/2 15/6/2 +f 41/7/3 46/8/3 43/9/3 +f 44/10/4 47/11/4 42/12/4 +f 38/13/1 39/14/1 40/15/1 +f 34/16/2 35/17/2 33/18/2 +f 39/14/4 33/18/4 40/15/4 +f 38/19/3 36/20/3 37/21/3 +f 37/22/5 34/16/5 39/23/5 +f 40/24/6 35/17/6 38/25/6 +f 43/26/5 45/27/5 44/28/5 +f 42/29/6 48/30/6 41/31/6 +f 47/11/2 46/8/2 48/30/2 +f 43/32/1 42/29/1 41/31/1 +f 49/33/7 54/34/7 51/35/7 +f 52/36/8 55/37/8 50/38/8 +f 51/39/9 53/40/9 52/41/9 +f 50/42/10 56/43/10 49/44/10 +f 55/37/2 54/34/2 56/43/2 +f 51/45/1 50/42/1 49/44/1 +f 62/46/1 63/47/1 64/48/1 +f 57/49/2 60/50/2 59/51/2 +f 63/47/8 57/49/8 64/48/8 +f 62/52/7 60/50/7 61/53/7 +f 61/54/9 58/55/9 63/56/9 +f 64/57/10 59/51/10 62/58/10 +f 32/1/1 17/59/1 18/60/1 +f 18/60/1 19/61/1 32/1/1 +f 19/61/1 20/2/1 32/1/1 +f 20/2/1 21/62/1 22/63/1 +f 22/63/1 23/64/1 20/2/1 +f 23/64/1 24/3/1 20/2/1 +f 24/3/1 25/65/1 26/66/1 +f 26/66/1 27/67/1 28/68/1 +f 28/68/1 29/69/1 32/1/1 +f 29/69/1 30/70/1 32/1/1 +f 30/70/1 31/71/1 32/1/1 +f 24/3/1 26/66/1 32/1/1 +f 26/66/1 28/68/1 32/1/1 +f 15/6/2 16/72/2 1/73/2 +f 1/73/2 2/74/2 3/75/2 +f 3/75/2 4/76/2 7/4/2 +f 4/76/2 5/77/2 7/4/2 +f 5/77/2 6/78/2 7/4/2 +f 7/4/2 8/79/2 9/80/2 +f 9/80/2 10/81/2 7/4/2 +f 10/81/2 11/5/2 7/4/2 +f 11/5/2 12/82/2 13/83/2 +f 13/83/2 14/84/2 11/5/2 +f 14/84/2 15/6/2 11/5/2 +f 15/6/2 1/73/2 7/4/2 +f 1/73/2 3/75/2 7/4/2 +f 41/7/3 48/30/3 46/8/3 +f 44/10/4 45/27/4 47/11/4 +f 38/13/1 37/85/1 39/14/1 +f 34/16/2 36/20/2 35/17/2 +f 39/14/4 34/16/4 33/18/4 +f 38/19/3 35/17/3 36/20/3 +f 37/22/5 36/20/5 34/16/5 +f 40/24/6 33/18/6 35/17/6 +f 43/26/5 46/8/5 45/27/5 +f 42/29/6 47/11/6 48/30/6 +f 47/11/2 45/27/2 46/8/2 +f 43/32/1 44/86/1 42/29/1 +f 49/33/7 56/43/7 54/34/7 +f 52/36/8 53/40/8 55/37/8 +f 51/39/9 54/34/9 53/40/9 +f 50/42/10 55/37/10 56/43/10 +f 55/37/2 53/40/2 54/34/2 +f 51/45/1 52/87/1 50/42/1 +f 62/46/1 61/88/1 63/47/1 +f 57/49/2 58/55/2 60/50/2 +f 63/47/8 58/55/8 57/49/8 +f 62/52/7 59/51/7 60/50/7 +f 61/54/9 60/50/9 58/55/9 +f 64/57/10 57/49/10 59/51/10 +s 1 +f 12/89/5 20/90/11 13/91/11 +f 4/92/6 28/93/12 5/94/12 +f 11/95/13 21/96/5 12/89/5 +f 3/97/14 29/98/6 4/92/6 +f 10/99/9 22/100/13 11/95/13 +f 2/101/10 30/102/14 3/97/14 +f 9/103/15 23/104/9 10/99/9 +f 1/105/16 31/106/10 2/101/10 +f 8/107/4 24/108/15 9/103/15 +f 15/109/17 17/110/3 16/111/3 +f 16/111/3 32/112/16 1/105/16 +f 7/113/18 25/114/4 8/115/4 +f 14/116/7 18/117/17 15/109/17 +f 6/118/8 26/119/18 7/113/18 +f 13/91/11 19/120/7 14/116/7 +f 5/94/12 27/121/8 6/118/8 +f 12/89/5 21/96/5 20/90/11 +f 4/92/6 29/98/6 28/93/12 +f 11/95/13 22/100/13 21/96/5 +f 3/97/14 30/102/14 29/98/6 +f 10/99/9 23/104/9 22/100/13 +f 2/101/10 31/106/10 30/102/14 +f 9/103/15 24/108/15 23/104/9 +f 1/105/16 32/112/16 31/106/10 +f 8/107/4 25/122/4 24/108/15 +f 15/109/17 18/117/17 17/110/3 +f 16/111/3 17/110/3 32/112/16 +f 7/113/18 26/119/18 25/114/4 +f 14/116/7 19/120/7 18/117/17 +f 6/118/8 27/121/8 26/119/18 +f 13/91/11 20/90/11 19/120/7 +f 5/94/12 28/93/12 27/121/8 +o Breech +v -0.500000 0.000000 -6.000000 +v 0.500000 0.000000 -6.000000 +v -0.500000 0.000000 -7.000000 +v 0.500000 0.000000 -7.000000 +v -0.500000 -0.250000 -7.250000 +v 0.500000 -0.250000 -7.250000 +v -0.500000 -0.250000 -5.750000 +v 0.500000 -0.250000 -5.750000 +v 0.250000 0.125000 -7.187500 +v -0.250000 0.125000 -7.187500 +v 0.250000 0.125000 -5.812500 +v -0.250000 0.125000 -5.812500 +v -0.500000 -0.250000 -5.625000 +v 0.500000 -0.250000 -5.625000 +v -0.500000 0.125000 -5.625000 +v 0.500000 0.125000 -5.625000 +v 0.500000 -0.250000 -7.375000 +v -0.500000 -0.250000 -7.375000 +v 0.500000 0.125000 -7.375000 +v -0.500000 0.125000 -7.375000 +v 0.250000 0.375000 -5.812500 +v 0.250000 0.375000 -7.187500 +v -0.250000 0.375000 -7.187500 +v -0.250000 0.375000 -5.812500 +v 0.000000 2.000000 -4.500000 +v -0.382683 1.923880 -4.500000 +v -0.707107 1.707107 -4.500000 +v -0.923880 1.382683 -4.500000 +v -1.000000 1.000000 -4.500000 +v -0.923880 0.617316 -4.500000 +v -0.707107 0.292893 -4.500000 +v -0.382683 0.076120 -4.500000 +v 0.000000 0.000000 -4.500000 +v 0.382683 0.076120 -4.500000 +v 0.707107 0.292893 -4.500000 +v 0.923880 0.617316 -4.500000 +v 1.000000 1.000000 -4.500000 +v 0.923880 1.382684 -4.500000 +v 0.707107 1.707107 -4.500000 +v 0.382683 1.923880 -4.500000 +v 0.000000 1.750000 -5.500000 +v -0.287013 1.692910 -5.500000 +v -0.530330 1.530330 -5.500000 +v -0.692910 1.287013 -5.500000 +v -0.750000 1.000000 -5.500000 +v -0.692910 0.712987 -5.500000 +v -0.530330 0.469670 -5.500000 +v -0.287013 0.307090 -5.500000 +v 0.000000 0.250000 -5.500000 +v 0.287013 0.307090 -5.500000 +v 0.530330 0.469670 -5.500000 +v 0.692910 0.712987 -5.500000 +v 0.750000 1.000000 -5.500000 +v 0.692910 1.287013 -5.500000 +v 0.530330 1.530330 -5.500000 +v 0.287012 1.692910 -5.500000 +v 0.000000 1.750000 -7.500000 +v -0.287013 1.692910 -7.500000 +v -0.530330 1.530330 -7.500000 +v -0.692910 1.287013 -7.500000 +v -0.750000 1.000000 -7.500000 +v -0.692910 0.712987 -7.500000 +v -0.530330 0.469670 -7.500000 +v -0.287013 0.307090 -7.500000 +v 0.000000 0.250000 -7.500000 +v 0.287013 0.307090 -7.500000 +v 0.530330 0.469670 -7.500000 +v 0.692910 0.712987 -7.500000 +v 0.750000 1.000000 -7.500000 +v 0.692910 1.287013 -7.500000 +v 0.530330 1.530330 -7.500000 +v 0.287012 1.692910 -7.500000 +v 0.000000 1.500000 -8.000000 +v -0.191342 1.461940 -8.000000 +v -0.353553 1.353553 -8.000000 +v -0.461940 1.191342 -8.000000 +v -0.500000 1.000000 -8.000000 +v -0.461940 0.808658 -8.000000 +v -0.353553 0.646447 -8.000000 +v -0.191342 0.538060 -8.000000 +v 0.000000 0.500000 -8.000000 +v 0.191341 0.538060 -8.000000 +v 0.353553 0.646446 -8.000000 +v 0.461940 0.808658 -8.000000 +v 0.500000 1.000000 -8.000000 +v 0.461940 1.191342 -8.000000 +v 0.353553 1.353554 -8.000000 +v 0.191341 1.461940 -8.000000 +vt 0.085821 0.796875 +vt 0.115672 0.671875 +vt 0.115672 0.796875 +vt 0.078358 0.796875 +vt 0.085821 0.671875 +vt 0.123134 0.671875 +vt 0.022388 0.656250 +vt 0.063433 0.671875 +vt 0.011194 0.671875 +vt 0.011194 0.796875 +vt 0.014925 0.843750 +vt 0.022388 0.812500 +vt 0.078358 0.625000 +vt 0.063433 0.656250 +vt 0.063433 0.625000 +vt 0.000000 0.796875 +vt 0.000000 0.671875 +vt 0.126866 0.796875 +vt 0.123134 0.796875 +vt 0.175373 0.625000 +vt 0.134328 0.656250 +vt 0.134328 0.625000 +vt 0.119403 0.625000 +vt 0.078358 0.656250 +vt 0.063433 0.796875 +vt 0.074627 0.671875 +vt 0.074627 0.796875 +vt 0.078358 0.671875 +vt 0.119403 0.656250 +vt 0.810345 0.643319 +vt 0.831446 0.643319 +vt 0.831446 0.731681 +vt 0.014925 0.625000 +vt 0.059701 0.625000 +vt 0.063433 0.625000 +vt 0.059701 0.843750 +vt 0.052239 0.812500 +vt 0.052239 0.656250 +vt 0.011194 0.843750 +vt 0.126866 0.671875 +vt 0.175373 0.656250 +vt 0.826605 0.745225 +vt 0.820895 0.749981 +vt 0.815185 0.745225 +vt 0.810345 0.731681 +vt 0.807110 0.711411 +vt 0.805975 0.687500 +vt 0.807110 0.663589 +vt 0.815185 0.629775 +vt 0.820895 0.625019 +vt 0.826605 0.629775 +vt 0.834680 0.663589 +vt 0.835816 0.687500 +vt 0.834680 0.711411 +vt 0.011194 0.625000 +vt 0.063433 0.843750 +vt 0.776119 0.281250 +vt 0.805970 0.234375 +vt 0.805970 0.273438 +vt 0.776119 0.656250 +vt 0.805970 0.695312 +vt 0.776119 0.703125 +vt 0.805970 0.320312 +vt 0.776119 0.328125 +vt 0.805970 0.742188 +vt 0.776119 0.750000 +vt 0.776119 0.421875 +vt 0.805970 0.375000 +vt 0.805970 0.414062 +vt 0.805970 0.367188 +vt 0.776119 0.375000 +vt 0.776119 0.046875 +vt 0.805970 -0.000000 +vt 0.805970 0.039062 +vt 0.776119 0.468750 +vt 0.805970 0.421875 +vt 0.805970 0.460938 +vt 0.805970 0.085938 +vt 0.776119 0.093750 +vt 0.776119 0.515625 +vt 0.805970 0.468750 +vt 0.805970 0.507812 +vt 0.805970 0.132812 +vt 0.776119 0.140625 +vt 0.805970 0.554688 +vt 0.776119 0.562500 +vt 0.805970 0.179688 +vt 0.776119 0.187500 +vt 0.776119 0.609375 +vt 0.805970 0.562500 +vt 0.805970 0.601562 +vt 0.776119 0.234375 +vt 0.805970 0.187500 +vt 0.805970 0.226562 +vt 0.805970 0.648438 +vt 0.805970 0.117188 +vt 0.865672 0.156250 +vt 0.805970 0.156250 +vt 0.805970 0.468750 +vt 0.865672 0.507812 +vt 0.805970 0.507812 +vt 0.865672 0.195312 +vt 0.805970 0.195312 +vt 0.865672 0.546875 +vt 0.805970 0.546875 +vt 0.865672 0.234375 +vt 0.805970 0.234375 +vt 0.865672 0.585938 +vt 0.805970 0.585938 +vt 0.865672 0.273438 +vt 0.805970 0.273438 +vt 0.865672 0.625000 +vt 0.805970 0.625000 +vt 0.805970 0.312500 +vt 0.865672 0.351562 +vt 0.805970 0.351562 +vt 0.865672 0.312500 +vt 0.865672 0.039062 +vt 0.865672 0.390625 +vt 0.805970 0.390625 +vt 0.865672 0.078125 +vt 0.805970 0.078125 +vt 0.865672 0.429688 +vt 0.805970 0.429688 +vt 0.865672 0.117188 +vt 0.865672 0.468750 +vt 0.880597 0.203125 +vt 0.880597 0.242188 +vt 0.880597 0.281250 +vt 0.880597 0.320312 +vt 0.880597 0.359375 +vt 0.880597 0.421875 +vt 0.880597 0.437500 +vt 0.880597 0.500000 +vt 0.880597 0.515625 +vt 0.880597 0.578125 +vt 0.880597 0.593750 +vt 0.865672 -0.000000 +vt 0.880597 0.031250 +vt 0.880597 0.070312 +vt 0.880597 0.085938 +vt 0.880597 0.125000 +vt 0.880597 0.187500 +vt 0.805970 0.656250 +vt 0.805970 0.281250 +vt 0.805970 0.703125 +vt 0.805970 0.328125 +vt 0.776119 -0.000000 +vt 0.805970 0.046875 +vt 0.805970 0.093750 +vt 0.805970 0.515625 +vt 0.805970 0.140625 +vt 0.805970 0.609375 +vt 0.880597 0.226562 +vt 0.880597 0.265625 +vt 0.880597 0.304688 +vt 0.880597 0.343750 +vt 0.880597 0.382812 +vt 0.880597 0.398438 +vt 0.880597 0.460938 +vt 0.880597 0.476562 +vt 0.880597 0.539062 +vt 0.880597 0.554688 +vt 0.880597 0.617188 +vt 0.880597 0.007812 +vt 0.880597 0.046875 +vt 0.880597 0.109375 +vt 0.880597 0.148438 +vt 0.880597 0.164062 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -0.7071 -0.7071 +vn 1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.6860 0.6860 -0.2425 +vn 0.8963 0.3713 -0.2425 +vn -0.6860 -0.6860 -0.2425 +vn -0.3713 -0.8963 -0.2425 +vn 0.3713 0.8963 -0.2425 +vn -0.0000 -0.9701 -0.2425 +vn -0.3713 0.8963 -0.2425 +vn -0.0000 0.9701 -0.2425 +vn 0.3713 -0.8963 -0.2425 +vn -0.6860 0.6860 -0.2425 +vn 0.6860 -0.6860 -0.2425 +vn -0.8963 0.3713 -0.2425 +vn 0.8963 -0.3713 -0.2425 +vn -0.9701 -0.0000 -0.2425 +vn 0.9701 0.0000 -0.2425 +vn -0.8963 -0.3713 -0.2425 +vn 0.9239 -0.3827 0.0000 +vn -0.9239 -0.3827 0.0000 +vn 0.9239 0.3827 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.3827 -0.9239 0.0000 +vn 0.3827 0.9239 0.0000 +vn -0.3827 0.9239 0.0000 +vn 0.3827 -0.9239 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.9239 0.3827 0.0000 +vn 0.8263 0.3423 -0.4472 +vn 0.6325 0.6325 -0.4472 +vn 0.3423 0.8263 -0.4472 +vn -0.0000 0.8944 -0.4472 +vn -0.3423 0.8263 -0.4472 +vn -0.6325 0.6325 -0.4472 +vn -0.8263 0.3423 -0.4472 +vn -0.8944 -0.0000 -0.4472 +vn -0.8263 -0.3423 -0.4472 +vn -0.6325 -0.6325 -0.4472 +vn -0.3423 -0.8263 -0.4472 +vn -0.0000 -0.8944 -0.4472 +vn 0.3423 -0.8263 -0.4472 +vn 0.6325 -0.6325 -0.4472 +vn 0.8263 -0.3423 -0.4472 +vn 0.8944 -0.0000 -0.4472 +s off +f 67/123/19 66/124/19 65/125/19 +f 69/126/20 68/127/20 67/123/20 +f 72/128/21 65/125/21 66/124/21 +f 66/129/22 83/130/22 80/131/22 +f 83/130/23 79/132/23 80/131/23 +f 71/133/24 79/132/24 65/134/24 +f 75/135/25 88/136/25 76/137/25 +f 80/131/25 77/138/25 78/139/25 +f 72/128/19 77/140/19 71/141/19 +f 76/142/24 87/143/24 74/144/24 +f 73/145/22 85/146/22 75/135/22 +f 84/147/26 81/148/26 82/149/26 +f 69/126/19 81/148/19 70/150/19 +f 74/144/26 86/151/26 73/145/26 +f 147/152/26 143/153/26 139/154/26 +f 80/131/22 72/155/22 66/129/22 +f 83/130/22 70/156/22 81/157/22 +f 84/147/24 69/158/24 67/159/24 +f 79/132/24 67/159/24 65/134/24 +f 67/123/19 68/127/19 66/124/19 +f 69/126/20 70/150/20 68/127/20 +f 72/128/21 71/141/21 65/125/21 +f 66/129/22 68/160/22 83/130/22 +f 83/130/23 84/147/23 79/132/23 +f 71/133/24 77/161/24 79/132/24 +f 75/135/25 85/146/25 88/136/25 +f 80/131/25 79/132/25 77/138/25 +f 72/128/19 78/162/19 77/140/19 +f 76/142/24 88/163/24 87/143/24 +f 73/145/22 86/151/22 85/146/22 +f 84/147/26 83/130/26 81/148/26 +f 69/126/19 82/149/19 81/148/19 +f 74/144/26 87/143/26 86/151/26 +f 139/154/26 138/164/26 137/165/26 +f 137/165/26 152/166/26 139/154/26 +f 152/166/26 151/167/26 139/154/26 +f 151/167/26 150/168/26 149/169/26 +f 149/169/26 148/170/26 147/152/26 +f 147/152/26 146/171/26 143/153/26 +f 146/171/26 145/172/26 143/153/26 +f 145/172/26 144/173/26 143/153/26 +f 143/153/26 142/174/26 141/175/26 +f 141/175/26 140/176/26 139/154/26 +f 151/167/26 149/169/26 139/154/26 +f 149/169/26 147/152/26 139/154/26 +f 143/153/26 141/175/26 139/154/26 +f 80/131/22 78/177/22 72/155/22 +f 83/130/22 68/160/22 70/156/22 +f 84/147/24 82/178/24 69/158/24 +f 79/132/24 84/147/24 67/159/24 +s 1 +f 103/179/27 118/180/28 119/181/27 +f 95/182/29 112/183/30 96/184/30 +f 103/179/27 120/185/31 104/186/31 +f 96/184/30 113/187/32 97/188/32 +f 90/189/33 105/190/34 106/191/33 +f 104/186/31 105/192/34 89/193/34 +f 98/194/35 113/195/32 114/196/35 +f 91/197/36 106/198/33 107/199/36 +f 98/194/35 115/200/37 99/201/37 +f 92/202/38 107/203/36 108/204/38 +f 99/201/37 116/205/39 100/206/39 +f 92/202/38 109/207/40 93/208/40 +f 100/206/39 117/209/41 101/210/41 +f 94/211/42 109/212/40 110/213/42 +f 102/214/28 117/215/41 118/216/28 +f 94/211/42 111/217/29 95/182/29 +f 116/218/43 133/219/22 117/220/22 +f 109/221/24 126/222/44 110/223/44 +f 117/220/22 134/224/45 118/225/45 +f 110/223/44 127/226/46 111/227/46 +f 118/225/45 135/228/47 119/229/47 +f 111/227/46 128/230/48 112/231/48 +f 119/229/47 136/232/49 120/233/49 +f 112/231/48 129/234/19 113/235/19 +f 105/236/23 122/237/50 106/238/50 +f 120/233/49 121/239/23 105/236/23 +f 113/195/19 130/240/51 114/196/51 +f 106/238/50 123/241/52 107/242/52 +f 114/196/51 131/243/53 115/244/53 +f 107/242/52 124/245/54 108/246/54 +f 115/244/53 132/247/43 116/218/43 +f 108/246/54 125/248/24 109/221/24 +f 150/249/55 135/228/56 134/224/55 +f 151/250/56 136/232/57 135/228/56 +f 152/251/57 121/239/58 136/232/57 +f 137/252/58 122/237/59 121/239/58 +f 138/253/59 123/241/60 122/237/59 +f 123/241/60 140/254/61 124/245/61 +f 140/255/61 125/248/62 124/245/61 +f 125/248/62 142/256/63 126/222/63 +f 142/257/63 127/226/64 126/222/63 +f 127/226/64 144/258/65 128/230/65 +f 144/259/65 129/234/66 128/230/65 +f 129/260/66 146/261/67 130/240/67 +f 130/240/67 147/262/68 131/243/68 +f 147/263/68 132/247/69 131/243/68 +f 148/264/69 133/219/70 132/247/69 +f 133/219/70 150/265/55 134/224/55 +f 103/179/27 102/214/28 118/180/28 +f 95/182/29 111/266/29 112/183/30 +f 103/179/27 119/267/27 120/185/31 +f 96/184/30 112/268/30 113/187/32 +f 90/189/33 89/193/34 105/190/34 +f 104/186/31 120/269/31 105/192/34 +f 98/194/35 97/270/32 113/195/32 +f 91/197/36 90/189/33 106/198/33 +f 98/194/35 114/271/35 115/200/37 +f 92/202/38 91/197/36 107/203/36 +f 99/201/37 115/272/37 116/205/39 +f 92/202/38 108/273/38 109/207/40 +f 100/206/39 116/274/39 117/209/41 +f 94/211/42 93/208/40 109/212/40 +f 102/214/28 101/210/41 117/215/41 +f 94/211/42 110/275/42 111/217/29 +f 116/218/43 132/247/43 133/219/22 +f 109/221/24 125/248/24 126/222/44 +f 117/220/22 133/219/22 134/224/45 +f 110/223/44 126/222/44 127/226/46 +f 118/225/45 134/224/45 135/228/47 +f 111/227/46 127/226/46 128/230/48 +f 119/229/47 135/228/47 136/232/49 +f 112/231/48 128/230/48 129/234/19 +f 105/236/23 121/239/23 122/237/50 +f 120/233/49 136/232/49 121/239/23 +f 113/195/19 129/260/19 130/240/51 +f 106/238/50 122/237/50 123/241/52 +f 114/196/51 130/240/51 131/243/53 +f 107/242/52 123/241/52 124/245/54 +f 115/244/53 131/243/53 132/247/43 +f 108/246/54 124/245/54 125/248/24 +f 150/249/55 151/276/56 135/228/56 +f 151/250/56 152/277/57 136/232/57 +f 152/251/57 137/278/58 121/239/58 +f 137/252/58 138/279/59 122/237/59 +f 138/253/59 139/280/60 123/241/60 +f 123/241/60 139/281/60 140/254/61 +f 140/255/61 141/282/62 125/248/62 +f 125/248/62 141/283/62 142/256/63 +f 142/257/63 143/284/64 127/226/64 +f 127/226/64 143/285/64 144/258/65 +f 144/259/65 145/286/66 129/234/66 +f 129/260/66 145/287/66 146/261/67 +f 130/240/67 146/288/67 147/262/68 +f 147/263/68 148/289/69 132/247/69 +f 148/264/69 149/290/70 133/219/70 +f 133/219/70 149/291/70 150/265/55 +o Shell +v 0.000000 1.562500 -3.500000 +v -0.215260 1.519682 -3.500000 +v -0.397748 1.397748 -3.500000 +v -0.519682 1.215260 -3.500000 +v -0.562500 1.000000 -3.500000 +v -0.519682 0.784740 -3.500000 +v -0.397748 0.602252 -3.500000 +v -0.215260 0.480318 -3.500000 +v 0.000000 0.437500 -3.500000 +v 0.215260 0.480318 -3.500000 +v 0.397747 0.602252 -3.500000 +v 0.519682 0.784740 -3.500000 +v 0.562500 1.000000 -3.500000 +v 0.519682 1.215260 -3.500000 +v 0.397747 1.397748 -3.500000 +v 0.215259 1.519682 -3.500000 +v 0.287012 1.692909 -3.250000 +v 0.530330 1.530331 -3.250000 +v 0.692910 1.287012 -3.250000 +v 0.750000 1.000000 -3.250000 +v 0.692910 0.712988 -3.250000 +v 0.530330 0.469669 -3.250000 +v 0.287013 0.307091 -3.250000 +v 0.000000 0.250000 -3.250000 +v -0.287013 0.307091 -3.250000 +v -0.530330 0.469669 -3.250000 +v -0.692910 0.712988 -3.250000 +v -0.750000 1.000000 -3.250000 +v -0.692910 1.287012 -3.250000 +v -0.530330 1.530331 -3.250000 +v -0.287013 1.692909 -3.250000 +v 0.000000 1.750000 -3.250000 +v 0.287012 1.692909 -1.000000 +v 0.530330 1.530331 -1.000000 +v 0.692910 1.287012 -1.000000 +v 0.750000 1.000000 -1.000000 +v 0.692910 0.712988 -1.000000 +v 0.530330 0.469669 -1.000000 +v 0.287013 0.307091 -1.000000 +v 0.000000 0.250000 -1.000000 +v -0.287013 0.307091 -1.000000 +v -0.530330 0.469669 -1.000000 +v -0.692910 0.712988 -1.000000 +v -0.750000 1.000000 -1.000000 +v -0.692910 1.287012 -1.000000 +v -0.530330 1.530331 -1.000000 +v -0.287013 1.692909 -1.000000 +v 0.000000 1.750000 -1.000000 +v 0.179382 1.433068 0.000000 +v 0.331456 1.331457 0.000000 +v 0.433069 1.179382 0.000000 +v 0.468750 1.000000 0.000000 +v 0.433069 0.820618 0.000000 +v 0.331456 0.668543 0.000000 +v 0.179383 0.566932 0.000000 +v 0.000000 0.531250 0.000000 +v -0.179383 0.566932 0.000000 +v -0.331456 0.668543 0.000000 +v -0.433069 0.820618 0.000000 +v -0.468750 1.000000 0.000000 +v -0.433069 1.179382 0.000000 +v -0.331456 1.331457 0.000000 +v -0.179383 1.433068 0.000000 +v 0.000000 1.468750 0.000000 +v 0.000000 1.000000 0.500000 +vt 0.864481 0.745016 +vt 0.840742 0.745016 +vt 0.840743 0.645609 +vt 0.846188 0.630372 +vt 0.852612 0.625022 +vt 0.859036 0.630372 +vt 0.864481 0.645610 +vt 0.868120 0.668414 +vt 0.869398 0.695313 +vt 0.868120 0.722212 +vt 0.859036 0.760253 +vt 0.852612 0.765604 +vt 0.846188 0.760253 +vt 0.837104 0.722212 +vt 0.835826 0.695313 +vt 0.837104 0.668414 +vt 1.000000 0.242188 +vt 0.992537 0.273438 +vt 0.992537 0.234375 +vt 1.000000 0.007812 +vt 0.992537 0.039062 +vt 0.992537 0.000000 +vt 0.992537 0.351562 +vt 1.000000 0.382812 +vt 0.992537 0.390625 +vt 1.000000 0.554688 +vt 0.992537 0.585938 +vt 0.992537 0.546875 +vt 1.000000 0.320312 +vt 0.992537 0.312500 +vt 1.000000 0.164062 +vt 0.992537 0.195312 +vt 0.992537 0.156250 +vt 1.000000 0.617188 +vt 0.992537 0.625000 +vt 1.000000 0.398438 +vt 0.992537 0.429688 +vt 0.992537 0.078125 +vt 1.000000 0.109375 +vt 0.992537 0.117188 +vt 1.000000 0.476562 +vt 0.992537 0.507812 +vt 0.992537 0.468750 +vt 1.000000 0.539062 +vt 1.000000 0.148438 +vt 1.000000 0.304688 +vt 1.000000 0.203125 +vt 1.000000 0.070312 +vt 1.000000 0.460938 +vt 0.925373 0.156250 +vt 0.925373 0.078125 +vt 0.925373 0.585938 +vt 0.925373 0.468750 +vt 0.925373 0.390625 +vt 0.925373 0.507812 +vt 0.925373 0.234375 +vt 0.925373 0.117188 +vt 0.925373 0.000000 +vt 0.925373 0.273438 +vt 0.925373 0.351562 +vt 0.925373 0.195312 +vt 0.925373 0.546875 +vt 0.925373 0.429688 +vt 0.925373 0.312500 +vt 0.925373 0.039062 +vt 0.895522 0.007812 +vt 0.895522 0.320312 +vt 0.895522 0.539062 +vt 0.895522 0.515625 +vt 0.895522 0.164062 +vt 0.895522 0.304688 +vt 0.895522 0.281250 +vt 0.895522 0.226562 +vt 0.895522 0.203125 +vt 0.895522 0.554688 +vt 0.895522 0.070312 +vt 0.895522 0.046875 +vt 0.895522 0.617188 +vt 0.895522 0.593750 +vt 0.895522 0.085938 +vt 0.895522 0.398438 +vt 0.895522 0.242188 +vt 0.895522 0.125000 +vt 0.895522 0.437500 +vt 0.895522 0.382812 +vt 0.895522 0.359375 +vt 0.895522 0.476562 +vt 0.895522 0.460938 +vt 0.880597 0.445312 +vt 0.880597 0.367188 +vt 0.895522 0.031250 +vt 0.880597 0.015625 +vt 0.895522 0.343750 +vt 0.880597 0.328125 +vt 0.880597 0.523438 +vt 0.895522 0.187500 +vt 0.880597 0.171875 +vt 0.880597 0.289062 +vt 0.880597 0.210938 +vt 0.895522 0.578125 +vt 0.880597 0.562500 +vt 0.880597 0.054688 +vt 0.880597 0.601562 +vt 0.895522 0.109375 +vt 0.880597 0.093750 +vt 0.895522 0.421875 +vt 0.880597 0.406250 +vt 0.895522 0.265625 +vt 0.880597 0.250000 +vt 0.895522 0.148438 +vt 0.880597 0.132812 +vt 0.895522 0.500000 +vt 0.880597 0.484375 +vt 1.000000 0.265625 +vt 1.000000 0.031250 +vt 1.000000 0.359375 +vt 1.000000 0.578125 +vt 1.000000 0.343750 +vt 1.000000 0.187500 +vt 1.000000 0.593750 +vt 1.000000 0.421875 +vt 1.000000 0.085938 +vt 1.000000 0.500000 +vt 1.000000 0.515625 +vt 1.000000 0.125000 +vt 1.000000 0.281250 +vt 1.000000 0.226562 +vt 1.000000 0.046875 +vt 1.000000 0.437500 +vt 0.925373 0.625000 +vn 0.0000 0.0000 -1.0000 +vn 0.5657 0.5657 -0.6000 +vn 0.3061 0.7391 -0.6000 +vn 0.0000 -0.8000 -0.6000 +vn 0.3061 -0.7391 -0.6000 +vn -0.3061 0.7391 -0.6000 +vn -0.5657 0.5657 -0.6000 +vn -0.5657 -0.5657 -0.6000 +vn -0.3061 -0.7391 -0.6000 +vn 0.0000 0.8000 -0.6000 +vn 0.8000 0.0000 -0.6000 +vn 0.7391 0.3061 -0.6000 +vn -0.7391 0.3061 -0.6000 +vn 0.5657 -0.5657 -0.6000 +vn 0.7391 -0.3061 -0.6000 +vn -0.8000 -0.0000 -0.6000 +vn -0.7391 -0.3061 -0.6000 +vn 0.9239 0.3827 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.9239 -0.3827 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.0000 -1.0000 0.0000 +vn -0.3827 -0.9239 0.0000 +vn -0.9239 -0.3827 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.9239 0.3827 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.3827 0.9239 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.3827 -0.9239 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.3827 0.9239 0.0000 +vn 0.3684 -0.8894 0.2707 +vn 0.0000 -0.8777 0.4792 +vn 0.0000 -0.9627 0.2707 +vn -0.3684 0.8894 0.2707 +vn 0.0000 0.8777 0.4792 +vn 0.0000 0.9627 0.2707 +vn -0.8894 -0.3684 0.2707 +vn -0.6206 -0.6207 0.4792 +vn -0.8109 -0.3359 0.4792 +vn 0.8894 0.3684 0.2707 +vn 0.8777 0.0000 0.4792 +vn 0.9627 0.0000 0.2707 +vn 0.3684 0.8894 0.2707 +vn 0.3359 0.8109 0.4792 +vn 0.6206 0.6207 0.4792 +vn 0.8109 0.3359 0.4792 +vn -0.3684 -0.8894 0.2707 +vn -0.6807 -0.6807 0.2707 +vn 0.6206 -0.6207 0.4792 +vn 0.3359 -0.8109 0.4792 +vn -0.3359 -0.8109 0.4792 +vn 0.8894 -0.3684 0.2707 +vn 0.6807 -0.6807 0.2707 +vn -0.8894 0.3684 0.2707 +vn -0.6206 0.6207 0.4792 +vn -0.6807 0.6807 0.2707 +vn 0.6807 0.6807 0.2707 +vn 0.8109 -0.3359 0.4792 +vn -0.9627 -0.0000 0.2707 +vn -0.8109 0.3359 0.4792 +vn -0.3359 0.8109 0.4792 +vn -0.8777 -0.0000 0.4792 +vn -0.0000 -0.0000 1.0000 +s off +f 155/292/71 167/293/71 163/294/71 +f 163/294/71 162/295/71 161/296/71 +f 161/296/71 160/297/71 163/294/71 +f 160/297/71 159/298/71 163/294/71 +f 159/298/71 158/299/71 157/300/71 +f 157/300/71 156/301/71 155/292/71 +f 155/292/71 154/302/71 167/293/71 +f 154/302/71 153/303/71 167/293/71 +f 153/303/71 168/304/71 167/293/71 +f 167/293/71 166/305/71 165/306/71 +f 165/306/71 164/307/71 163/294/71 +f 159/298/71 157/300/71 163/294/71 +f 157/300/71 155/292/71 163/294/71 +f 167/293/71 165/306/71 163/294/71 +s 1 +f 167/308/72 169/309/73 170/310/72 +f 161/311/74 175/312/75 176/313/74 +f 183/314/76 155/315/77 182/316/77 +f 159/317/78 177/318/79 178/319/78 +f 153/320/80 183/314/76 184/321/80 +f 165/322/81 171/323/82 172/324/81 +f 177/318/79 161/325/74 176/326/74 +f 155/327/77 181/328/83 182/316/77 +f 174/329/84 164/330/85 173/331/85 +f 157/332/86 179/333/87 180/334/86 +f 179/333/87 159/335/78 178/319/78 +f 173/331/85 165/336/81 172/324/81 +f 169/309/73 153/337/80 184/321/80 +f 166/338/82 170/310/72 171/323/82 +f 175/312/75 163/339/84 174/329/84 +f 181/328/83 157/340/86 180/334/86 +f 171/323/88 188/341/89 172/324/89 +f 173/331/90 190/342/91 174/329/91 +f 176/326/92 193/343/93 177/318/93 +f 179/333/94 196/344/95 180/334/95 +f 181/328/96 198/345/97 182/316/97 +f 178/319/98 195/346/94 179/333/94 +f 169/309/99 186/347/100 170/310/100 +f 172/324/89 189/348/90 173/331/90 +f 175/312/101 192/349/92 176/313/92 +f 184/321/102 185/350/99 169/309/99 +f 182/316/97 199/351/103 183/314/103 +f 170/310/100 187/352/88 171/323/88 +f 177/318/93 194/353/98 178/319/98 +f 180/334/95 197/354/96 181/328/96 +f 183/314/103 200/355/102 184/321/102 +f 174/329/91 191/356/101 175/312/101 +f 191/356/104 208/357/105 192/349/106 +f 199/351/107 216/358/108 200/355/109 +f 195/346/110 210/359/111 211/360/112 +f 187/352/113 204/361/114 188/341/115 +f 185/350/116 216/362/108 201/363/117 +f 187/352/113 202/364/118 203/365/119 +f 193/343/120 210/366/111 194/353/121 +f 191/356/104 206/367/122 207/368/123 +f 193/343/120 208/369/105 209/370/124 +f 189/348/125 206/371/122 190/342/126 +f 197/354/127 214/372/128 198/345/129 +f 185/350/116 202/373/118 186/347/130 +f 188/341/115 205/374/131 189/348/125 +f 196/344/132 213/375/133 197/354/127 +f 199/351/107 214/376/128 215/377/134 +f 195/346/110 212/378/135 196/344/132 +f 212/379/135 217/380/136 213/375/133 +f 214/376/128 217/381/136 215/377/134 +f 207/382/123 217/383/136 208/357/105 +f 215/384/134 217/385/136 216/358/108 +f 210/359/111 217/386/136 211/360/112 +f 203/387/119 217/388/136 204/361/114 +f 216/362/108 217/389/136 201/363/117 +f 202/364/118 217/390/136 203/365/119 +f 209/391/124 217/392/136 210/366/111 +f 206/367/122 217/393/136 207/368/123 +f 208/369/105 217/394/136 209/370/124 +f 205/395/131 217/396/136 206/371/122 +f 213/397/133 217/398/136 214/372/128 +f 201/399/117 217/400/136 202/373/118 +f 204/401/114 217/402/136 205/374/131 +f 211/403/112 217/404/136 212/378/135 +f 167/308/72 168/405/73 169/309/73 +f 161/311/74 162/406/75 175/312/75 +f 183/314/76 154/407/76 155/315/77 +f 159/317/78 160/408/79 177/318/79 +f 153/320/80 154/409/76 183/314/76 +f 165/322/81 166/410/82 171/323/82 +f 177/318/79 160/411/79 161/325/74 +f 155/327/77 156/412/83 181/328/83 +f 174/329/84 163/413/84 164/330/85 +f 157/332/86 158/414/87 179/333/87 +f 179/333/87 158/415/87 159/335/78 +f 173/331/85 164/416/85 165/336/81 +f 169/309/73 168/417/73 153/337/80 +f 166/338/82 167/418/72 170/310/72 +f 175/312/75 162/419/75 163/339/84 +f 181/328/83 156/420/83 157/340/86 +f 171/323/88 187/352/88 188/341/89 +f 173/331/90 189/348/90 190/342/91 +f 176/326/92 192/421/92 193/343/93 +f 179/333/94 195/346/94 196/344/95 +f 181/328/96 197/354/96 198/345/97 +f 178/319/98 194/353/98 195/346/94 +f 169/309/99 185/350/99 186/347/100 +f 172/324/89 188/341/89 189/348/90 +f 175/312/101 191/356/101 192/349/92 +f 184/321/102 200/355/102 185/350/99 +f 182/316/97 198/345/97 199/351/103 +f 170/310/100 186/347/100 187/352/88 +f 177/318/93 193/343/93 194/353/98 +f 180/334/95 196/344/95 197/354/96 +f 183/314/103 199/351/103 200/355/102 +f 174/329/91 190/342/91 191/356/101 +f 191/356/104 207/382/123 208/357/105 +f 199/351/107 215/384/134 216/358/108 +f 195/346/110 194/353/121 210/359/111 +f 187/352/113 203/387/119 204/361/114 +f 185/350/116 200/355/109 216/362/108 +f 187/352/113 186/347/130 202/364/118 +f 193/343/120 209/391/124 210/366/111 +f 191/356/104 190/342/126 206/367/122 +f 193/343/120 192/421/106 208/369/105 +f 189/348/125 205/395/131 206/371/122 +f 197/354/127 213/397/133 214/372/128 +f 185/350/116 201/399/117 202/373/118 +f 188/341/115 204/401/114 205/374/131 +f 196/344/132 212/379/135 213/375/133 +f 199/351/107 198/345/129 214/376/128 +f 195/346/110 211/403/112 212/378/135 +o Barrel +v 0.000000 2.000000 8.000000 +v -0.382683 1.923880 8.000000 +v -0.707107 1.707107 8.000000 +v -0.923880 1.382683 8.000000 +v -1.000000 1.000000 8.000000 +v -0.923880 0.617316 8.000000 +v -0.707107 0.292893 8.000000 +v -0.382683 0.076120 8.000000 +v 0.000000 0.000000 8.000000 +v 0.382683 0.076120 8.000000 +v 0.707107 0.292893 8.000000 +v 0.923880 0.617316 8.000000 +v 1.000000 1.000000 8.000000 +v 0.923880 1.382684 8.000000 +v 0.707107 1.707107 8.000000 +v 0.382683 1.923880 8.000000 +v 0.000000 2.000000 0.500000 +v -0.382683 1.923880 0.500000 +v -0.707107 1.707107 0.500000 +v -0.923880 1.382683 0.500000 +v -1.000000 1.000000 0.500000 +v -0.923880 0.617316 0.500000 +v -0.707107 0.292893 0.500000 +v -0.382683 0.076120 0.500000 +v 0.000000 0.000000 0.500000 +v 0.382683 0.076120 0.500000 +v 0.707107 0.292893 0.500000 +v 0.923880 0.617316 0.500000 +v 1.000000 1.000000 0.500000 +v 0.923880 1.382684 0.500000 +v 0.707107 1.707107 0.500000 +v 0.382683 1.923880 0.500000 +v 0.287012 1.692910 0.500000 +v 0.530330 1.530330 0.500000 +v 0.692910 1.287013 0.500000 +v 0.750000 1.000000 0.500000 +v 0.692910 0.712987 0.500000 +v 0.530330 0.469670 0.500000 +v 0.287013 0.307090 0.500000 +v 0.000000 0.250000 0.500000 +v -0.287013 0.307090 0.500000 +v -0.530330 0.469670 0.500000 +v -0.692910 0.712987 0.500000 +v -0.750000 1.000000 0.500000 +v -0.692910 1.287013 0.500000 +v -0.530330 1.530330 0.500000 +v -0.287013 1.692910 0.500000 +v 0.000000 1.750000 0.500000 +v 0.000000 1.750000 8.000000 +v -0.287013 1.692910 8.000000 +v -0.530330 1.530330 8.000000 +v -0.692910 1.287013 8.000000 +v -0.750000 1.000000 8.000000 +v -0.692910 0.712987 8.000000 +v -0.530330 0.469670 8.000000 +v -0.287013 0.307090 8.000000 +v 0.000000 0.250000 8.000000 +v 0.287013 0.307090 8.000000 +v 0.530330 0.469670 8.000000 +v 0.692910 0.712987 8.000000 +v 0.750000 1.000000 8.000000 +v 0.692910 1.287013 8.000000 +v 0.530330 1.530330 8.000000 +v 0.287012 1.692910 8.000000 +vt 0.231343 0.468750 +vt 0.223881 0.507812 +vt 0.223881 0.468750 +vt 0.231343 0.093750 +vt 0.223881 0.046875 +vt 0.231343 0.046875 +vt 0.223881 0.421875 +vt 0.231343 0.421875 +vt 0.231343 -0.000000 +vt 0.223881 0.039062 +vt 0.223881 0.000000 +vt 0.223881 0.375000 +vt 0.231343 0.375000 +vt 0.231343 0.703125 +vt 0.223881 0.742188 +vt 0.223881 0.703125 +vt 0.223881 0.328125 +vt 0.231343 0.328125 +vt 0.231343 0.656250 +vt 0.223881 0.695312 +vt 0.223881 0.656250 +vt 0.223881 0.281250 +vt 0.231343 0.281250 +vt 0.231343 0.609375 +vt 0.223881 0.648438 +vt 0.223881 0.609375 +vt 0.223881 0.234375 +vt 0.231343 0.234375 +vt 0.231343 0.562500 +vt 0.223881 0.601562 +vt 0.223881 0.562500 +vt 0.231343 0.187500 +vt 0.223881 0.226562 +vt 0.223881 0.187500 +vt 0.223881 0.140625 +vt 0.231343 0.140625 +vt 0.223881 0.515625 +vt 0.231343 0.515625 +vt 0.223881 0.132812 +vt 0.223881 0.093750 +vt 0.223881 0.085938 +vt 0.223881 0.460938 +vt 0.223881 0.414062 +vt 0.231343 0.750000 +vt 0.223881 0.367188 +vt 0.223881 0.320312 +vt 0.223881 0.273438 +vt 0.223881 0.179688 +vt 0.223881 0.554688 +vt 0.000000 0.156250 +vt 0.223881 0.195312 +vt 0.000000 0.195312 +vt 0.000000 -0.000000 +vt 0.223881 0.039062 +vt 0.000000 0.039062 +vt 0.000000 0.507812 +vt 0.223881 0.546875 +vt 0.000000 0.546875 +vt 0.000000 0.351562 +vt 0.223881 0.390625 +vt 0.000000 0.390625 +vt 0.223881 0.234375 +vt 0.000000 0.234375 +vt 0.223881 0.078125 +vt 0.000000 0.078125 +vt 0.223881 0.585938 +vt 0.000000 0.585938 +vt 0.223881 0.429688 +vt 0.000000 0.429688 +vt 0.223881 0.273438 +vt 0.000000 0.273438 +vt 0.223881 0.117188 +vt 0.000000 0.117188 +vt 0.223881 0.625000 +vt 0.000000 0.625000 +vt 0.223881 0.468750 +vt 0.000000 0.468750 +vt 0.000000 0.312500 +vt 0.223881 0.351562 +vt 0.223881 0.507812 +vt 0.223881 0.156250 +vt 0.223881 0.312500 +vt 0.455224 0.046875 +vt 0.455224 0.468750 +vt 0.455224 0.093750 +vt 0.455224 0.515625 +vt 0.455224 0.140625 +vt 0.455224 0.562500 +vt 0.455224 0.187500 +vt 0.455224 0.609375 +vt 0.455224 0.234375 +vt 0.455224 0.656250 +vt 0.455224 0.281250 +vt 0.455224 0.703125 +vt 0.455224 0.375000 +vt 0.455224 0.328125 +vt 0.455224 -0.000000 +vt 0.455224 0.421875 +vt 0.223881 -0.000000 +vt 0.455224 0.750000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.9239 -0.3827 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.3827 0.9239 0.0000 +vn -0.9239 0.3827 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.3827 -0.9239 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.3827 0.9239 0.0000 +vn -0.9239 -0.3827 0.0000 +vn 0.3827 -0.9239 0.0000 +vn 0.9239 0.3827 0.0000 +vn -1.0000 -0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +s off +f 220/422/137 269/423/137 268/424/137 +f 228/425/137 275/426/137 227/427/137 +f 220/422/137 267/428/137 219/429/137 +f 226/430/137 275/431/137 274/432/137 +f 219/429/137 266/433/137 218/434/137 +f 225/435/137 274/436/137 273/437/137 +f 218/434/137 281/438/137 233/439/137 +f 224/440/137 273/441/137 272/442/137 +f 233/439/137 280/443/137 232/444/137 +f 223/445/137 272/446/137 271/447/137 +f 232/444/137 279/448/137 231/449/137 +f 222/450/137 271/451/137 270/452/137 +f 230/453/137 279/454/137 278/455/137 +f 230/453/137 277/456/137 229/457/137 +f 222/450/137 269/458/137 221/459/137 +f 228/425/137 277/460/137 276/461/137 +f 220/422/137 221/459/137 269/423/137 +f 228/425/137 276/462/137 275/426/137 +f 220/422/137 268/463/137 267/428/137 +f 226/430/137 227/427/137 275/431/137 +f 219/429/137 267/464/137 266/433/137 +f 225/435/137 226/465/137 274/436/137 +f 218/434/137 266/466/137 281/438/137 +f 224/440/137 225/435/137 273/441/137 +f 233/439/137 281/467/137 280/443/137 +f 223/445/137 224/440/137 272/446/137 +f 232/444/137 280/468/137 279/448/137 +f 222/450/137 223/445/137 271/451/137 +f 230/453/137 231/449/137 279/454/137 +f 230/453/137 278/469/137 277/456/137 +f 222/450/137 270/470/137 269/458/137 +f 228/425/137 229/457/137 277/460/137 +s 1 +f 270/471/138 262/472/139 269/473/139 +f 274/474/140 258/475/141 273/476/141 +f 277/477/142 255/478/143 276/479/143 +f 281/480/144 251/481/145 280/482/145 +f 269/473/139 263/483/146 268/484/146 +f 273/476/141 259/485/147 272/486/147 +f 276/479/143 256/487/148 275/488/148 +f 280/482/145 252/489/149 279/490/149 +f 268/484/146 264/491/150 267/492/150 +f 272/486/147 260/493/151 271/494/151 +f 275/488/148 257/495/140 274/496/140 +f 279/490/149 253/497/152 278/498/152 +f 266/499/153 250/500/144 281/480/144 +f 278/498/152 254/501/142 277/477/142 +f 271/494/151 261/502/138 270/471/138 +f 267/492/150 265/503/153 266/499/153 +f 243/504/150 228/425/146 227/427/150 +f 236/505/143 221/459/142 220/422/143 +f 244/506/146 229/457/139 228/425/146 +f 237/507/142 222/450/152 221/459/142 +f 245/508/139 230/453/138 229/457/139 +f 238/509/152 223/445/149 222/450/152 +f 246/510/138 231/449/151 230/453/138 +f 239/511/149 224/440/145 223/445/149 +f 247/512/151 232/444/147 231/449/151 +f 240/513/145 225/435/144 224/440/145 +f 248/514/147 233/439/141 232/444/147 +f 241/515/144 226/465/153 225/435/144 +f 234/516/140 219/429/148 218/434/140 +f 249/517/141 218/434/140 233/439/141 +f 242/518/153 227/427/150 226/430/153 +f 235/519/148 220/422/143 219/429/148 +f 270/471/138 261/502/138 262/472/139 +f 274/474/140 257/520/140 258/475/141 +f 277/477/142 254/501/142 255/478/143 +f 281/480/144 250/500/144 251/481/145 +f 269/473/139 262/472/139 263/483/146 +f 273/476/141 258/475/141 259/485/147 +f 276/479/143 255/478/143 256/487/148 +f 280/482/145 251/481/145 252/489/149 +f 268/484/146 263/483/146 264/491/150 +f 272/486/147 259/485/147 260/493/151 +f 275/488/148 256/487/148 257/495/140 +f 279/490/149 252/489/149 253/497/152 +f 266/499/153 265/503/153 250/500/144 +f 278/498/152 253/497/152 254/501/142 +f 271/494/151 260/493/151 261/502/138 +f 267/492/150 264/491/150 265/503/153 +f 243/504/150 244/506/146 228/425/146 +f 236/505/143 237/507/142 221/459/142 +f 244/506/146 245/508/139 229/457/139 +f 237/507/142 238/509/152 222/450/152 +f 245/508/139 246/510/138 230/453/138 +f 238/509/152 239/511/149 223/445/149 +f 246/510/138 247/512/151 231/449/151 +f 239/511/149 240/513/145 224/440/145 +f 247/512/151 248/514/147 232/444/147 +f 240/513/145 241/515/144 225/435/144 +f 248/514/147 249/517/141 233/439/141 +f 241/515/144 242/521/153 226/465/153 +f 234/516/140 235/519/148 219/429/148 +f 249/517/141 234/516/140 218/434/140 +f 242/518/153 243/504/150 227/427/150 +f 235/519/148 236/505/143 220/422/143 +o Cannon v 0.000000 2.000000 0.500000 v -0.382683 1.923880 0.500000 v -0.707107 1.707107 0.500000 @@ -81,22 +1524,6 @@ v 1.000000 1.000000 -4.000000 v 0.923880 1.382684 -4.000000 v 0.707107 1.707107 -4.000000 v 0.382683 1.923880 -4.000000 -v 0.382683 1.923880 -4.500000 -v 0.707107 1.707107 -4.500000 -v 0.923880 1.382684 -4.500000 -v 1.000000 1.000000 -4.500000 -v 0.923880 0.617316 -4.500000 -v 0.707107 0.292893 -4.500000 -v 0.382683 0.076120 -4.500000 -v 0.000000 0.000000 -4.500000 -v -0.382683 0.076120 -4.500000 -v -0.707107 0.292893 -4.500000 -v -0.923880 0.617316 -4.500000 -v -1.000000 1.000000 -4.500000 -v -0.923880 1.382683 -4.500000 -v -0.707107 1.707107 -4.500000 -v -0.382683 1.923880 -4.500000 -v 0.000000 2.000000 -4.500000 v 0.000000 2.000000 -3.500000 v -0.382683 1.923880 -3.500000 v -0.707107 1.707107 -3.500000 @@ -113,158 +1540,6 @@ v 1.000000 1.000000 -3.500000 v 0.923880 1.382684 -3.500000 v 0.707107 1.707107 -3.500000 v 0.382683 1.923880 -3.500000 -v -0.500000 0.000000 -6.000000 -v 0.500000 0.000000 -6.000000 -v -0.500000 0.000000 -7.000000 -v 0.500000 0.000000 -7.000000 -v -0.500000 -0.250000 -7.250000 -v 0.500000 -0.250000 -7.250000 -v -0.500000 -0.250000 -5.750000 -v 0.500000 -0.250000 -5.750000 -v 0.250000 0.125000 -7.187500 -v -0.250000 0.125000 -7.187500 -v 0.250000 0.125000 -5.812500 -v -0.250000 0.125000 -5.812500 -v -0.500000 -0.250000 -5.625000 -v 0.500000 -0.250000 -5.625000 -v -0.500000 0.125000 -5.625000 -v 0.500000 0.125000 -5.625000 -v 0.500000 -0.250000 -7.375000 -v -0.500000 -0.250000 -7.375000 -v 0.500000 0.125000 -7.375000 -v -0.500000 0.125000 -7.375000 -v 0.250000 0.375000 -5.812500 -v 0.250000 0.375000 -7.187500 -v -0.250000 0.375000 -7.187500 -v -0.250000 0.375000 -5.812500 -v 1.250000 0.750000 -4.375000 -v -1.250000 0.750000 -4.375000 -v 1.250000 1.250000 -4.375000 -v -1.250000 1.250000 -4.375000 -v -1.250000 1.250000 -4.125000 -v 1.250000 1.250000 -4.125000 -v -1.250000 0.750000 -4.125000 -v 1.250000 0.750000 -4.125000 -v 0.250000 2.250000 -4.125000 -v 0.250000 -0.250000 -4.125000 -v -0.250000 2.250000 -4.125000 -v -0.250000 -0.250000 -4.125000 -v -0.250000 -0.250000 -4.375000 -v -0.250000 2.250000 -4.375000 -v 0.250000 -0.250000 -4.375000 -v 0.250000 2.250000 -4.375000 -v -0.707107 2.060660 -4.125000 -v 1.060660 0.292893 -4.125000 -v -1.060660 1.707107 -4.125000 -v 0.707107 -0.060660 -4.125000 -v 0.707107 -0.060660 -4.375000 -v -1.060660 1.707107 -4.375000 -v 1.060660 0.292893 -4.375000 -v -0.707107 2.060660 -4.375000 -v 1.060660 1.707107 -4.375000 -v -0.707107 -0.060660 -4.375000 -v 0.707107 2.060660 -4.375000 -v -1.060660 0.292893 -4.375000 -v -1.060660 0.292893 -4.125000 -v 0.707107 2.060660 -4.125000 -v -0.707107 -0.060660 -4.125000 -v 1.060660 1.707107 -4.125000 -v 0.000000 2.000000 -4.500000 -v -0.382683 1.923880 -4.500000 -v -0.707107 1.707107 -4.500000 -v -0.923880 1.382683 -4.500000 -v -1.000000 1.000000 -4.500000 -v -0.923880 0.617316 -4.500000 -v -0.707107 0.292893 -4.500000 -v -0.382683 0.076120 -4.500000 -v 0.000000 0.000000 -4.500000 -v 0.382683 0.076120 -4.500000 -v 0.707107 0.292893 -4.500000 -v 0.923880 0.617316 -4.500000 -v 1.000000 1.000000 -4.500000 -v 0.923880 1.382684 -4.500000 -v 0.707107 1.707107 -4.500000 -v 0.382683 1.923880 -4.500000 -v 0.000000 1.750000 -5.500000 -v -0.287013 1.692910 -5.500000 -v -0.530330 1.530330 -5.500000 -v -0.692910 1.287013 -5.500000 -v -0.750000 1.000000 -5.500000 -v -0.692910 0.712987 -5.500000 -v -0.530330 0.469670 -5.500000 -v -0.287013 0.307090 -5.500000 -v 0.000000 0.250000 -5.500000 -v 0.287013 0.307090 -5.500000 -v 0.530330 0.469670 -5.500000 -v 0.692910 0.712987 -5.500000 -v 0.750000 1.000000 -5.500000 -v 0.692910 1.287013 -5.500000 -v 0.530330 1.530330 -5.500000 -v 0.287012 1.692910 -5.500000 -v 0.000000 1.750000 -7.500000 -v -0.287013 1.692910 -7.500000 -v -0.530330 1.530330 -7.500000 -v -0.692910 1.287013 -7.500000 -v -0.750000 1.000000 -7.500000 -v -0.692910 0.712987 -7.500000 -v -0.530330 0.469670 -7.500000 -v -0.287013 0.307090 -7.500000 -v 0.000000 0.250000 -7.500000 -v 0.287013 0.307090 -7.500000 -v 0.530330 0.469670 -7.500000 -v 0.692910 0.712987 -7.500000 -v 0.750000 1.000000 -7.500000 -v 0.692910 1.287013 -7.500000 -v 0.530330 1.530330 -7.500000 -v 0.287012 1.692910 -7.500000 -v 0.000000 1.500000 -8.000000 -v -0.191342 1.461940 -8.000000 -v -0.353553 1.353553 -8.000000 -v -0.461940 1.191342 -8.000000 -v -0.500000 1.000000 -8.000000 -v -0.461940 0.808658 -8.000000 -v -0.353553 0.646447 -8.000000 -v -0.191342 0.538060 -8.000000 -v 0.000000 0.500000 -8.000000 -v 0.191341 0.538060 -8.000000 -v 0.353553 0.646446 -8.000000 -v 0.461940 0.808658 -8.000000 -v 0.500000 1.000000 -8.000000 -v 0.461940 1.191342 -8.000000 -v 0.353553 1.353554 -8.000000 -v 0.191341 1.461940 -8.000000 -v 0.000000 2.000000 -3.500000 -v -0.382683 1.923880 -3.500000 -v -0.707107 1.707107 -3.500000 -v -0.923880 1.382683 -3.500000 -v -1.000000 1.000000 -3.500000 -v -0.923880 0.617316 -3.500000 -v -0.707107 0.292893 -3.500000 -v -0.382683 0.076120 -3.500000 -v 0.000000 0.000000 -3.500000 -v 0.382683 0.076120 -3.500000 -v 0.707107 0.292893 -3.500000 -v 0.923880 0.617316 -3.500000 -v 1.000000 1.000000 -3.500000 -v 0.923880 1.382684 -3.500000 -v 0.707107 1.707107 -3.500000 -v 0.382683 1.923880 -3.500000 -v 0.000000 1.562500 -3.500000 -v -0.215260 1.519682 -3.500000 -v -0.397748 1.397748 -3.500000 -v -0.519682 1.215260 -3.500000 -v -0.562500 1.000000 -3.500000 -v -0.519682 0.784740 -3.500000 -v -0.397748 0.602252 -3.500000 -v -0.215260 0.480318 -3.500000 -v 0.000000 0.437500 -3.500000 -v 0.215260 0.480318 -3.500000 -v 0.397747 0.602252 -3.500000 -v 0.519682 0.784740 -3.500000 -v 0.562500 1.000000 -3.500000 -v 0.519682 1.215260 -3.500000 -v 0.397747 1.397748 -3.500000 -v 0.215259 1.519682 -3.500000 v -0.250000 -0.375000 -2.000000 v 0.250000 -0.375000 -2.000000 v -0.250000 -0.375000 -3.000000 @@ -393,70 +1668,6 @@ v 1.375000 1.500000 -2.687500 v 1.375000 0.500000 -2.687500 v 2.625000 1.500000 -2.687500 v 2.625000 0.500000 -2.687500 -v 0.287012 1.692909 -3.250000 -v 0.530330 1.530331 -3.250000 -v 0.692910 1.287012 -3.250000 -v 0.750000 1.000000 -3.250000 -v 0.692910 0.712988 -3.250000 -v 0.530330 0.469669 -3.250000 -v 0.287013 0.307091 -3.250000 -v 0.000000 0.250000 -3.250000 -v -0.287013 0.307091 -3.250000 -v -0.530330 0.469669 -3.250000 -v -0.692910 0.712988 -3.250000 -v -0.750000 1.000000 -3.250000 -v -0.692910 1.287012 -3.250000 -v -0.530330 1.530331 -3.250000 -v -0.287013 1.692909 -3.250000 -v 0.000000 1.750000 -3.250000 -v 0.000000 2.000000 8.000000 -v -0.382683 1.923880 8.000000 -v -0.707107 1.707107 8.000000 -v -0.923880 1.382683 8.000000 -v -1.000000 1.000000 8.000000 -v -0.923880 0.617316 8.000000 -v -0.707107 0.292893 8.000000 -v -0.382683 0.076120 8.000000 -v 0.000000 0.000000 8.000000 -v 0.382683 0.076120 8.000000 -v 0.707107 0.292893 8.000000 -v 0.923880 0.617316 8.000000 -v 1.000000 1.000000 8.000000 -v 0.923880 1.382684 8.000000 -v 0.707107 1.707107 8.000000 -v 0.382683 1.923880 8.000000 -v 0.000000 2.000000 0.500000 -v -0.382683 1.923880 0.500000 -v -0.707107 1.707107 0.500000 -v -0.923880 1.382683 0.500000 -v -1.000000 1.000000 0.500000 -v -0.923880 0.617316 0.500000 -v -0.707107 0.292893 0.500000 -v -0.382683 0.076120 0.500000 -v 0.000000 0.000000 0.500000 -v 0.382683 0.076120 0.500000 -v 0.707107 0.292893 0.500000 -v 0.923880 0.617316 0.500000 -v 1.000000 1.000000 0.500000 -v 0.923880 1.382684 0.500000 -v 0.707107 1.707107 0.500000 -v 0.382683 1.923880 0.500000 -v 0.287012 1.692910 0.500000 -v 0.530330 1.530330 0.500000 -v 0.692910 1.287013 0.500000 -v 0.750000 1.000000 0.500000 -v 0.692910 0.712987 0.500000 -v 0.530330 0.469670 0.500000 -v 0.287013 0.307090 0.500000 -v 0.000000 0.250000 0.500000 -v -0.287013 0.307090 0.500000 -v -0.530330 0.469670 0.500000 -v -0.692910 0.712987 0.500000 -v -0.750000 1.000000 0.500000 -v -0.692910 1.287013 0.500000 -v -0.530330 1.530330 0.500000 -v -0.287013 1.692910 0.500000 -v 0.000000 1.750000 0.500000 v 1.500000 1.375000 -1.250000 v 1.500000 0.625000 -1.250000 v 1.500000 1.375000 -2.250000 @@ -585,22 +1796,6 @@ v 0.000000 2.312500 -2.000000 v 0.478354 2.154849 -2.000000 v 0.883883 1.883883 -2.000000 v 0.000000 2.312500 -1.875000 -v 0.000000 1.750000 8.000000 -v -0.287013 1.692910 8.000000 -v -0.530330 1.530330 8.000000 -v -0.692910 1.287013 8.000000 -v -0.750000 1.000000 8.000000 -v -0.692910 0.712987 8.000000 -v -0.530330 0.469670 8.000000 -v -0.287013 0.307090 8.000000 -v 0.000000 0.250000 8.000000 -v 0.287013 0.307090 8.000000 -v 0.530330 0.469670 8.000000 -v 0.692910 0.712987 8.000000 -v 0.750000 1.000000 8.000000 -v 0.692910 1.287013 8.000000 -v 0.530330 1.530330 8.000000 -v 0.287012 1.692910 8.000000 v 0.000000 1.750000 -3.500000 v -0.287013 1.692910 -3.500000 v -0.530330 1.530330 -3.500000 @@ -617,39 +1812,6 @@ v 0.750000 1.000000 -3.500000 v 0.692910 1.287013 -3.500000 v 0.530330 1.530330 -3.500000 v 0.287012 1.692910 -3.500000 -v 0.287012 1.692909 -1.000000 -v 0.530330 1.530331 -1.000000 -v 0.692910 1.287012 -1.000000 -v 0.750000 1.000000 -1.000000 -v 0.692910 0.712988 -1.000000 -v 0.530330 0.469669 -1.000000 -v 0.287013 0.307091 -1.000000 -v 0.000000 0.250000 -1.000000 -v -0.287013 0.307091 -1.000000 -v -0.530330 0.469669 -1.000000 -v -0.692910 0.712988 -1.000000 -v -0.750000 1.000000 -1.000000 -v -0.692910 1.287012 -1.000000 -v -0.530330 1.530331 -1.000000 -v -0.287013 1.692909 -1.000000 -v 0.000000 1.750000 -1.000000 -v 0.179382 1.433068 0.000000 -v 0.331456 1.331457 0.000000 -v 0.433069 1.179382 0.000000 -v 0.468750 1.000000 0.000000 -v 0.433069 0.820618 0.000000 -v 0.331456 0.668543 0.000000 -v 0.179383 0.566932 0.000000 -v 0.000000 0.531250 0.000000 -v -0.179383 0.566932 0.000000 -v -0.331456 0.668543 0.000000 -v -0.433069 0.820618 0.000000 -v -0.468750 1.000000 0.000000 -v -0.433069 1.179382 0.000000 -v -0.331456 1.331457 0.000000 -v -0.179383 1.433068 0.000000 -v 0.000000 1.468750 0.000000 -v 0.000000 1.000000 0.500000 vt 0.455224 0.320312 vt 0.462687 0.375000 vt 0.455224 0.367188 @@ -727,96 +1889,6 @@ vt 0.597015 0.125000 vt 0.604478 0.179688 vt 0.597015 0.187500 vt 0.604478 0.195312 -vt 0.668136 0.865446 -vt 0.629147 0.797819 -vt 0.645297 0.634554 -vt 0.705005 0.634623 -vt 0.743971 0.702209 -vt 0.727831 0.865378 -vt 0.085821 0.796875 -vt 0.115672 0.671875 -vt 0.115672 0.796875 -vt 0.078358 0.796875 -vt 0.085821 0.671875 -vt 0.123134 0.671875 -vt 0.022388 0.656250 -vt 0.063433 0.671875 -vt 0.011194 0.671875 -vt 0.011194 0.796875 -vt 0.014925 0.843750 -vt 0.022388 0.812500 -vt 0.078358 0.625000 -vt 0.063433 0.656250 -vt 0.063433 0.625000 -vt 0.000000 0.796875 -vt 0.000000 0.671875 -vt 0.126866 0.796875 -vt 0.123134 0.796875 -vt 0.175373 0.625000 -vt 0.134328 0.656250 -vt 0.134328 0.625000 -vt 0.119403 0.625000 -vt 0.078358 0.656250 -vt 0.063433 0.796875 -vt 0.074627 0.671875 -vt 0.074627 0.796875 -vt 0.078358 0.671875 -vt 0.119403 0.656250 -vt 0.126866 0.765625 -vt 0.134328 0.828125 -vt 0.126866 0.828125 -vt 0.216418 0.828125 -vt 0.208955 0.765625 -vt 0.216418 0.765625 -vt 0.134328 0.671875 -vt 0.208955 0.734375 -vt 0.134328 0.734375 -vt 0.208955 0.765625 -vt 0.134328 0.828125 -vt 0.134328 0.765625 -vt 0.134328 0.859375 -vt 0.208955 0.828125 -vt 0.208955 0.859375 -vt 0.216418 0.828125 -vt 0.216418 0.765625 -vt 0.126866 0.765625 -vt 0.126866 0.828125 -vt 0.134328 0.859375 -vt 0.208955 0.828125 -vt 0.208955 0.859375 -vt 0.208955 0.734375 -vt 0.134328 0.765625 -vt 0.134328 0.734375 -vt 0.134328 0.671875 -vt 0.126866 0.765625 -vt 0.134328 0.828125 -vt 0.126866 0.828125 -vt 0.216418 0.828125 -vt 0.208955 0.765625 -vt 0.216418 0.765625 -vt 0.134328 0.859375 -vt 0.208955 0.828125 -vt 0.208955 0.859375 -vt 0.208955 0.734375 -vt 0.134328 0.765625 -vt 0.134328 0.734375 -vt 0.134328 0.671875 -vt 0.134328 0.671875 -vt 0.208955 0.734375 -vt 0.134328 0.734375 -vt 0.134328 0.765625 -vt 0.208955 0.828125 -vt 0.134328 0.828125 -vt 0.134328 0.859375 -vt 0.208955 0.859375 -vt 0.216418 0.828125 -vt 0.208955 0.765625 -vt 0.216418 0.765625 -vt 0.126866 0.765625 -vt 0.126866 0.828125 -vt 0.810345 0.643319 -vt 0.831446 0.643319 -vt 0.831446 0.731681 vt 0.626866 0.421875 vt 0.619403 0.468750 vt 0.619403 0.421875 @@ -969,46 +2041,6 @@ vt 0.871269 0.812500 vt 0.865672 0.929688 vt 0.865672 0.820312 vt 0.794776 0.914062 -vt 0.231343 0.468750 -vt 0.223881 0.507812 -vt 0.223881 0.468750 -vt 0.231343 0.093750 -vt 0.223881 0.046875 -vt 0.231343 0.046875 -vt 0.223881 0.421875 -vt 0.231343 0.421875 -vt 0.231343 -0.000000 -vt 0.223881 0.039062 -vt 0.223881 0.000000 -vt 0.223881 0.375000 -vt 0.231343 0.375000 -vt 0.231343 0.703125 -vt 0.223881 0.742188 -vt 0.223881 0.703125 -vt 0.223881 0.328125 -vt 0.231343 0.328125 -vt 0.231343 0.656250 -vt 0.223881 0.695312 -vt 0.223881 0.656250 -vt 0.223881 0.281250 -vt 0.231343 0.281250 -vt 0.231343 0.609375 -vt 0.223881 0.648438 -vt 0.223881 0.609375 -vt 0.223881 0.234375 -vt 0.231343 0.234375 -vt 0.231343 0.562500 -vt 0.223881 0.601562 -vt 0.223881 0.562500 -vt 0.231343 0.187500 -vt 0.223881 0.226562 -vt 0.223881 0.187500 -vt 0.223881 0.140625 -vt 0.231343 0.140625 -vt 0.223881 0.515625 -vt 0.231343 0.515625 -vt 0.223881 0.132812 -vt 0.223881 0.093750 vt 0.313433 0.796875 vt 0.343284 0.890625 vt 0.313433 0.890625 @@ -1104,14 +2136,6 @@ vt 0.044776 0.875000 vt 0.074627 0.843750 vt 0.059701 0.851562 vt 0.059701 0.843750 -vt 0.014925 0.625000 -vt 0.059701 0.625000 -vt 0.063433 0.625000 -vt 0.059701 0.843750 -vt 0.052239 0.812500 -vt 0.864481 0.745016 -vt 0.840742 0.745016 -vt 0.840743 0.645609 vt 0.044776 0.851562 vt 0.029851 0.843750 vt 0.044776 0.843750 @@ -1144,53 +2168,6 @@ vt 0.604478 0.054688 vt 0.604478 0.117188 vt 0.604478 0.132812 vt 0.604478 0.242188 -vt 0.656716 0.874957 -vt 0.645297 0.865445 -vt 0.635616 0.838358 -vt 0.626876 0.750000 -vt 0.629147 0.702181 -vt 0.635616 0.661642 -vt 0.656716 0.625043 -vt 0.668136 0.634554 -vt 0.677817 0.661642 -vt 0.684285 0.702181 -vt 0.686557 0.750000 -vt 0.684285 0.797819 -vt 0.677817 0.838358 -vt 0.716418 0.874884 -vt 0.705005 0.865378 -vt 0.695330 0.838306 -vt 0.688865 0.797791 -vt 0.686595 0.750000 -vt 0.688865 0.702209 -vt 0.695330 0.661694 -vt 0.716418 0.625117 -vt 0.727831 0.634623 -vt 0.737506 0.661694 -vt 0.746241 0.750000 -vt 0.743971 0.797791 -vt 0.737506 0.838306 -vt 0.052239 0.656250 -vt 0.011194 0.843750 -vt 0.126866 0.671875 -vt 0.175373 0.656250 -vt 0.208955 0.671875 -vt 0.208955 0.671875 -vt 0.208955 0.671875 -vt 0.208955 0.671875 -vt 0.826605 0.745225 -vt 0.820895 0.749981 -vt 0.815185 0.745225 -vt 0.810345 0.731681 -vt 0.807110 0.711411 -vt 0.805975 0.687500 -vt 0.807110 0.663589 -vt 0.815185 0.629775 -vt 0.820895 0.625019 -vt 0.826605 0.629775 -vt 0.834680 0.663589 -vt 0.835816 0.687500 -vt 0.834680 0.711411 vt 0.626866 0.460938 vt 0.626866 0.328125 vt 0.626866 0.273438 @@ -1239,15 +2216,6 @@ vt 0.152985 0.882812 vt 0.792910 0.953125 vt 0.828358 0.835938 vt 0.828358 0.914062 -vt 0.223881 0.085938 -vt 0.223881 0.460938 -vt 0.223881 0.414062 -vt 0.231343 0.750000 -vt 0.223881 0.367188 -vt 0.223881 0.320312 -vt 0.223881 0.273438 -vt 0.223881 0.179688 -vt 0.223881 0.554688 vt 0.354478 0.796875 vt 0.302239 0.890625 vt 0.313433 0.750000 @@ -1284,175 +2252,7 @@ vt 0.059701 0.875000 vt 0.059701 0.875000 vt 0.014925 0.851562 vt 0.074627 0.851562 -vt 0.011194 0.625000 -vt 0.063433 0.843750 -vt 0.846188 0.630372 -vt 0.852612 0.625022 -vt 0.859036 0.630372 -vt 0.864481 0.645610 -vt 0.868120 0.668414 -vt 0.869398 0.695313 -vt 0.868120 0.722212 -vt 0.859036 0.760253 -vt 0.852612 0.765604 -vt 0.846188 0.760253 -vt 0.837104 0.722212 -vt 0.835826 0.695313 -vt 0.837104 0.668414 vt 0.014925 0.851562 -vt 0.000000 0.156250 -vt 0.223881 0.195312 -vt 0.000000 0.195312 -vt 0.000000 -0.000000 -vt 0.223881 0.039062 -vt 0.000000 0.039062 -vt 0.000000 0.507812 -vt 0.223881 0.546875 -vt 0.000000 0.546875 -vt 0.000000 0.351562 -vt 0.223881 0.390625 -vt 0.000000 0.390625 -vt 0.223881 0.234375 -vt 0.000000 0.234375 -vt 0.223881 0.078125 -vt 0.000000 0.078125 -vt 0.223881 0.585938 -vt 0.000000 0.585938 -vt 0.223881 0.429688 -vt 0.000000 0.429688 -vt 0.223881 0.273438 -vt 0.000000 0.273438 -vt 0.223881 0.117188 -vt 0.000000 0.117188 -vt 0.223881 0.625000 -vt 0.000000 0.625000 -vt 0.223881 0.468750 -vt 0.000000 0.468750 -vt 0.000000 0.312500 -vt 0.223881 0.351562 -vt 0.223881 0.507812 -vt 0.223881 0.156250 -vt 0.223881 0.312500 -vt 0.776119 0.562500 -vt 0.746269 0.515625 -vt 0.776119 0.515625 -vt 0.776119 0.187500 -vt 0.746269 0.140625 -vt 0.776119 0.140625 -vt 0.776119 0.609375 -vt 0.746269 0.562500 -vt 0.776119 0.234375 -vt 0.746269 0.187500 -vt 0.776119 0.656250 -vt 0.746269 0.609375 -vt 0.776119 0.281250 -vt 0.746269 0.234375 -vt 0.776119 0.703125 -vt 0.746269 0.656250 -vt 0.776119 0.328125 -vt 0.746269 0.281250 -vt 0.776119 0.750000 -vt 0.746269 0.703125 -vt 0.776119 0.421875 -vt 0.746269 0.375000 -vt 0.776119 0.375000 -vt 0.746269 0.328125 -vt 0.776119 0.046875 -vt 0.746269 -0.000000 -vt 0.776119 -0.000000 -vt 0.776119 0.468750 -vt 0.746269 0.421875 -vt 0.776119 0.093750 -vt 0.746269 0.046875 -vt 0.746269 0.468750 -vt 0.746269 0.093750 -vt 0.776119 0.281250 -vt 0.805970 0.234375 -vt 0.805970 0.273438 -vt 0.776119 0.656250 -vt 0.805970 0.695312 -vt 0.776119 0.703125 -vt 0.805970 0.320312 -vt 0.776119 0.328125 -vt 0.805970 0.742188 -vt 0.776119 0.750000 -vt 0.776119 0.421875 -vt 0.805970 0.375000 -vt 0.805970 0.414062 -vt 0.805970 0.367188 -vt 0.776119 0.375000 -vt 0.776119 0.046875 -vt 0.805970 -0.000000 -vt 0.805970 0.039062 -vt 0.776119 0.468750 -vt 0.805970 0.421875 -vt 0.805970 0.460938 -vt 0.805970 0.085938 -vt 0.776119 0.093750 -vt 0.776119 0.515625 -vt 0.805970 0.468750 -vt 0.805970 0.507812 -vt 0.805970 0.132812 -vt 0.776119 0.140625 -vt 0.805970 0.554688 -vt 0.776119 0.562500 -vt 0.805970 0.179688 -vt 0.776119 0.187500 -vt 0.776119 0.609375 -vt 0.805970 0.562500 -vt 0.805970 0.601562 -vt 0.776119 0.234375 -vt 0.805970 0.187500 -vt 0.805970 0.226562 -vt 0.805970 0.648438 -vt 0.805970 0.117188 -vt 0.865672 0.156250 -vt 0.805970 0.156250 -vt 0.805970 0.468750 -vt 0.865672 0.507812 -vt 0.805970 0.507812 -vt 0.865672 0.195312 -vt 0.805970 0.195312 -vt 0.865672 0.546875 -vt 0.805970 0.546875 -vt 0.865672 0.234375 -vt 0.805970 0.234375 -vt 0.865672 0.585938 -vt 0.805970 0.585938 -vt 0.865672 0.273438 -vt 0.805970 0.273438 -vt 0.865672 0.625000 -vt 0.805970 0.625000 -vt 0.805970 0.312500 -vt 0.865672 0.351562 -vt 0.805970 0.351562 -vt 0.865672 0.312500 -vt 0.865672 0.039062 -vt 0.865672 0.390625 -vt 0.805970 0.390625 -vt 0.865672 0.078125 -vt 0.805970 0.078125 -vt 0.865672 0.429688 -vt 0.805970 0.429688 -vt 0.865672 0.117188 -vt 0.865672 0.468750 -vt 0.880597 0.203125 -vt 0.880597 0.242188 -vt 0.880597 0.281250 -vt 0.880597 0.320312 -vt 0.880597 0.359375 -vt 0.880597 0.421875 -vt 0.880597 0.437500 -vt 0.880597 0.500000 -vt 0.880597 0.515625 -vt 0.880597 0.578125 -vt 0.880597 0.593750 -vt 0.865672 -0.000000 -vt 0.880597 0.031250 -vt 0.880597 0.070312 -vt 0.880597 0.085938 -vt 0.880597 0.125000 -vt 0.880597 0.187500 vt 0.604478 0.000000 vt 0.604478 0.046875 vt 0.604478 0.421875 @@ -1470,39 +2270,6 @@ vt 0.604478 0.703125 vt 0.604478 0.328125 vt 0.604478 0.750000 vt 0.604478 0.375000 -vt 1.000000 0.242188 -vt 0.992537 0.273438 -vt 0.992537 0.234375 -vt 1.000000 0.007812 -vt 0.992537 0.039062 -vt 0.992537 0.000000 -vt 0.992537 0.351562 -vt 1.000000 0.382812 -vt 0.992537 0.390625 -vt 1.000000 0.554688 -vt 0.992537 0.585938 -vt 0.992537 0.546875 -vt 1.000000 0.320312 -vt 0.992537 0.312500 -vt 1.000000 0.164062 -vt 0.992537 0.195312 -vt 0.992537 0.156250 -vt 1.000000 0.617188 -vt 0.992537 0.625000 -vt 1.000000 0.398438 -vt 0.992537 0.429688 -vt 0.992537 0.078125 -vt 1.000000 0.109375 -vt 0.992537 0.117188 -vt 1.000000 0.476562 -vt 0.992537 0.507812 -vt 0.992537 0.468750 -vt 1.000000 0.539062 -vt 1.000000 0.148438 -vt 1.000000 0.304688 -vt 1.000000 0.203125 -vt 1.000000 0.070312 -vt 1.000000 0.460938 vt 0.746269 0.773438 vt 0.753731 0.765625 vt 0.753731 0.773438 @@ -1544,22 +2311,6 @@ vt 0.789179 0.781250 vt 0.789179 0.796875 vt 0.789179 0.843750 vt 0.789179 0.875000 -vt 0.455224 0.046875 -vt 0.455224 0.468750 -vt 0.455224 0.093750 -vt 0.455224 0.515625 -vt 0.455224 0.140625 -vt 0.455224 0.562500 -vt 0.455224 0.187500 -vt 0.455224 0.609375 -vt 0.455224 0.234375 -vt 0.455224 0.656250 -vt 0.455224 0.281250 -vt 0.455224 0.703125 -vt 0.455224 0.375000 -vt 0.455224 0.328125 -vt 0.455224 -0.000000 -vt 0.455224 0.421875 vt 0.919776 0.695312 vt 0.919776 0.718750 vt 0.919776 0.671875 @@ -1627,117 +2378,8 @@ vt 0.746269 0.117188 vt 0.746269 0.507812 vt 0.746269 0.390625 vt 0.746269 0.585938 -vt 0.925373 0.156250 -vt 0.925373 0.078125 -vt 0.925373 0.585938 -vt 0.925373 0.468750 -vt 0.925373 0.390625 -vt 0.925373 0.507812 -vt 0.925373 0.234375 -vt 0.925373 0.117188 -vt 0.925373 0.000000 -vt 0.925373 0.273438 -vt 0.925373 0.351562 -vt 0.925373 0.195312 -vt 0.925373 0.546875 -vt 0.925373 0.429688 -vt 0.925373 0.312500 -vt 0.925373 0.039062 -vt 0.895522 0.007812 -vt 0.895522 0.320312 -vt 0.895522 0.539062 -vt 0.895522 0.515625 -vt 0.895522 0.164062 -vt 0.895522 0.304688 -vt 0.895522 0.281250 -vt 0.895522 0.226562 -vt 0.895522 0.203125 -vt 0.895522 0.554688 -vt 0.895522 0.070312 -vt 0.895522 0.046875 -vt 0.895522 0.617188 -vt 0.895522 0.593750 -vt 0.895522 0.085938 -vt 0.895522 0.398438 -vt 0.895522 0.242188 -vt 0.895522 0.125000 -vt 0.895522 0.437500 -vt 0.895522 0.382812 -vt 0.895522 0.359375 -vt 0.895522 0.476562 -vt 0.895522 0.460938 -vt 0.880597 0.445312 -vt 0.880597 0.367188 -vt 0.895522 0.031250 -vt 0.880597 0.015625 -vt 0.895522 0.343750 -vt 0.880597 0.328125 -vt 0.880597 0.523438 -vt 0.895522 0.187500 -vt 0.880597 0.171875 -vt 0.880597 0.289062 -vt 0.880597 0.210938 -vt 0.895522 0.578125 -vt 0.880597 0.562500 -vt 0.880597 0.054688 -vt 0.880597 0.601562 -vt 0.895522 0.109375 -vt 0.880597 0.093750 -vt 0.895522 0.421875 -vt 0.880597 0.406250 -vt 0.895522 0.265625 -vt 0.880597 0.250000 -vt 0.895522 0.148438 -vt 0.880597 0.132812 -vt 0.895522 0.500000 -vt 0.880597 0.484375 -vt 0.223881 -0.000000 -vt 0.746269 0.750000 -vt 0.805970 0.656250 -vt 0.805970 0.281250 -vt 0.805970 0.703125 -vt 0.805970 0.328125 -vt 0.776119 -0.000000 -vt 0.805970 0.046875 -vt 0.805970 0.093750 -vt 0.805970 0.515625 -vt 0.805970 0.140625 -vt 0.805970 0.609375 -vt 0.880597 0.226562 -vt 0.880597 0.265625 -vt 0.880597 0.304688 -vt 0.880597 0.343750 -vt 0.880597 0.382812 -vt 0.880597 0.398438 -vt 0.880597 0.460938 -vt 0.880597 0.476562 -vt 0.880597 0.539062 -vt 0.880597 0.554688 -vt 0.880597 0.617188 -vt 0.880597 0.007812 -vt 0.880597 0.046875 -vt 0.880597 0.109375 -vt 0.880597 0.148438 -vt 0.880597 0.164062 -vt 1.000000 0.265625 -vt 1.000000 0.031250 -vt 1.000000 0.359375 -vt 1.000000 0.578125 -vt 1.000000 0.343750 -vt 1.000000 0.187500 -vt 1.000000 0.593750 -vt 1.000000 0.421875 -vt 1.000000 0.085938 -vt 1.000000 0.500000 -vt 1.000000 0.515625 -vt 1.000000 0.125000 -vt 1.000000 0.281250 -vt 1.000000 0.226562 -vt 1.000000 0.046875 -vt 1.000000 0.437500 vt 0.753731 0.750000 vt 0.789179 0.750000 -vt 0.455224 0.750000 vt 0.919776 0.796875 vt 0.869403 0.781250 vt 0.869403 0.640625 @@ -1748,21 +2390,14 @@ vt 0.869403 0.664062 vt 0.869403 0.710938 vt 0.869403 0.734375 vt 0.746269 0.000000 -vt 0.925373 0.625000 vn 0.0000 0.0000 1.0000 vn 0.0000 0.0000 -1.0000 vn 0.0000 -1.0000 0.0000 -vn 0.0000 -0.7071 0.7071 -vn 0.0000 -0.7071 -0.7071 vn 1.0000 0.0000 0.0000 -vn 0.0000 1.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.7071 -0.7071 0.0000 -vn 0.7071 0.7071 0.0000 vn 0.0000 0.1414 -0.9899 vn 0.0000 -0.1414 0.9899 +vn 0.0000 1.0000 0.0000 vn 0.7035 -0.1005 0.7035 vn 0.7035 0.1005 -0.7035 vn -0.7035 0.1005 -0.7035 @@ -1773,62 +2408,18 @@ vn -0.5000 -0.8660 0.0000 vn 0.5000 0.8660 0.0000 vn -0.8660 0.5000 -0.0000 vn 0.0000 0.7071 -0.7071 -vn 0.9239 -0.3827 0.0000 -vn 0.3827 0.9239 0.0000 vn -0.9239 0.3827 0.0000 -vn -0.3827 -0.9239 0.0000 -vn -0.3827 0.9239 0.0000 +vn 0.9239 -0.3827 0.0000 vn -0.9239 -0.3827 0.0000 -vn 0.3827 -0.9239 0.0000 vn 0.9239 0.3827 0.0000 -vn 0.6860 0.6860 -0.2425 -vn 0.8963 0.3713 -0.2425 -vn -0.6860 -0.6860 -0.2425 -vn -0.3713 -0.8963 -0.2425 -vn 0.3713 0.8963 -0.2425 -vn -0.0000 -0.9701 -0.2425 -vn -0.3713 0.8963 -0.2425 -vn -0.0000 0.9701 -0.2425 -vn 0.3713 -0.8963 -0.2425 -vn -0.6860 0.6860 -0.2425 -vn 0.6860 -0.6860 -0.2425 -vn -0.8963 0.3713 -0.2425 -vn 0.8963 -0.3713 -0.2425 -vn -0.9701 -0.0000 -0.2425 -vn 0.9701 0.0000 -0.2425 -vn -0.8963 -0.3713 -0.2425 -vn 0.8263 0.3423 -0.4472 -vn 0.6325 0.6325 -0.4472 -vn 0.3423 0.8263 -0.4472 -vn -0.0000 0.8944 -0.4472 -vn -0.3423 0.8263 -0.4472 -vn -0.6325 0.6325 -0.4472 -vn -0.8263 0.3423 -0.4472 -vn -0.8944 -0.0000 -0.4472 -vn -0.8263 -0.3423 -0.4472 -vn -0.6325 -0.6325 -0.4472 -vn -0.3423 -0.8263 -0.4472 -vn -0.0000 -0.8944 -0.4472 -vn 0.3423 -0.8263 -0.4472 -vn 0.6325 -0.6325 -0.4472 -vn 0.8263 -0.3423 -0.4472 -vn 0.8944 -0.0000 -0.4472 -vn 0.5657 0.5657 -0.6000 -vn 0.3061 0.7391 -0.6000 -vn 0.0000 -0.8000 -0.6000 -vn 0.3061 -0.7391 -0.6000 -vn -0.3061 0.7391 -0.6000 -vn -0.5657 0.5657 -0.6000 -vn -0.5657 -0.5657 -0.6000 -vn -0.3061 -0.7391 -0.6000 -vn 0.0000 0.8000 -0.6000 -vn 0.8000 0.0000 -0.6000 -vn 0.7391 0.3061 -0.6000 -vn -0.7391 0.3061 -0.6000 -vn 0.5657 -0.5657 -0.6000 -vn 0.7391 -0.3061 -0.6000 -vn -0.8000 -0.0000 -0.6000 -vn -0.7391 -0.3061 -0.6000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.3827 -0.9239 0.0000 +vn 0.3827 0.9239 0.0000 +vn -0.3827 0.9239 0.0000 +vn 0.3827 -0.9239 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 vn 0.3536 0.6124 -0.7071 vn 0.5738 0.8140 0.0899 vn 0.1205 0.7727 -0.6233 @@ -1851,1071 +2442,563 @@ vn -0.1205 -0.7727 0.6233 vn -0.5738 -0.8140 -0.0899 vn 0.1951 0.9808 -0.0000 vn 0.9808 0.1951 0.0000 -vn 0.3684 -0.8894 0.2707 -vn 0.0000 -0.8777 0.4792 -vn 0.0000 -0.9627 0.2707 -vn -0.3684 0.8894 0.2707 -vn 0.0000 0.8777 0.4792 -vn 0.0000 0.9627 0.2707 -vn -0.8894 -0.3684 0.2707 -vn -0.6206 -0.6207 0.4792 -vn -0.8109 -0.3359 0.4792 -vn 0.8894 0.3684 0.2707 -vn 0.8777 0.0000 0.4792 -vn 0.9627 0.0000 0.2707 -vn 0.3684 0.8894 0.2707 -vn 0.3359 0.8109 0.4792 -vn 0.6206 0.6207 0.4792 -vn 0.8109 0.3359 0.4792 -vn -0.3684 -0.8894 0.2707 -vn -0.6807 -0.6807 0.2707 -vn 0.6206 -0.6207 0.4792 -vn 0.3359 -0.8109 0.4792 -vn -0.3359 -0.8109 0.4792 -vn 0.8894 -0.3684 0.2707 -vn 0.6807 -0.6807 0.2707 -vn -0.8894 0.3684 0.2707 -vn -0.6206 0.6207 0.4792 -vn -0.6807 0.6807 0.2707 -vn 0.6807 0.6807 0.2707 -vn 0.8109 -0.3359 0.4792 -vn -0.9627 -0.0000 0.2707 -vn -0.8109 0.3359 0.4792 -vn -0.3359 0.8109 0.4792 -vn -0.8777 -0.0000 0.4792 s off -f 14/1/1 47/2/1 15/3/1 -f 15/4/1 48/5/1 16/6/1 -f 48/5/1 1/7/1 16/8/1 -f 33/9/1 2/10/1 1/11/1 -f 34/12/1 3/13/1 2/14/1 -f 35/15/1 4/16/1 3/17/1 -f 4/18/1 37/19/1 5/20/1 -f 37/19/1 6/21/1 5/22/1 -f 6/23/1 39/24/1 7/25/1 -f 39/24/1 8/26/1 7/27/1 -f 8/28/1 41/29/1 9/30/1 -f 9/31/1 42/32/1 10/33/1 -f 42/32/1 11/34/1 10/35/1 -f 43/36/1 12/37/1 11/38/1 -f 44/39/1 13/40/1 12/41/1 -f 45/42/1 14/43/1 13/44/1 -f 77/45/2 62/46/2 61/47/2 -f 78/48/2 63/49/2 62/46/2 -f 79/50/2 64/51/2 63/49/2 -f 64/51/2 65/52/2 49/53/2 -f 49/53/2 66/54/2 50/55/2 -f 66/56/2 51/57/2 50/55/2 -f 67/58/2 52/59/2 51/57/2 -f 68/60/2 53/61/2 52/59/2 -f 69/62/2 54/63/2 53/61/2 -f 70/64/2 55/65/2 54/63/2 -f 71/66/2 56/67/2 55/65/2 -f 72/68/2 57/69/2 56/67/2 -f 73/70/2 58/71/2 57/72/2 -f 74/73/2 59/74/2 58/71/2 -f 59/74/2 76/75/2 60/76/2 -f 76/77/2 61/47/2 60/76/2 -f 112/78/1 100/79/1 104/80/1 -f 87/81/2 91/82/2 95/83/2 -f 115/84/3 114/85/3 113/86/3 -f 117/87/4 116/88/4 115/84/4 -f 120/89/5 113/86/5 114/85/5 -f 114/90/6 131/91/6 128/92/6 -f 131/91/7 127/93/7 128/92/7 -f 119/94/8 127/93/8 113/95/8 -f 123/96/1 136/97/1 124/98/1 -f 128/92/1 125/99/1 126/100/1 -f 120/89/3 125/101/3 119/102/3 -f 124/103/8 135/104/8 122/105/8 -f 121/106/6 133/107/6 123/96/6 -f 132/108/2 129/109/2 130/110/2 -f 117/87/3 129/109/3 118/111/3 -f 122/105/2 134/112/2 121/106/2 -f 145/113/7 150/114/7 147/115/7 -f 148/116/3 151/117/3 146/118/3 -f 142/119/1 143/120/1 144/121/1 -f 138/122/2 139/123/2 137/124/2 -f 143/120/3 137/124/3 144/121/3 -f 142/125/7 140/126/7 141/127/7 -f 141/128/8 138/122/8 143/129/8 -f 144/130/6 139/123/6 142/131/6 -f 147/132/8 149/133/8 148/134/8 -f 146/135/6 152/136/6 145/137/6 -f 151/117/2 150/114/2 152/136/2 -f 147/138/1 146/135/1 145/137/1 -f 153/139/9 158/140/9 155/141/9 -f 156/142/10 159/143/10 154/144/10 -f 155/145/11 157/146/11 156/147/11 -f 154/148/12 160/149/12 153/150/12 -f 159/143/2 158/140/2 160/149/2 -f 155/151/1 154/148/1 153/150/1 -f 166/152/1 167/153/1 168/154/1 -f 161/155/2 164/156/2 163/157/2 -f 167/153/10 161/155/10 168/154/10 -f 166/158/9 164/156/9 165/159/9 -f 165/160/11 162/161/11 167/162/11 -f 168/163/12 163/157/12 166/164/12 -f 227/165/2 223/166/2 219/167/2 -f 602/168/2 235/169/2 234/170/2 -f 248/171/2 601/172/2 233/173/2 -f 614/174/2 247/175/2 246/176/2 -f 612/177/2 245/178/2 244/179/2 -f 610/180/2 243/181/2 242/182/2 -f 608/183/2 241/184/2 240/185/2 -f 606/186/2 239/187/2 238/188/2 -f 604/189/2 237/190/2 236/191/2 -f 241/192/2 610/193/2 242/182/2 -f 239/187/2 608/194/2 240/185/2 -f 237/190/2 606/195/2 238/188/2 -f 235/169/2 604/196/2 236/191/2 -f 233/173/2 602/197/2 234/170/2 -f 615/198/2 248/171/2 247/175/2 -f 245/178/2 614/199/2 246/176/2 -f 243/181/2 612/200/2 244/179/2 -f 267/201/3 266/202/3 265/203/3 -f 267/201/2 272/204/2 268/205/2 -f 266/202/1 269/206/1 265/203/1 -f 268/205/6 270/207/6 266/202/6 -f 265/203/8 271/208/8 267/201/8 -f 275/209/3 273/210/3 274/211/3 -f 288/212/13 290/213/13 285/214/13 -f 282/215/14 294/216/14 283/217/14 -f 279/218/7 278/219/7 280/220/7 -f 287/221/6 293/222/6 296/223/6 -f 294/216/15 284/224/15 283/217/15 -f 288/212/16 296/223/16 295/225/16 -f 285/214/17 289/226/17 286/227/17 -f 291/228/18 281/229/18 292/230/18 -f 286/227/8 292/230/8 281/229/8 -f 278/219/8 274/231/8 280/220/8 -f 277/232/2 275/233/2 278/219/2 -f 279/218/6 276/234/6 277/232/6 -f 280/220/1 273/235/1 279/218/1 -f 299/236/14 298/237/14 297/238/14 -f 302/239/13 304/240/13 303/241/13 -f 299/242/8 303/241/8 304/240/8 -f 307/243/19 306/244/19 305/245/19 -f 300/246/6 302/239/6 298/237/6 -f 305/247/8 312/248/8 307/243/8 -f 314/249/20 315/250/20 313/251/20 -f 308/252/6 309/253/6 306/254/6 -f 307/243/3 311/255/3 308/252/3 -f 314/249/21 320/256/21 316/257/21 -f 315/250/2 320/258/2 317/259/2 -f 313/251/1 319/260/1 314/249/1 -f 315/250/22 318/261/22 313/251/22 -f 350/262/23 359/263/23 358/264/23 -f 348/265/23 357/266/23 356/267/23 -f 346/268/23 355/269/23 354/270/23 -f 351/271/23 360/272/23 359/263/23 -f 350/273/23 357/274/23 349/275/23 -f 348/276/23 355/269/23 347/277/23 -f 346/278/23 353/279/23 345/280/23 -f 352/281/23 353/279/23 360/272/23 -f 365/282/20 367/283/20 361/284/20 -f 370/285/6 371/286/6 369/287/6 -f 386/288/8 390/289/8 389/290/8 -f 369/287/1 375/291/1 370/285/1 -f 370/285/3 376/292/3 372/293/3 -f 371/286/7 374/294/7 369/287/7 -f 372/293/2 373/295/2 371/286/2 -f 392/296/6 388/297/6 391/298/6 -f 389/299/7 388/297/7 386/288/7 -f 380/300/7 383/301/7 384/302/7 -f 379/303/6 378/304/6 380/305/6 -f 385/306/3 392/307/3 390/308/3 -f 380/300/2 386/288/2 379/309/2 -f 381/310/2 387/311/2 384/302/2 -f 379/309/2 388/297/2 381/310/2 -f 384/302/2 385/306/2 380/300/2 -f 377/312/1 390/289/1 378/304/1 -f 383/313/1 391/314/1 382/315/1 -f 382/315/1 389/290/1 377/312/1 -f 378/304/1 392/316/1 383/313/1 -f 383/313/8 381/317/8 384/318/8 -f 382/319/3 379/309/3 381/310/3 -f 411/320/1 588/321/1 587/322/1 -f 419/323/1 594/324/1 418/325/1 -f 411/320/1 586/326/1 410/327/1 -f 417/328/1 594/329/1 593/330/1 -f 410/327/1 585/331/1 409/332/1 -f 416/333/1 593/334/1 592/335/1 -f 409/332/1 600/336/1 424/337/1 -f 415/338/1 592/339/1 591/340/1 -f 424/337/1 599/341/1 423/342/1 -f 414/343/1 591/344/1 590/345/1 -f 423/342/1 598/346/1 422/347/1 -f 413/348/1 590/349/1 589/350/1 -f 421/351/1 598/352/1 597/353/1 -f 421/351/1 596/354/1 420/355/1 -f 413/348/1 588/356/1 412/357/1 -f 419/323/1 596/358/1 595/359/1 -f 458/360/6 459/361/6 457/362/6 -f 472/363/6 466/364/6 468/365/6 -f 460/366/2 461/367/2 459/361/2 -f 457/362/1 463/368/1 458/360/1 -f 458/360/3 464/369/3 460/366/3 -f 459/361/7 462/370/7 457/362/7 -f 469/371/8 467/372/8 465/373/8 -f 471/374/7 468/365/7 467/372/7 -f 470/375/3 465/376/3 466/364/3 -f 480/377/6 474/378/6 476/379/6 -f 477/380/8 475/381/8 473/382/8 -f 479/383/7 476/379/7 475/381/7 -f 478/384/3 473/385/3 474/378/3 -f 488/386/6 482/387/6 484/388/6 -f 485/389/8 483/390/8 481/391/8 -f 487/392/7 484/388/7 483/390/7 -f 486/393/3 481/394/3 482/387/3 -f 490/395/7 491/396/7 489/397/7 -f 492/398/24 493/399/24 491/396/24 -f 489/397/1 495/400/1 490/395/1 -f 492/398/6 495/401/6 496/402/6 -f 491/396/8 494/403/8 489/397/8 -f 512/404/1 535/405/1 536/406/1 -f 503/407/2 507/408/2 511/409/2 -f 525/410/1 527/411/1 521/412/1 -f 502/413/1 529/414/1 531/415/1 -f 508/416/1 533/417/1 534/418/1 -f 512/404/1 530/419/1 498/420/1 -f 498/420/1 529/421/1 500/422/1 -f 502/413/1 532/423/1 504/424/1 -f 508/416/1 535/425/1 510/426/1 -f 504/424/1 533/427/1 506/428/1 -f 541/429/1 540/430/1 539/431/1 -f 555/432/1 558/433/1 554/434/1 -f 551/435/2 562/436/2 550/437/2 -f 578/438/2 567/439/2 579/440/2 -f 559/441/1 552/442/1 553/443/1 -f 558/433/1 553/443/1 554/434/1 -f 560/444/1 556/445/1 552/442/1 -f 564/446/2 549/447/2 548/448/2 -f 563/449/2 547/450/2 564/446/2 -f 562/436/2 546/451/2 563/449/2 -f 574/452/1 571/453/1 575/454/1 -f 128/92/6 120/455/6 114/90/6 -f 131/91/6 118/456/6 129/457/6 -f 132/108/8 117/458/8 115/459/8 -f 127/93/8 115/459/8 113/95/8 -f 251/460/2 263/461/2 259/462/2 -f 570/463/1 577/464/1 576/465/1 -f 571/453/1 576/465/1 575/454/1 -f 569/466/1 573/467/1 577/464/1 -f 565/468/2 580/469/2 581/470/2 -f 566/471/2 582/472/2 565/468/2 -f 567/439/2 583/473/2 566/471/2 -f 14/1/1 46/474/1 47/2/1 -f 15/4/1 47/2/1 48/5/1 -f 48/5/1 33/9/1 1/7/1 -f 33/9/1 34/12/1 2/10/1 -f 34/12/1 35/15/1 3/13/1 -f 35/15/1 36/475/1 4/16/1 -f 4/18/1 36/475/1 37/19/1 -f 37/19/1 38/476/1 6/21/1 -f 6/23/1 38/476/1 39/24/1 -f 39/24/1 40/477/1 8/26/1 -f 8/28/1 40/477/1 41/29/1 -f 9/31/1 41/478/1 42/32/1 -f 42/32/1 43/36/1 11/34/1 -f 43/36/1 44/39/1 12/37/1 -f 44/39/1 45/42/1 13/40/1 -f 45/42/1 46/474/1 14/43/1 -f 77/45/2 78/479/2 62/46/2 -f 78/48/2 79/480/2 63/49/2 -f 79/50/2 80/481/2 64/51/2 -f 64/51/2 80/482/2 65/52/2 -f 49/53/2 65/483/2 66/54/2 -f 66/56/2 67/484/2 51/57/2 -f 67/58/2 68/485/2 52/59/2 -f 68/60/2 69/486/2 53/61/2 -f 69/62/2 70/487/2 54/63/2 -f 70/64/2 71/488/2 55/65/2 -f 71/66/2 72/489/2 56/67/2 -f 72/68/2 73/490/2 57/69/2 -f 73/70/2 74/491/2 58/71/2 -f 74/73/2 75/492/2 59/74/2 -f 59/74/2 75/493/2 76/75/2 -f 76/77/2 77/494/2 61/47/2 -f 112/78/1 97/495/1 98/496/1 -f 98/496/1 99/497/1 112/78/1 -f 99/497/1 100/79/1 112/78/1 -f 100/79/1 101/498/1 102/499/1 -f 102/499/1 103/500/1 100/79/1 -f 103/500/1 104/80/1 100/79/1 -f 104/80/1 105/501/1 106/502/1 -f 106/502/1 107/503/1 108/504/1 -f 108/504/1 109/505/1 112/78/1 -f 109/505/1 110/506/1 112/78/1 -f 110/506/1 111/507/1 112/78/1 -f 104/80/1 106/502/1 112/78/1 -f 106/502/1 108/504/1 112/78/1 -f 95/83/2 96/508/2 81/509/2 -f 81/509/2 82/510/2 83/511/2 -f 83/511/2 84/512/2 87/81/2 -f 84/512/2 85/513/2 87/81/2 -f 85/513/2 86/514/2 87/81/2 -f 87/81/2 88/515/2 89/516/2 -f 89/516/2 90/517/2 87/81/2 -f 90/517/2 91/82/2 87/81/2 -f 91/82/2 92/518/2 93/519/2 -f 93/519/2 94/520/2 91/82/2 -f 94/520/2 95/83/2 91/82/2 -f 95/83/2 81/509/2 87/81/2 -f 81/509/2 83/511/2 87/81/2 -f 115/84/3 116/88/3 114/85/3 -f 117/87/4 118/111/4 116/88/4 -f 120/89/5 119/102/5 113/86/5 -f 114/90/6 116/521/6 131/91/6 -f 131/91/7 132/108/7 127/93/7 -f 119/94/8 125/522/8 127/93/8 -f 123/96/1 133/107/1 136/97/1 -f 128/92/1 127/93/1 125/99/1 -f 120/89/3 126/523/3 125/101/3 -f 124/103/8 136/524/8 135/104/8 -f 121/106/6 134/112/6 133/107/6 -f 132/108/2 131/91/2 129/109/2 -f 117/87/3 130/110/3 129/109/3 -f 122/105/2 135/104/2 134/112/2 -f 145/113/7 152/136/7 150/114/7 -f 148/116/3 149/133/3 151/117/3 -f 142/119/1 141/525/1 143/120/1 -f 138/122/2 140/126/2 139/123/2 -f 143/120/3 138/122/3 137/124/3 -f 142/125/7 139/123/7 140/126/7 -f 141/128/8 140/126/8 138/122/8 -f 144/130/6 137/124/6 139/123/6 -f 147/132/8 150/114/8 149/133/8 -f 146/135/6 151/117/6 152/136/6 -f 151/117/2 149/133/2 150/114/2 -f 147/138/1 148/526/1 146/135/1 -f 153/139/9 160/149/9 158/140/9 -f 156/142/10 157/146/10 159/143/10 -f 155/145/11 158/140/11 157/146/11 -f 154/148/12 159/143/12 160/149/12 -f 159/143/2 157/146/2 158/140/2 -f 155/151/1 156/527/1 154/148/1 -f 166/152/1 165/528/1 167/153/1 -f 161/155/2 162/161/2 164/156/2 -f 167/153/10 162/161/10 161/155/10 -f 166/158/9 163/157/9 164/156/9 -f 165/160/11 164/156/11 162/161/11 -f 168/163/12 161/155/12 163/157/12 -f 219/167/2 218/529/2 217/530/2 -f 217/530/2 232/531/2 219/167/2 -f 232/531/2 231/532/2 219/167/2 -f 231/532/2 230/533/2 229/534/2 -f 229/534/2 228/535/2 227/165/2 -f 227/165/2 226/536/2 223/166/2 -f 226/536/2 225/537/2 223/166/2 -f 225/537/2 224/538/2 223/166/2 -f 223/166/2 222/539/2 221/540/2 -f 221/540/2 220/541/2 219/167/2 -f 231/532/2 229/534/2 219/167/2 -f 229/534/2 227/165/2 219/167/2 -f 223/166/2 221/540/2 219/167/2 -f 602/168/2 603/542/2 235/169/2 -f 248/171/2 616/543/2 601/172/2 -f 614/174/2 615/544/2 247/175/2 -f 612/177/2 613/545/2 245/178/2 -f 610/180/2 611/546/2 243/181/2 -f 608/183/2 609/547/2 241/184/2 -f 606/186/2 607/548/2 239/187/2 -f 604/189/2 605/549/2 237/190/2 -f 241/192/2 609/550/2 610/193/2 -f 239/187/2 607/551/2 608/194/2 -f 237/190/2 605/552/2 606/195/2 -f 235/169/2 603/553/2 604/196/2 -f 233/173/2 601/554/2 602/197/2 -f 615/198/2 616/555/2 248/171/2 -f 245/178/2 613/556/2 614/199/2 -f 243/181/2 611/557/2 612/200/2 -f 267/201/3 268/205/3 266/202/3 -f 267/201/2 271/558/2 272/204/2 -f 266/202/1 270/559/1 269/206/1 -f 268/205/6 272/560/6 270/207/6 -f 265/203/8 269/561/8 271/208/8 -f 275/209/3 276/234/3 273/210/3 -f 288/212/13 295/225/13 290/213/13 -f 282/215/14 291/562/14 294/216/14 -f 279/218/7 277/232/7 278/219/7 -f 287/221/6 284/224/6 293/222/6 -f 294/216/15 293/222/15 284/224/15 -f 288/212/16 287/221/16 296/223/16 -f 285/214/17 290/213/17 289/226/17 -f 291/228/18 282/563/18 281/229/18 -f 286/227/8 289/226/8 292/230/8 -f 278/219/8 275/564/8 274/231/8 -f 277/232/2 276/565/2 275/233/2 -f 279/218/6 273/210/6 276/234/6 -f 280/220/1 274/566/1 273/235/1 -f 299/236/14 300/246/14 298/237/14 -f 302/239/13 301/567/13 304/240/13 -f 299/242/8 297/568/8 303/241/8 -f 307/243/19 308/252/19 306/244/19 -f 300/246/6 301/567/6 302/239/6 -f 305/247/8 310/569/8 312/248/8 -f 314/249/20 316/257/20 315/250/20 -f 308/252/6 311/255/6 309/253/6 -f 307/243/3 312/248/3 311/255/3 -f 314/249/21 319/570/21 320/256/21 -f 315/250/2 316/257/2 320/258/2 -f 313/251/1 318/571/1 319/260/1 -f 315/250/22 317/572/22 318/261/22 -f 350/262/23 351/573/23 359/263/23 -f 348/265/23 349/574/23 357/266/23 -f 346/268/23 347/575/23 355/269/23 -f 351/271/23 352/576/23 360/272/23 -f 350/273/23 358/264/23 357/274/23 -f 348/276/23 356/267/23 355/269/23 -f 346/278/23 354/270/23 353/279/23 -f 352/281/23 345/577/23 353/279/23 -f 361/284/20 362/578/20 363/579/20 -f 363/579/20 364/580/20 365/282/20 -f 365/282/20 366/581/20 367/283/20 -f 367/283/20 368/582/20 361/284/20 -f 361/284/20 363/579/20 365/282/20 -f 370/285/6 372/293/6 371/286/6 -f 386/288/8 385/306/8 390/289/8 -f 369/287/1 374/583/1 375/291/1 -f 370/285/3 375/584/3 376/292/3 -f 371/286/7 373/585/7 374/294/7 -f 372/293/2 376/586/2 373/295/2 -f 392/296/6 387/311/6 388/297/6 -f 389/299/7 391/587/7 388/297/7 -f 380/300/7 378/588/7 383/301/7 -f 379/303/6 377/312/6 378/304/6 -f 385/306/3 387/311/3 392/307/3 -f 380/300/2 385/306/2 386/288/2 -f 381/310/2 388/297/2 387/311/2 -f 379/309/2 386/288/2 388/297/2 -f 384/302/2 387/311/2 385/306/2 -f 377/312/1 389/290/1 390/289/1 -f 383/313/1 392/316/1 391/314/1 -f 382/315/1 391/314/1 389/290/1 -f 378/304/1 390/289/1 392/316/1 -f 383/313/8 382/315/8 381/317/8 -f 382/319/3 377/589/3 379/309/3 -f 411/320/1 412/357/1 588/321/1 -f 419/323/1 595/590/1 594/324/1 -f 411/320/1 587/591/1 586/326/1 -f 417/328/1 418/325/1 594/329/1 -f 410/327/1 586/592/1 585/331/1 -f 416/333/1 417/593/1 593/334/1 -f 409/332/1 585/594/1 600/336/1 -f 415/338/1 416/333/1 592/339/1 -f 424/337/1 600/595/1 599/341/1 -f 414/343/1 415/338/1 591/344/1 -f 423/342/1 599/596/1 598/346/1 -f 413/348/1 414/343/1 590/349/1 -f 421/351/1 422/347/1 598/352/1 -f 421/351/1 597/597/1 596/354/1 -f 413/348/1 589/598/1 588/356/1 -f 419/323/1 420/355/1 596/358/1 -f 458/360/6 460/366/6 459/361/6 -f 472/363/6 470/375/6 466/364/6 -f 460/366/2 464/599/2 461/367/2 -f 457/362/1 462/600/1 463/368/1 -f 458/360/3 463/601/3 464/369/3 -f 459/361/7 461/602/7 462/370/7 -f 469/371/8 471/374/8 467/372/8 -f 471/374/7 472/363/7 468/365/7 -f 470/375/3 469/603/3 465/376/3 -f 480/377/6 478/384/6 474/378/6 -f 477/380/8 479/383/8 475/381/8 -f 479/383/7 480/377/7 476/379/7 -f 478/384/3 477/604/3 473/385/3 -f 488/386/6 486/393/6 482/387/6 -f 485/389/8 487/392/8 483/390/8 -f 487/392/7 488/386/7 484/388/7 -f 486/393/3 485/605/3 481/394/3 -f 490/395/7 492/398/7 491/396/7 -f 492/398/24 496/606/24 493/399/24 -f 489/397/1 494/607/1 495/400/1 -f 492/398/6 490/395/6 495/401/6 -f 491/396/8 493/608/8 494/403/8 -f 512/404/1 510/426/1 535/405/1 -f 511/409/2 497/609/2 499/610/2 -f 499/610/2 501/611/2 511/409/2 -f 501/611/2 503/407/2 511/409/2 -f 503/407/2 505/612/2 507/408/2 -f 507/408/2 509/613/2 511/409/2 -f 521/412/1 522/614/1 523/615/1 -f 523/615/1 524/616/1 525/410/1 -f 525/410/1 526/617/1 527/411/1 -f 527/411/1 528/618/1 521/412/1 -f 521/412/1 523/615/1 525/410/1 -f 502/413/1 500/422/1 529/414/1 -f 508/416/1 506/619/1 533/417/1 -f 512/404/1 536/620/1 530/419/1 -f 498/420/1 530/621/1 529/421/1 -f 502/413/1 531/622/1 532/423/1 -f 508/416/1 534/623/1 535/425/1 -f 504/424/1 532/624/1 533/427/1 -f 539/431/1 537/625/1 538/626/1 -f 538/626/1 544/627/1 539/431/1 -f 544/627/1 543/628/1 539/431/1 -f 543/628/1 542/629/1 539/431/1 -f 542/629/1 541/429/1 539/431/1 -f 555/432/1 557/630/1 558/433/1 -f 551/435/2 561/631/2 562/436/2 -f 578/438/2 568/632/2 567/439/2 -f 559/441/1 560/444/1 552/442/1 -f 558/433/1 559/441/1 553/443/1 -f 560/444/1 545/633/1 556/445/1 -f 564/446/2 547/450/2 549/447/2 -f 563/449/2 546/451/2 547/450/2 -f 562/436/2 561/631/2 546/451/2 -f 574/452/1 572/634/1 571/453/1 -f 128/92/6 126/635/6 120/455/6 -f 131/91/6 116/521/6 118/456/6 -f 132/108/8 130/636/8 117/458/8 -f 127/93/8 132/108/8 115/459/8 -f 259/462/2 258/637/2 257/638/2 -f 257/638/2 256/639/2 259/462/2 -f 256/639/2 255/640/2 259/462/2 -f 255/640/2 254/641/2 253/642/2 -f 253/642/2 252/643/2 251/460/2 -f 251/460/2 250/644/2 263/461/2 -f 250/644/2 249/645/2 263/461/2 -f 249/645/2 264/646/2 263/461/2 -f 263/461/2 262/647/2 261/648/2 -f 261/648/2 260/649/2 259/462/2 -f 255/640/2 253/642/2 259/462/2 -f 253/642/2 251/460/2 259/462/2 -f 263/461/2 261/648/2 259/462/2 -f 570/463/1 569/466/1 577/464/1 -f 571/453/1 570/463/1 576/465/1 -f 569/466/1 584/650/1 573/467/1 -f 565/468/2 582/472/2 580/469/2 -f 566/471/2 583/473/2 582/472/2 -f 567/439/2 568/632/2 583/473/2 +f 295/522/154 328/523/154 296/524/154 +f 296/525/154 329/526/154 297/527/154 +f 329/526/154 282/528/154 297/529/154 +f 314/530/154 283/531/154 282/532/154 +f 315/533/154 284/534/154 283/535/154 +f 316/536/154 285/537/154 284/538/154 +f 285/539/154 318/540/154 286/541/154 +f 318/540/154 287/542/154 286/543/154 +f 287/544/154 320/545/154 288/546/154 +f 320/545/154 289/547/154 288/548/154 +f 289/549/154 322/550/154 290/551/154 +f 290/552/154 323/553/154 291/554/154 +f 323/553/154 292/555/154 291/556/154 +f 324/557/154 293/558/154 292/559/154 +f 325/560/154 294/561/154 293/562/154 +f 326/563/154 295/564/154 294/565/154 +f 358/566/155 343/567/155 342/568/155 +f 359/569/155 344/570/155 343/567/155 +f 360/571/155 345/572/155 344/570/155 +f 345/572/155 346/573/155 330/574/155 +f 330/574/155 347/575/155 331/576/155 +f 347/577/155 332/578/155 331/576/155 +f 348/579/155 333/580/155 332/578/155 +f 349/581/155 334/582/155 333/580/155 +f 350/583/155 335/584/155 334/582/155 +f 351/585/155 336/586/155 335/584/155 +f 352/587/155 337/588/155 336/586/155 +f 353/589/155 338/590/155 337/588/155 +f 354/591/155 339/592/155 338/593/155 +f 355/594/155 340/595/155 339/592/155 +f 340/595/155 357/596/155 341/597/155 +f 357/598/155 342/568/155 341/597/155 +f 635/599/155 364/600/155 363/601/155 +f 377/602/155 634/603/155 362/604/155 +f 647/605/155 376/606/155 375/607/155 +f 645/608/155 374/609/155 373/610/155 +f 643/611/155 372/612/155 371/613/155 +f 641/614/155 370/615/155 369/616/155 +f 639/617/155 368/618/155 367/619/155 +f 637/620/155 366/621/155 365/622/155 +f 370/623/155 643/624/155 371/613/155 +f 368/618/155 641/625/155 369/616/155 +f 366/621/155 639/626/155 367/619/155 +f 364/600/155 637/627/155 365/622/155 +f 362/604/155 635/628/155 363/601/155 +f 648/629/155 377/602/155 376/606/155 +f 374/609/155 647/630/155 375/607/155 +f 372/612/155 645/631/155 373/610/155 +f 380/632/156 379/633/156 378/634/156 +f 380/632/155 385/635/155 381/636/155 +f 379/633/154 382/637/154 378/634/154 +f 381/636/157 383/638/157 379/633/157 +f 378/634/158 384/639/158 380/632/158 +f 388/640/156 386/641/156 387/642/156 +f 401/643/159 403/644/159 398/645/159 +f 395/646/160 407/647/160 396/648/160 +f 392/649/161 391/650/161 393/651/161 +f 400/652/157 406/653/157 409/654/157 +f 407/647/162 397/655/162 396/648/162 +f 401/643/163 409/654/163 408/656/163 +f 398/645/164 402/657/164 399/658/164 +f 404/659/165 394/660/165 405/661/165 +f 399/658/158 405/661/158 394/660/158 +f 391/650/158 387/662/158 393/651/158 +f 390/663/155 388/664/155 391/650/155 +f 392/649/157 389/665/157 390/663/157 +f 393/651/154 386/666/154 392/649/154 +f 412/667/160 411/668/160 410/669/160 +f 415/670/159 417/671/159 416/672/159 +f 412/673/158 416/672/158 417/671/158 +f 420/674/166 419/675/166 418/676/166 +f 413/677/157 415/670/157 411/668/157 +f 418/678/158 425/679/158 420/674/158 +f 427/680/167 428/681/167 426/682/167 +f 421/683/157 422/684/157 419/685/157 +f 420/674/156 424/686/156 421/683/156 +f 427/680/168 433/687/168 429/688/168 +f 428/681/155 433/689/155 430/690/155 +f 426/682/154 432/691/154 427/680/154 +f 428/681/169 431/692/169 426/682/169 +f 463/693/170 472/694/170 471/695/170 +f 461/696/170 470/697/170 469/698/170 +f 459/699/170 468/700/170 467/701/170 +f 464/702/170 473/703/170 472/694/170 +f 463/704/170 470/705/170 462/706/170 +f 461/707/170 468/700/170 460/708/170 +f 459/709/170 466/710/170 458/711/170 +f 465/712/170 466/710/170 473/703/170 +f 478/713/167 480/714/167 474/715/167 +f 483/716/157 484/717/157 482/718/157 +f 499/719/158 503/720/158 502/721/158 +f 482/718/154 488/722/154 483/716/154 +f 483/716/156 489/723/156 485/724/156 +f 484/717/161 487/725/161 482/718/161 +f 485/724/155 486/726/155 484/717/155 +f 505/727/157 501/728/157 504/729/157 +f 502/730/161 501/728/161 499/719/161 +f 493/731/161 496/732/161 497/733/161 +f 492/734/157 491/735/157 493/736/157 +f 498/737/156 505/738/156 503/739/156 +f 493/731/155 499/719/155 492/740/155 +f 494/741/155 500/742/155 497/733/155 +f 492/740/155 501/728/155 494/741/155 +f 497/733/155 498/737/155 493/731/155 +f 490/743/154 503/720/154 491/735/154 +f 496/744/154 504/745/154 495/746/154 +f 495/746/154 502/721/154 490/743/154 +f 491/735/154 505/747/154 496/744/154 +f 496/744/158 494/748/158 497/749/158 +f 495/750/156 492/740/156 494/741/156 +f 507/751/157 508/752/157 506/753/157 +f 521/754/157 515/755/157 517/756/157 +f 509/757/155 510/758/155 508/752/155 +f 506/753/154 512/759/154 507/751/154 +f 507/751/156 513/760/156 509/757/156 +f 508/752/161 511/761/161 506/753/161 +f 518/762/158 516/763/158 514/764/158 +f 520/765/161 517/756/161 516/763/161 +f 519/766/156 514/767/156 515/755/156 +f 529/768/157 523/769/157 525/770/157 +f 526/771/158 524/772/158 522/773/158 +f 528/774/161 525/770/161 524/772/161 +f 527/775/156 522/776/156 523/769/156 +f 537/777/157 531/778/157 533/779/157 +f 534/780/158 532/781/158 530/782/158 +f 536/783/161 533/779/161 532/781/161 +f 535/784/156 530/785/156 531/778/156 +f 539/786/161 540/787/161 538/788/161 +f 541/789/171 542/790/171 540/787/171 +f 538/788/154 544/791/154 539/786/154 +f 541/789/157 544/792/157 545/793/157 +f 540/787/158 543/794/158 538/788/158 +f 561/795/154 584/796/154 585/797/154 +f 552/798/155 556/799/155 560/800/155 +f 574/801/154 576/802/154 570/803/154 +f 551/804/154 578/805/154 580/806/154 +f 557/807/154 582/808/154 583/809/154 +f 561/795/154 579/810/154 547/811/154 +f 547/811/154 578/812/154 549/813/154 +f 551/804/154 581/814/154 553/815/154 +f 557/807/154 584/816/154 559/817/154 +f 553/815/154 582/818/154 555/819/154 +f 590/820/154 589/821/154 588/822/154 +f 604/823/154 607/824/154 603/825/154 +f 600/826/155 611/827/155 599/828/155 +f 627/829/155 616/830/155 628/831/155 +f 608/832/154 601/833/154 602/834/154 +f 607/824/154 602/834/154 603/825/154 +f 609/835/154 605/836/154 601/833/154 +f 613/837/155 598/838/155 597/839/155 +f 612/840/155 596/841/155 613/837/155 +f 611/827/155 595/842/155 612/840/155 +f 623/843/154 620/844/154 624/845/154 +f 619/846/154 626/847/154 625/848/154 +f 620/844/154 625/848/154 624/845/154 +f 618/849/154 622/850/154 626/847/154 +f 614/851/155 629/852/155 630/853/155 +f 615/854/155 631/855/155 614/851/155 +f 616/830/155 632/856/155 615/854/155 +f 295/522/154 327/857/154 328/523/154 +f 296/525/154 328/523/154 329/526/154 +f 329/526/154 314/530/154 282/528/154 +f 314/530/154 315/533/154 283/531/154 +f 315/533/154 316/536/154 284/534/154 +f 316/536/154 317/858/154 285/537/154 +f 285/539/154 317/858/154 318/540/154 +f 318/540/154 319/859/154 287/542/154 +f 287/544/154 319/859/154 320/545/154 +f 320/545/154 321/860/154 289/547/154 +f 289/549/154 321/860/154 322/550/154 +f 290/552/154 322/861/154 323/553/154 +f 323/553/154 324/557/154 292/555/154 +f 324/557/154 325/560/154 293/558/154 +f 325/560/154 326/563/154 294/561/154 +f 326/563/154 327/857/154 295/564/154 +f 358/566/155 359/862/155 343/567/155 +f 359/569/155 360/863/155 344/570/155 +f 360/571/155 361/864/155 345/572/155 +f 345/572/155 361/865/155 346/573/155 +f 330/574/155 346/866/155 347/575/155 +f 347/577/155 348/867/155 332/578/155 +f 348/579/155 349/868/155 333/580/155 +f 349/581/155 350/869/155 334/582/155 +f 350/583/155 351/870/155 335/584/155 +f 351/585/155 352/871/155 336/586/155 +f 352/587/155 353/872/155 337/588/155 +f 353/589/155 354/873/155 338/590/155 +f 354/591/155 355/874/155 339/592/155 +f 355/594/155 356/875/155 340/595/155 +f 340/595/155 356/876/155 357/596/155 +f 357/598/155 358/877/155 342/568/155 +f 635/599/155 636/878/155 364/600/155 +f 377/602/155 649/879/155 634/603/155 +f 647/605/155 648/880/155 376/606/155 +f 645/608/155 646/881/155 374/609/155 +f 643/611/155 644/882/155 372/612/155 +f 641/614/155 642/883/155 370/615/155 +f 639/617/155 640/884/155 368/618/155 +f 637/620/155 638/885/155 366/621/155 +f 370/623/155 642/886/155 643/624/155 +f 368/618/155 640/887/155 641/625/155 +f 366/621/155 638/888/155 639/626/155 +f 364/600/155 636/889/155 637/627/155 +f 362/604/155 634/890/155 635/628/155 +f 648/629/155 649/891/155 377/602/155 +f 374/609/155 646/892/155 647/630/155 +f 372/612/155 644/893/155 645/631/155 +f 380/632/156 381/636/156 379/633/156 +f 380/632/155 384/894/155 385/635/155 +f 379/633/154 383/895/154 382/637/154 +f 381/636/157 385/896/157 383/638/157 +f 378/634/158 382/897/158 384/639/158 +f 388/640/156 389/665/156 386/641/156 +f 401/643/159 408/656/159 403/644/159 +f 395/646/160 404/898/160 407/647/160 +f 392/649/161 390/663/161 391/650/161 +f 400/652/157 397/655/157 406/653/157 +f 407/647/162 406/653/162 397/655/162 +f 401/643/163 400/652/163 409/654/163 +f 398/645/164 403/644/164 402/657/164 +f 404/659/165 395/899/165 394/660/165 +f 399/658/158 402/657/158 405/661/158 +f 391/650/158 388/900/158 387/662/158 +f 390/663/155 389/901/155 388/664/155 +f 392/649/157 386/641/157 389/665/157 +f 393/651/154 387/902/154 386/666/154 +f 412/667/160 413/677/160 411/668/160 +f 415/670/159 414/903/159 417/671/159 +f 412/673/158 410/904/158 416/672/158 +f 420/674/166 421/683/166 419/675/166 +f 413/677/157 414/903/157 415/670/157 +f 418/678/158 423/905/158 425/679/158 +f 427/680/167 429/688/167 428/681/167 +f 421/683/157 424/686/157 422/684/157 +f 420/674/156 425/679/156 424/686/156 +f 427/680/168 432/906/168 433/687/168 +f 428/681/155 429/688/155 433/689/155 +f 426/682/154 431/907/154 432/691/154 +f 428/681/169 430/908/169 431/692/169 +f 463/693/170 464/909/170 472/694/170 +f 461/696/170 462/910/170 470/697/170 +f 459/699/170 460/911/170 468/700/170 +f 464/702/170 465/912/170 473/703/170 +f 463/704/170 471/695/170 470/705/170 +f 461/707/170 469/698/170 468/700/170 +f 459/709/170 467/701/170 466/710/170 +f 465/712/170 458/913/170 466/710/170 +f 474/715/167 475/914/167 476/915/167 +f 476/915/167 477/916/167 478/713/167 +f 478/713/167 479/917/167 480/714/167 +f 480/714/167 481/918/167 474/715/167 +f 474/715/167 476/915/167 478/713/167 +f 483/716/157 485/724/157 484/717/157 +f 499/719/158 498/737/158 503/720/158 +f 482/718/154 487/919/154 488/722/154 +f 483/716/156 488/920/156 489/723/156 +f 484/717/161 486/921/161 487/725/161 +f 485/724/155 489/922/155 486/726/155 +f 505/727/157 500/742/157 501/728/157 +f 502/730/161 504/923/161 501/728/161 +f 493/731/161 491/924/161 496/732/161 +f 492/734/157 490/743/157 491/735/157 +f 498/737/156 500/742/156 505/738/156 +f 493/731/155 498/737/155 499/719/155 +f 494/741/155 501/728/155 500/742/155 +f 492/740/155 499/719/155 501/728/155 +f 497/733/155 500/742/155 498/737/155 +f 490/743/154 502/721/154 503/720/154 +f 496/744/154 505/747/154 504/745/154 +f 495/746/154 504/745/154 502/721/154 +f 491/735/154 503/720/154 505/747/154 +f 496/744/158 495/746/158 494/748/158 +f 495/750/156 490/925/156 492/740/156 +f 507/751/157 509/757/157 508/752/157 +f 521/754/157 519/766/157 515/755/157 +f 509/757/155 513/926/155 510/758/155 +f 506/753/154 511/927/154 512/759/154 +f 507/751/156 512/928/156 513/760/156 +f 508/752/161 510/929/161 511/761/161 +f 518/762/158 520/765/158 516/763/158 +f 520/765/161 521/754/161 517/756/161 +f 519/766/156 518/930/156 514/767/156 +f 529/768/157 527/775/157 523/769/157 +f 526/771/158 528/774/158 524/772/158 +f 528/774/161 529/768/161 525/770/161 +f 527/775/156 526/931/156 522/776/156 +f 537/777/157 535/784/157 531/778/157 +f 534/780/158 536/783/158 532/781/158 +f 536/783/161 537/777/161 533/779/161 +f 535/784/156 534/932/156 530/785/156 +f 539/786/161 541/789/161 540/787/161 +f 541/789/171 545/933/171 542/790/171 +f 538/788/154 543/934/154 544/791/154 +f 541/789/157 539/786/157 544/792/157 +f 540/787/158 542/935/158 543/794/158 +f 561/795/154 559/817/154 584/796/154 +f 560/800/155 546/936/155 548/937/155 +f 548/937/155 550/938/155 560/800/155 +f 550/938/155 552/798/155 560/800/155 +f 552/798/155 554/939/155 556/799/155 +f 556/799/155 558/940/155 560/800/155 +f 570/803/154 571/941/154 572/942/154 +f 572/942/154 573/943/154 574/801/154 +f 574/801/154 575/944/154 576/802/154 +f 576/802/154 577/945/154 570/803/154 +f 570/803/154 572/942/154 574/801/154 +f 551/804/154 549/813/154 578/805/154 +f 557/807/154 555/946/154 582/808/154 +f 561/795/154 585/947/154 579/810/154 +f 547/811/154 579/948/154 578/812/154 +f 551/804/154 580/949/154 581/814/154 +f 557/807/154 583/950/154 584/816/154 +f 553/815/154 581/951/154 582/818/154 +f 588/822/154 586/952/154 587/953/154 +f 587/953/154 593/954/154 588/822/154 +f 593/954/154 592/955/154 588/822/154 +f 592/955/154 591/956/154 588/822/154 +f 591/956/154 590/820/154 588/822/154 +f 604/823/154 606/957/154 607/824/154 +f 600/826/155 610/958/155 611/827/155 +f 627/829/155 617/959/155 616/830/155 +f 608/832/154 609/835/154 601/833/154 +f 607/824/154 608/832/154 602/834/154 +f 609/835/154 594/960/154 605/836/154 +f 613/837/155 596/841/155 598/838/155 +f 612/840/155 595/842/155 596/841/155 +f 611/827/155 610/958/155 595/842/155 +f 623/843/154 621/961/154 620/844/154 +f 619/846/154 618/849/154 626/847/154 +f 620/844/154 619/846/154 625/848/154 +f 618/849/154 633/962/154 622/850/154 +f 614/851/155 631/855/155 629/852/155 +f 615/854/155 632/856/155 631/855/155 +f 616/830/155 617/959/155 632/856/155 s 1 -f 589/651/6 453/652/25 588/653/25 -f 593/654/7 449/655/26 592/656/26 -f 596/657/27 446/658/9 595/659/9 -f 600/660/28 442/661/11 599/662/11 -f 588/653/25 454/663/10 587/664/10 -f 592/656/26 450/665/12 591/666/12 -f 595/659/9 447/667/29 594/668/29 -f 599/662/11 443/669/30 598/670/30 -f 587/664/10 455/671/31 586/672/31 -f 591/666/12 451/673/32 590/674/32 -f 594/668/29 448/675/7 593/676/7 -f 598/670/30 444/677/8 597/678/8 -f 585/679/3 441/680/28 600/660/28 -f 597/678/8 445/681/27 596/657/27 -f 590/674/32 452/682/6 589/651/6 -f 586/672/31 456/683/3 585/679/3 -f 36/475/27 53/61/8 37/19/8 -f 44/39/25 61/47/6 45/42/6 -f 37/19/8 54/63/30 38/476/30 -f 45/42/6 62/46/32 46/474/32 -f 38/476/30 55/65/11 39/24/11 -f 46/474/32 63/49/12 47/2/12 -f 39/24/11 56/67/28 40/477/28 -f 47/2/12 64/51/26 48/5/26 -f 40/477/28 57/69/3 41/29/3 -f 33/9/7 50/55/29 34/12/29 -f 48/5/26 49/53/7 33/9/7 -f 41/478/3 58/71/31 42/32/31 -f 34/12/29 51/57/9 35/15/9 -f 42/32/31 59/74/10 43/36/10 -f 35/15/9 52/59/27 36/475/27 -f 43/36/10 60/76/25 44/39/25 -f 92/684/8 100/685/27 93/686/27 -f 84/687/6 108/688/25 85/689/25 -f 91/690/30 101/691/8 92/684/8 -f 83/692/32 109/693/6 84/687/6 -f 90/694/11 102/695/30 91/690/30 -f 82/696/12 110/697/32 83/692/32 -f 89/698/28 103/699/11 90/694/11 -f 81/700/26 111/701/12 82/696/12 -f 88/702/3 104/703/28 89/698/28 -f 95/704/29 97/705/7 96/706/7 -f 96/706/7 112/707/26 81/700/26 -f 87/708/31 105/709/3 88/710/3 -f 94/711/9 98/712/29 95/704/29 -f 86/713/10 106/714/31 87/708/31 -f 93/686/27 99/715/9 94/711/9 -f 85/689/25 107/716/10 86/713/10 -f 183/717/33 198/718/34 199/719/33 -f 175/720/35 192/721/36 176/722/36 -f 183/717/33 200/723/37 184/724/37 -f 176/722/36 193/725/38 177/726/38 -f 170/727/39 185/728/40 186/729/39 -f 184/724/37 185/730/40 169/731/40 -f 178/732/41 193/733/38 194/734/41 -f 171/735/42 186/736/39 187/737/42 -f 178/732/41 195/738/43 179/739/43 -f 172/740/44 187/741/42 188/742/44 -f 179/739/43 196/743/45 180/744/45 -f 172/740/44 189/745/46 173/746/46 -f 180/744/45 197/747/47 181/748/47 -f 174/749/48 189/750/46 190/751/48 -f 182/752/34 197/753/47 198/754/34 -f 174/749/48 191/755/35 175/720/35 -f 196/756/25 213/757/6 197/758/6 -f 189/759/8 206/760/30 190/761/30 -f 197/758/6 214/762/32 198/763/32 -f 190/761/30 207/764/11 191/765/11 -f 198/763/32 215/766/12 199/767/12 -f 191/765/11 208/768/28 192/769/28 -f 199/767/12 216/770/26 200/771/26 -f 192/769/28 209/772/3 193/773/3 -f 185/774/7 202/775/29 186/776/29 -f 200/771/26 201/777/7 185/774/7 -f 193/733/3 210/778/31 194/734/31 -f 186/776/29 203/779/9 187/780/9 -f 194/734/31 211/781/10 195/782/10 -f 187/780/9 204/783/27 188/784/27 -f 195/782/10 212/785/25 196/756/25 -f 188/784/27 205/786/8 189/759/8 -f 230/787/49 215/766/50 214/762/49 -f 231/788/50 216/770/51 215/766/50 -f 232/789/51 201/777/52 216/770/51 -f 217/790/52 202/775/53 201/777/52 -f 218/791/53 203/779/54 202/775/53 -f 203/779/54 220/792/55 204/783/55 -f 220/793/55 205/786/56 204/783/55 -f 205/786/56 222/794/57 206/760/57 -f 222/795/57 207/764/58 206/760/57 -f 207/764/58 224/796/59 208/768/59 -f 224/797/59 209/772/60 208/768/59 -f 209/798/60 226/799/61 210/778/61 -f 210/778/61 227/800/62 211/781/62 -f 227/801/62 212/785/63 211/781/62 -f 228/802/63 213/757/64 212/785/63 -f 213/757/64 230/803/49 214/762/49 -f 73/804/7 242/182/29 74/805/29 -f 66/806/31 235/169/10 67/807/10 -f 74/805/29 243/181/9 75/808/9 -f 67/807/10 236/191/25 68/809/25 -f 75/808/9 244/179/27 76/810/27 -f 68/809/25 237/190/6 69/811/6 -f 76/810/27 245/178/8 77/812/8 -f 69/811/6 238/188/32 70/813/32 -f 77/812/8 246/176/30 78/814/30 -f 70/813/32 239/187/12 71/815/12 -f 78/814/30 247/175/11 79/816/11 -f 71/815/12 240/185/26 72/817/26 -f 79/816/11 248/171/28 80/818/28 -f 72/817/26 241/184/7 73/819/7 -f 65/820/3 234/170/31 66/806/31 -f 80/818/28 233/173/3 65/820/3 -f 263/821/65 393/822/66 394/823/65 -f 257/824/67 399/825/68 400/826/67 -f 407/827/69 251/828/70 406/829/70 -f 255/830/71 401/831/72 402/832/71 -f 249/833/73 407/827/69 408/834/73 -f 261/835/74 395/836/75 396/837/74 -f 401/831/72 257/838/67 400/839/67 -f 251/840/70 405/841/76 406/829/70 -f 398/842/77 260/843/78 397/844/78 -f 253/845/79 403/846/80 404/847/79 -f 403/846/80 255/848/71 402/832/71 -f 397/844/78 261/849/74 396/837/74 -f 393/822/66 249/850/73 408/834/73 -f 262/851/75 394/823/65 395/836/75 -f 399/825/68 259/852/77 398/842/77 -f 405/841/76 253/853/79 404/847/79 -f 322/854/81 331/855/82 330/856/83 -f 327/857/21 336/858/84 335/859/85 -f 326/860/86 333/861/87 325/862/1 -f 324/863/88 331/855/82 323/864/22 -f 321/865/2 330/856/83 329/866/89 -f 321/865/2 336/858/84 328/867/90 -f 326/860/86 335/859/85 334/868/91 -f 325/869/1 332/870/92 324/863/88 -f 334/868/91 341/871/93 333/861/87 -f 331/855/82 340/872/94 339/873/95 -f 329/866/89 338/874/96 337/875/97 -f 329/866/89 344/876/98 336/858/84 -f 335/859/85 342/877/99 334/868/91 -f 332/870/92 341/878/93 340/872/94 -f 330/856/83 339/873/95 338/874/96 -f 336/858/84 343/879/100 335/859/85 -f 343/879/100 352/880/90 351/881/21 -f 341/871/93 350/882/86 349/883/1 -f 339/873/95 348/265/88 347/884/22 -f 337/875/97 346/885/81 345/886/2 -f 337/875/97 352/880/90 344/876/98 -f 342/877/99 351/881/21 350/882/86 -f 341/878/93 348/265/88 340/872/94 -f 339/873/95 346/885/81 338/874/96 -f 354/270/81 361/887/2 353/279/2 -f 353/279/2 368/888/90 360/272/90 -f 359/263/21 366/889/86 358/264/86 -f 357/266/1 364/890/88 356/267/88 -f 354/270/81 363/891/22 362/892/81 -f 359/263/21 368/888/90 367/893/21 -f 357/274/1 366/889/86 365/894/1 -f 356/267/88 363/891/22 355/269/22 -f 434/895/31 419/323/10 418/325/31 -f 427/896/9 412/357/27 411/320/9 -f 435/897/10 420/355/25 419/323/10 -f 428/898/27 413/348/8 412/357/27 -f 436/899/25 421/351/6 420/355/25 -f 429/900/8 414/343/30 413/348/8 -f 437/901/6 422/347/32 421/351/6 -f 430/902/30 415/338/11 414/343/30 -f 438/903/32 423/342/12 422/347/32 -f 431/904/11 416/333/28 415/338/11 -f 439/905/12 424/337/26 423/342/12 -f 432/906/28 417/593/3 416/333/28 -f 425/907/7 410/327/29 409/332/7 -f 440/908/26 409/332/7 424/337/26 -f 433/909/3 418/325/31 417/328/3 -f 426/910/29 411/320/9 410/327/29 -f 498/420/7 499/911/12 497/912/7 -f 500/422/12 501/913/6 499/911/12 -f 502/413/6 503/914/10 501/913/6 -f 504/424/10 505/915/3 503/914/10 -f 506/619/3 507/916/11 505/917/3 -f 508/416/11 509/918/8 507/916/11 -f 510/426/8 511/919/9 509/918/8 -f 512/404/9 497/912/7 511/919/9 -f 513/920/7 528/921/12 520/922/12 -f 519/923/6 526/924/10 518/925/10 -f 517/926/3 524/927/11 516/928/11 -f 515/929/8 522/930/9 514/931/9 -f 520/922/12 527/932/6 519/923/6 -f 518/925/10 525/933/3 517/934/3 -f 516/928/11 523/935/8 515/929/8 -f 514/931/9 521/936/7 513/920/7 -f 534/623/11 543/937/8 535/425/8 -f 532/624/10 541/938/3 533/427/3 -f 529/414/12 539/939/6 531/415/6 -f 535/405/8 544/940/9 536/406/9 -f 533/417/3 542/941/11 534/418/11 -f 531/622/6 540/942/10 532/423/10 -f 530/621/7 537/943/12 529/421/12 -f 536/620/9 538/944/7 530/419/7 -f 560/444/26 548/448/101 545/633/101 -f 557/630/102 562/436/32 558/433/32 -f 558/433/32 563/449/12 559/441/12 -f 559/441/12 564/446/26 560/444/26 -f 18/945/31 601/946/3 17/947/3 -f 20/948/25 603/949/10 19/950/10 -f 22/951/32 605/952/6 21/953/6 -f 17/947/3 616/954/28 32/955/28 -f 26/956/29 609/957/7 25/958/7 -f 21/953/6 604/959/25 20/948/25 -f 24/960/26 607/961/12 23/962/12 -f 30/963/30 613/964/8 29/965/8 -f 31/966/11 614/967/30 30/963/30 -f 25/968/7 608/969/26 24/960/26 -f 19/950/10 602/970/31 18/945/31 -f 28/971/27 611/972/9 27/973/9 -f 23/962/12 606/974/32 22/951/32 -f 29/965/8 612/975/27 28/971/27 -f 32/955/28 615/976/11 31/966/11 -f 27/973/9 610/977/29 26/956/29 -f 395/836/32 620/978/6 396/837/6 -f 397/844/25 622/979/10 398/842/10 -f 400/839/3 625/980/28 401/831/28 -f 403/846/30 628/981/8 404/847/8 -f 405/841/27 630/982/9 406/829/9 -f 402/832/11 627/983/30 403/846/30 -f 393/822/26 618/984/12 394/823/12 -f 396/837/6 621/985/25 397/844/25 -f 399/825/31 624/986/3 400/826/3 -f 408/834/7 617/987/26 393/822/26 -f 406/829/9 631/988/29 407/827/29 -f 394/823/12 619/989/32 395/836/32 -f 401/831/28 626/990/11 402/832/11 -f 404/847/8 629/991/27 405/841/27 -f 407/827/29 632/992/7 408/834/7 -f 398/842/10 623/993/31 399/825/31 -f 623/993/103 640/994/104 624/986/105 -f 631/988/106 648/995/107 632/992/108 -f 627/983/109 642/996/110 643/997/111 -f 619/989/112 636/998/113 620/978/114 -f 617/987/115 648/999/107 633/1000/116 -f 619/989/112 634/1001/117 635/1002/118 -f 625/980/119 642/1003/110 626/990/120 -f 623/993/103 638/1004/121 639/1005/122 -f 625/980/119 640/1006/104 641/1007/123 -f 621/985/124 638/1008/121 622/979/125 -f 629/991/126 646/1009/127 630/982/128 -f 617/987/115 634/1010/117 618/984/129 -f 620/978/114 637/1011/130 621/985/124 -f 628/981/131 645/1012/132 629/991/126 -f 631/988/106 646/1013/127 647/1014/133 -f 627/983/109 644/1015/134 628/981/131 -f 644/1016/134 649/1017/1 645/1012/132 -f 646/1013/127 649/1018/1 647/1014/133 -f 639/1019/122 649/1020/1 640/994/104 -f 647/1021/133 649/1022/1 648/995/107 -f 642/996/110 649/1023/1 643/997/111 -f 635/1024/118 649/1025/1 636/998/113 -f 648/999/107 649/1026/1 633/1000/116 -f 634/1001/117 649/1027/1 635/1002/118 -f 641/1028/123 649/1029/1 642/1003/110 -f 638/1004/121 649/1030/1 639/1005/122 -f 640/1006/104 649/1031/1 641/1007/123 -f 637/1032/130 649/1033/1 638/1008/121 -f 645/1034/132 649/1035/1 646/1009/127 -f 633/1036/116 649/1037/1 634/1010/117 -f 636/1038/113 649/1039/1 637/1011/130 -f 643/1040/111 649/1041/1 644/1015/134 -f 569/466/26 581/470/101 584/650/101 -f 572/634/102 567/439/32 571/453/32 -f 571/453/32 566/471/12 570/463/12 -f 570/463/12 565/468/26 569/466/26 -f 589/651/6 452/682/6 453/652/25 -f 593/654/7 448/1042/7 449/655/26 -f 596/657/27 445/681/27 446/658/9 -f 600/660/28 441/680/28 442/661/11 -f 588/653/25 453/652/25 454/663/10 -f 592/656/26 449/655/26 450/665/12 -f 595/659/9 446/658/9 447/667/29 -f 599/662/11 442/661/11 443/669/30 -f 587/664/10 454/663/10 455/671/31 -f 591/666/12 450/665/12 451/673/32 -f 594/668/29 447/667/29 448/675/7 -f 598/670/30 443/669/30 444/677/8 -f 585/679/3 456/683/3 441/680/28 -f 597/678/8 444/677/8 445/681/27 -f 590/674/32 451/673/32 452/682/6 -f 586/672/31 455/671/31 456/683/3 -f 36/475/27 52/59/27 53/61/8 -f 44/39/25 60/76/25 61/47/6 -f 37/19/8 53/61/8 54/63/30 -f 45/42/6 61/47/6 62/46/32 -f 38/476/30 54/63/30 55/65/11 -f 46/474/32 62/46/32 63/49/12 -f 39/24/11 55/65/11 56/67/28 -f 47/2/12 63/49/12 64/51/26 -f 40/477/28 56/67/28 57/69/3 -f 33/9/7 49/53/7 50/55/29 -f 48/5/26 64/51/26 49/53/7 -f 41/478/3 57/72/3 58/71/31 -f 34/12/29 50/55/29 51/57/9 -f 42/32/31 58/71/31 59/74/10 -f 35/15/9 51/57/9 52/59/27 -f 43/36/10 59/74/10 60/76/25 -f 92/684/8 101/691/8 100/685/27 -f 84/687/6 109/693/6 108/688/25 -f 91/690/30 102/695/30 101/691/8 -f 83/692/32 110/697/32 109/693/6 -f 90/694/11 103/699/11 102/695/30 -f 82/696/12 111/701/12 110/697/32 -f 89/698/28 104/703/28 103/699/11 -f 81/700/26 112/707/26 111/701/12 -f 88/702/3 105/1043/3 104/703/28 -f 95/704/29 98/712/29 97/705/7 -f 96/706/7 97/705/7 112/707/26 -f 87/708/31 106/714/31 105/709/3 -f 94/711/9 99/715/9 98/712/29 -f 86/713/10 107/716/10 106/714/31 -f 93/686/27 100/685/27 99/715/9 -f 85/689/25 108/688/25 107/716/10 -f 183/717/33 182/752/34 198/718/34 -f 175/720/35 191/1044/35 192/721/36 -f 183/717/33 199/1045/33 200/723/37 -f 176/722/36 192/1046/36 193/725/38 -f 170/727/39 169/731/40 185/728/40 -f 184/724/37 200/1047/37 185/730/40 -f 178/732/41 177/1048/38 193/733/38 -f 171/735/42 170/727/39 186/736/39 -f 178/732/41 194/1049/41 195/738/43 -f 172/740/44 171/735/42 187/741/42 -f 179/739/43 195/1050/43 196/743/45 -f 172/740/44 188/1051/44 189/745/46 -f 180/744/45 196/1052/45 197/747/47 -f 174/749/48 173/746/46 189/750/46 -f 182/752/34 181/748/47 197/753/47 -f 174/749/48 190/1053/48 191/755/35 -f 196/756/25 212/785/25 213/757/6 -f 189/759/8 205/786/8 206/760/30 -f 197/758/6 213/757/6 214/762/32 -f 190/761/30 206/760/30 207/764/11 -f 198/763/32 214/762/32 215/766/12 -f 191/765/11 207/764/11 208/768/28 -f 199/767/12 215/766/12 216/770/26 -f 192/769/28 208/768/28 209/772/3 -f 185/774/7 201/777/7 202/775/29 -f 200/771/26 216/770/26 201/777/7 -f 193/733/3 209/798/3 210/778/31 -f 186/776/29 202/775/29 203/779/9 -f 194/734/31 210/778/31 211/781/10 -f 187/780/9 203/779/9 204/783/27 -f 195/782/10 211/781/10 212/785/25 -f 188/784/27 204/783/27 205/786/8 -f 230/787/49 231/1054/50 215/766/50 -f 231/788/50 232/1055/51 216/770/51 -f 232/789/51 217/1056/52 201/777/52 -f 217/790/52 218/1057/53 202/775/53 -f 218/791/53 219/1058/54 203/779/54 -f 203/779/54 219/1059/54 220/792/55 -f 220/793/55 221/1060/56 205/786/56 -f 205/786/56 221/1061/56 222/794/57 -f 222/795/57 223/1062/58 207/764/58 -f 207/764/58 223/1063/58 224/796/59 -f 224/797/59 225/1064/60 209/772/60 -f 209/798/60 225/1065/60 226/799/61 -f 210/778/61 226/1066/61 227/800/62 -f 227/801/62 228/1067/63 212/785/63 -f 228/802/63 229/1068/64 213/757/64 -f 213/757/64 229/1069/64 230/803/49 -f 73/804/7 241/192/7 242/182/29 -f 66/806/31 234/170/31 235/169/10 -f 74/805/29 242/182/29 243/181/9 -f 67/807/10 235/169/10 236/191/25 -f 75/808/9 243/181/9 244/179/27 -f 68/809/25 236/191/25 237/190/6 -f 76/810/27 244/179/27 245/178/8 -f 69/811/6 237/190/6 238/188/32 -f 77/812/8 245/178/8 246/176/30 -f 70/813/32 238/188/32 239/187/12 -f 78/814/30 246/176/30 247/175/11 -f 71/815/12 239/187/12 240/185/26 -f 79/816/11 247/175/11 248/171/28 -f 72/817/26 240/185/26 241/184/7 -f 65/820/3 233/173/3 234/170/31 -f 80/818/28 248/171/28 233/173/3 -f 263/821/65 264/1070/66 393/822/66 -f 257/824/67 258/1071/68 399/825/68 -f 407/827/69 250/1072/69 251/828/70 -f 255/830/71 256/1073/72 401/831/72 -f 249/833/73 250/1074/69 407/827/69 -f 261/835/74 262/1075/75 395/836/75 -f 401/831/72 256/1076/72 257/838/67 -f 251/840/70 252/1077/76 405/841/76 -f 398/842/77 259/1078/77 260/843/78 -f 253/845/79 254/1079/80 403/846/80 -f 403/846/80 254/1080/80 255/848/71 -f 397/844/78 260/1081/78 261/849/74 -f 393/822/66 264/1082/66 249/850/73 -f 262/851/75 263/1083/65 394/823/65 -f 399/825/68 258/1084/68 259/852/77 -f 405/841/76 252/1085/76 253/853/79 -f 322/854/81 323/864/22 331/855/82 -f 327/857/21 328/867/90 336/858/84 -f 326/860/86 334/868/91 333/861/87 -f 324/863/88 332/870/92 331/855/82 -f 321/865/2 322/854/81 330/856/83 -f 321/865/2 329/866/89 336/858/84 -f 326/860/86 327/857/21 335/859/85 -f 325/869/1 333/1086/87 332/870/92 -f 334/868/91 342/877/99 341/871/93 -f 331/855/82 332/870/92 340/872/94 -f 329/866/89 330/856/83 338/874/96 -f 329/866/89 337/875/97 344/876/98 -f 335/859/85 343/879/100 342/877/99 -f 332/870/92 333/1086/87 341/878/93 -f 330/856/83 331/855/82 339/873/95 -f 336/858/84 344/876/98 343/879/100 -f 343/879/100 344/876/98 352/880/90 -f 341/871/93 342/877/99 350/882/86 -f 339/873/95 340/872/94 348/265/88 -f 337/875/97 338/874/96 346/885/81 -f 337/875/97 345/886/2 352/880/90 -f 342/877/99 343/879/100 351/881/21 -f 341/878/93 349/574/1 348/265/88 -f 339/873/95 347/884/22 346/885/81 -f 354/270/81 362/892/81 361/887/2 -f 353/279/2 361/887/2 368/888/90 -f 359/263/21 367/893/21 366/889/86 -f 357/266/1 365/1087/1 364/890/88 -f 354/270/81 355/269/22 363/891/22 -f 359/263/21 360/272/90 368/888/90 -f 357/274/1 358/264/86 366/889/86 -f 356/267/88 364/890/88 363/891/22 -f 434/895/31 435/897/10 419/323/10 -f 427/896/9 428/898/27 412/357/27 -f 435/897/10 436/899/25 420/355/25 -f 428/898/27 429/900/8 413/348/8 -f 436/899/25 437/901/6 421/351/6 -f 429/900/8 430/902/30 414/343/30 -f 437/901/6 438/903/32 422/347/32 -f 430/902/30 431/904/11 415/338/11 -f 438/903/32 439/905/12 423/342/12 -f 431/904/11 432/906/28 416/333/28 -f 439/905/12 440/908/26 424/337/26 -f 432/906/28 433/1088/3 417/593/3 -f 425/907/7 426/910/29 410/327/29 -f 440/908/26 425/907/7 409/332/7 -f 433/909/3 434/895/31 418/325/31 -f 426/910/29 427/896/9 411/320/9 -f 498/420/7 500/422/12 499/911/12 -f 500/422/12 502/413/6 501/913/6 -f 502/413/6 504/424/10 503/914/10 -f 504/424/10 506/428/3 505/915/3 -f 506/619/3 508/416/11 507/916/11 -f 508/416/11 510/426/8 509/918/8 -f 510/426/8 512/404/9 511/919/9 -f 512/404/9 498/420/7 497/912/7 -f 513/920/7 521/936/7 528/921/12 -f 519/923/6 527/932/6 526/924/10 -f 517/926/3 525/1089/3 524/927/11 -f 515/929/8 523/935/8 522/930/9 -f 520/922/12 528/921/12 527/932/6 -f 518/925/10 526/924/10 525/933/3 -f 516/928/11 524/927/11 523/935/8 -f 514/931/9 522/930/9 521/936/7 -f 534/623/11 542/1090/11 543/937/8 -f 532/624/10 540/1091/10 541/938/3 -f 529/414/12 537/1092/12 539/939/6 -f 535/405/8 543/1093/8 544/940/9 -f 533/417/3 541/1094/3 542/941/11 -f 531/622/6 539/1095/6 540/942/10 -f 530/621/7 538/1096/7 537/943/12 -f 536/620/9 544/1097/9 538/944/7 -f 560/444/26 564/446/26 548/448/101 -f 557/630/102 550/437/102 562/436/32 -f 558/433/32 562/436/32 563/449/12 -f 559/441/12 563/449/12 564/446/26 -f 18/945/31 602/970/31 601/946/3 -f 20/948/25 604/959/25 603/949/10 -f 22/951/32 606/974/32 605/952/6 -f 17/947/3 601/946/3 616/954/28 -f 26/956/29 610/977/29 609/957/7 -f 21/953/6 605/952/6 604/959/25 -f 24/960/26 608/969/26 607/961/12 -f 30/963/30 614/967/30 613/964/8 -f 31/966/11 615/976/11 614/967/30 -f 25/968/7 609/1098/7 608/969/26 -f 19/950/10 603/949/10 602/970/31 -f 28/971/27 612/975/27 611/972/9 -f 23/962/12 607/961/12 606/974/32 -f 29/965/8 613/964/8 612/975/27 -f 32/955/28 616/954/28 615/976/11 -f 27/973/9 611/972/9 610/977/29 -f 395/836/32 619/989/32 620/978/6 -f 397/844/25 621/985/25 622/979/10 -f 400/839/3 624/1099/3 625/980/28 -f 403/846/30 627/983/30 628/981/8 -f 405/841/27 629/991/27 630/982/9 -f 402/832/11 626/990/11 627/983/30 -f 393/822/26 617/987/26 618/984/12 -f 396/837/6 620/978/6 621/985/25 -f 399/825/31 623/993/31 624/986/3 -f 408/834/7 632/992/7 617/987/26 -f 406/829/9 630/982/9 631/988/29 -f 394/823/12 618/984/12 619/989/32 -f 401/831/28 625/980/28 626/990/11 -f 404/847/8 628/981/8 629/991/27 -f 407/827/29 631/988/29 632/992/7 -f 398/842/10 622/979/10 623/993/31 -f 623/993/103 639/1019/122 640/994/104 -f 631/988/106 647/1021/133 648/995/107 -f 627/983/109 626/990/120 642/996/110 -f 619/989/112 635/1024/118 636/998/113 -f 617/987/115 632/992/108 648/999/107 -f 619/989/112 618/984/129 634/1001/117 -f 625/980/119 641/1028/123 642/1003/110 -f 623/993/103 622/979/125 638/1004/121 -f 625/980/119 624/1099/105 640/1006/104 -f 621/985/124 637/1032/130 638/1008/121 -f 629/991/126 645/1034/132 646/1009/127 -f 617/987/115 633/1036/116 634/1010/117 -f 620/978/114 636/1038/113 637/1011/130 -f 628/981/131 644/1016/134 645/1012/132 -f 631/988/106 630/982/128 646/1013/127 -f 627/983/109 643/1040/111 644/1015/134 -f 569/466/26 565/468/26 581/470/101 -f 572/634/102 579/440/102 567/439/32 -f 571/453/32 567/439/32 566/471/12 -f 570/463/12 566/471/12 565/468/26 +f 317/858/172 334/582/158 318/540/158 +f 325/560/173 342/568/157 326/563/157 +f 318/540/158 335/584/174 319/859/174 +f 326/563/157 343/567/175 327/857/175 +f 319/859/174 336/586/176 320/545/176 +f 327/857/175 344/570/177 328/523/177 +f 320/545/176 337/588/178 321/860/178 +f 328/523/177 345/572/179 329/526/179 +f 321/860/178 338/590/156 322/550/156 +f 314/530/161 331/576/180 315/533/180 +f 329/526/179 330/574/161 314/530/161 +f 322/861/156 339/592/181 323/553/181 +f 315/533/180 332/578/182 316/536/182 +f 323/553/181 340/595/183 324/557/183 +f 316/536/182 333/580/172 317/858/172 +f 324/557/183 341/597/173 325/560/173 +f 354/963/161 371/613/180 355/964/180 +f 347/965/181 364/600/183 348/966/183 +f 355/964/180 372/612/182 356/967/182 +f 348/966/183 365/622/173 349/968/173 +f 356/967/182 373/610/172 357/969/172 +f 349/968/173 366/621/157 350/970/157 +f 357/969/172 374/609/158 358/971/158 +f 350/970/157 367/619/175 351/972/175 +f 358/971/158 375/607/174 359/973/174 +f 351/972/175 368/618/177 352/974/177 +f 359/973/174 376/606/176 360/975/176 +f 352/974/177 369/616/179 353/976/179 +f 360/975/176 377/602/178 361/977/178 +f 353/976/179 370/615/161 354/978/161 +f 346/979/156 363/601/181 347/965/181 +f 361/977/178 362/604/156 346/979/156 +f 435/980/184 444/981/185 443/982/186 +f 440/983/168 449/984/187 448/985/188 +f 439/986/189 446/987/190 438/988/154 +f 437/989/191 444/981/185 436/990/169 +f 434/991/155 443/982/186 442/992/192 +f 434/991/155 449/984/187 441/993/193 +f 439/986/189 448/985/188 447/994/194 +f 438/995/154 445/996/195 437/989/191 +f 447/994/194 454/997/196 446/987/190 +f 444/981/185 453/998/197 452/999/198 +f 442/992/192 451/1000/199 450/1001/200 +f 442/992/192 457/1002/201 449/984/187 +f 448/985/188 455/1003/202 447/994/194 +f 445/996/195 454/1004/196 453/998/197 +f 443/982/186 452/999/198 451/1000/199 +f 449/984/187 456/1005/203 448/985/188 +f 456/1005/203 465/1006/193 464/1007/168 +f 454/997/196 463/1008/189 462/1009/154 +f 452/999/198 461/696/191 460/1010/169 +f 450/1001/200 459/1011/184 458/1012/155 +f 450/1001/200 465/1006/193 457/1002/201 +f 455/1003/202 464/1007/168 463/1008/189 +f 454/1004/196 461/696/191 453/998/197 +f 452/999/198 459/1011/184 451/1000/199 +f 467/701/184 474/1013/155 466/710/155 +f 466/710/155 481/1014/193 473/703/193 +f 472/694/168 479/1015/189 471/695/189 +f 470/697/154 477/1016/191 469/698/191 +f 467/701/184 476/1017/169 475/1018/184 +f 472/694/168 481/1014/193 480/1019/168 +f 470/705/154 479/1015/189 478/1020/154 +f 469/698/191 476/1017/169 468/700/169 +f 547/811/161 548/1021/177 546/1022/161 +f 549/813/177 550/1023/157 548/1021/177 +f 551/804/157 552/1024/183 550/1023/157 +f 553/815/183 554/1025/156 552/1024/183 +f 555/946/156 556/1026/176 554/1027/156 +f 557/807/176 558/1028/158 556/1026/176 +f 559/817/158 560/1029/182 558/1028/158 +f 561/795/182 546/1022/161 560/1029/182 +f 562/1030/161 577/1031/177 569/1032/177 +f 568/1033/157 575/1034/183 567/1035/183 +f 566/1036/156 573/1037/176 565/1038/176 +f 564/1039/158 571/1040/182 563/1041/182 +f 569/1032/177 576/1042/157 568/1033/157 +f 567/1035/183 574/1043/156 566/1044/156 +f 565/1038/176 572/1045/158 564/1039/158 +f 563/1041/182 570/1046/161 562/1030/161 +f 583/950/176 592/1047/158 584/816/158 +f 581/951/183 590/1048/156 582/818/156 +f 578/805/177 588/1049/157 580/806/157 +f 584/796/158 593/1050/182 585/797/182 +f 582/808/156 591/1051/176 583/809/176 +f 580/949/157 589/1052/183 581/814/183 +f 579/948/161 586/1053/177 578/812/177 +f 585/947/182 587/1054/161 579/810/161 +f 609/835/179 597/839/204 594/960/204 +f 606/957/205 611/827/175 607/824/175 +f 607/824/175 612/840/177 608/832/177 +f 608/832/177 613/837/179 609/835/179 +f 299/1055/181 634/1056/156 298/1057/156 +f 301/1058/173 636/1059/183 300/1060/183 +f 303/1061/175 638/1062/157 302/1063/157 +f 298/1057/156 649/1064/178 313/1065/178 +f 307/1066/180 642/1067/161 306/1068/161 +f 302/1063/157 637/1069/173 301/1058/173 +f 305/1070/179 640/1071/177 304/1072/177 +f 311/1073/174 646/1074/158 310/1075/158 +f 312/1076/176 647/1077/174 311/1073/174 +f 306/1078/161 641/1079/179 305/1070/179 +f 300/1060/183 635/1080/181 299/1055/181 +f 309/1081/172 644/1082/182 308/1083/182 +f 304/1072/177 639/1084/175 303/1061/175 +f 310/1075/158 645/1085/172 309/1081/172 +f 313/1065/178 648/1086/176 312/1076/176 +f 308/1083/182 643/1087/180 307/1066/180 +f 618/849/179 630/853/204 633/962/204 +f 621/961/205 616/830/175 620/844/175 +f 620/844/175 615/854/177 619/846/177 +f 619/846/177 614/851/179 618/849/179 +f 317/858/172 333/580/172 334/582/158 +f 325/560/173 341/597/173 342/568/157 +f 318/540/158 334/582/158 335/584/174 +f 326/563/157 342/568/157 343/567/175 +f 319/859/174 335/584/174 336/586/176 +f 327/857/175 343/567/175 344/570/177 +f 320/545/176 336/586/176 337/588/178 +f 328/523/177 344/570/177 345/572/179 +f 321/860/178 337/588/178 338/590/156 +f 314/530/161 330/574/161 331/576/180 +f 329/526/179 345/572/179 330/574/161 +f 322/861/156 338/593/156 339/592/181 +f 315/533/180 331/576/180 332/578/182 +f 323/553/181 339/592/181 340/595/183 +f 316/536/182 332/578/182 333/580/172 +f 324/557/183 340/595/183 341/597/173 +f 354/963/161 370/623/161 371/613/180 +f 347/965/181 363/601/181 364/600/183 +f 355/964/180 371/613/180 372/612/182 +f 348/966/183 364/600/183 365/622/173 +f 356/967/182 372/612/182 373/610/172 +f 349/968/173 365/622/173 366/621/157 +f 357/969/172 373/610/172 374/609/158 +f 350/970/157 366/621/157 367/619/175 +f 358/971/158 374/609/158 375/607/174 +f 351/972/175 367/619/175 368/618/177 +f 359/973/174 375/607/174 376/606/176 +f 352/974/177 368/618/177 369/616/179 +f 360/975/176 376/606/176 377/602/178 +f 353/976/179 369/616/179 370/615/161 +f 346/979/156 362/604/156 363/601/181 +f 361/977/178 377/602/178 362/604/156 +f 435/980/184 436/990/169 444/981/185 +f 440/983/168 441/993/193 449/984/187 +f 439/986/189 447/994/194 446/987/190 +f 437/989/191 445/996/195 444/981/185 +f 434/991/155 435/980/184 443/982/186 +f 434/991/155 442/992/192 449/984/187 +f 439/986/189 440/983/168 448/985/188 +f 438/995/154 446/1088/190 445/996/195 +f 447/994/194 455/1003/202 454/997/196 +f 444/981/185 445/996/195 453/998/197 +f 442/992/192 443/982/186 451/1000/199 +f 442/992/192 450/1001/200 457/1002/201 +f 448/985/188 456/1005/203 455/1003/202 +f 445/996/195 446/1088/190 454/1004/196 +f 443/982/186 444/981/185 452/999/198 +f 449/984/187 457/1002/201 456/1005/203 +f 456/1005/203 457/1002/201 465/1006/193 +f 454/997/196 455/1003/202 463/1008/189 +f 452/999/198 453/998/197 461/696/191 +f 450/1001/200 451/1000/199 459/1011/184 +f 450/1001/200 458/1012/155 465/1006/193 +f 455/1003/202 456/1005/203 464/1007/168 +f 454/1004/196 462/910/154 461/696/191 +f 452/999/198 460/1010/169 459/1011/184 +f 467/701/184 475/1018/184 474/1013/155 +f 466/710/155 474/1013/155 481/1014/193 +f 472/694/168 480/1019/168 479/1015/189 +f 470/697/154 478/1089/154 477/1016/191 +f 467/701/184 468/700/169 476/1017/169 +f 472/694/168 473/703/193 481/1014/193 +f 470/705/154 471/695/189 479/1015/189 +f 469/698/191 477/1016/191 476/1017/169 +f 547/811/161 549/813/177 548/1021/177 +f 549/813/177 551/804/157 550/1023/157 +f 551/804/157 553/815/183 552/1024/183 +f 553/815/183 555/819/156 554/1025/156 +f 555/946/156 557/807/176 556/1026/176 +f 557/807/176 559/817/158 558/1028/158 +f 559/817/158 561/795/182 560/1029/182 +f 561/795/182 547/811/161 546/1022/161 +f 562/1030/161 570/1046/161 577/1031/177 +f 568/1033/157 576/1042/157 575/1034/183 +f 566/1036/156 574/1090/156 573/1037/176 +f 564/1039/158 572/1045/158 571/1040/182 +f 569/1032/177 577/1031/177 576/1042/157 +f 567/1035/183 575/1034/183 574/1043/156 +f 565/1038/176 573/1037/176 572/1045/158 +f 563/1041/182 571/1040/182 570/1046/161 +f 583/950/176 591/1091/176 592/1047/158 +f 581/951/183 589/1092/183 590/1048/156 +f 578/805/177 586/1093/177 588/1049/157 +f 584/796/158 592/1094/158 593/1050/182 +f 582/808/156 590/1095/156 591/1051/176 +f 580/949/157 588/1096/157 589/1052/183 +f 579/948/161 587/1097/161 586/1053/177 +f 585/947/182 593/1098/182 587/1054/161 +f 609/835/179 613/837/179 597/839/204 +f 606/957/205 599/828/205 611/827/175 +f 607/824/175 611/827/175 612/840/177 +f 608/832/177 612/840/177 613/837/179 +f 299/1055/181 635/1080/181 634/1056/156 +f 301/1058/173 637/1069/173 636/1059/183 +f 303/1061/175 639/1084/175 638/1062/157 +f 298/1057/156 634/1056/156 649/1064/178 +f 307/1066/180 643/1087/180 642/1067/161 +f 302/1063/157 638/1062/157 637/1069/173 +f 305/1070/179 641/1079/179 640/1071/177 +f 311/1073/174 647/1077/174 646/1074/158 +f 312/1076/176 648/1086/176 647/1077/174 +f 306/1078/161 642/1099/161 641/1079/179 +f 300/1060/183 636/1059/183 635/1080/181 +f 309/1081/172 645/1085/172 644/1082/182 +f 304/1072/177 640/1071/177 639/1084/175 +f 310/1075/158 646/1074/158 645/1085/172 +f 313/1065/178 649/1064/178 648/1086/176 +f 308/1083/182 644/1082/182 643/1087/180 +f 618/849/179 614/851/179 630/853/204 +f 621/961/205 628/831/205 616/830/175 +f 620/844/175 616/830/175 615/854/177 +f 619/846/177 615/854/177 614/851/179 diff --git a/src/main/resources/assets/hbm/models/weapons/uzi.obj b/src/main/resources/assets/hbm/models/weapons/uzi.obj index c6023c32a..101594263 100644 --- a/src/main/resources/assets/hbm/models/weapons/uzi.obj +++ b/src/main/resources/assets/hbm/models/weapons/uzi.obj @@ -1,5 +1,1904 @@ # Blender v2.79 (sub 0) OBJ File: 'uzi.blend' # www.blender.org +o GunMirror +v 0.750000 0.000000 3.250000 +v -0.750000 0.000000 3.250000 +v 0.750000 0.000000 -5.500000 +v -0.750000 0.000000 -5.500000 +v 0.750000 1.500000 3.250000 +v -0.750000 1.500000 3.250000 +v 0.750000 1.500000 -5.500000 +v -0.750000 1.500000 -5.500000 +v 0.000000 1.250000 5.500000 +v 0.250000 1.183012 5.500000 +v 0.433013 1.000000 5.500000 +v 0.500000 0.750000 5.500000 +v 0.433013 0.500000 5.500000 +v 0.250000 0.316988 5.500000 +v 0.000000 0.250000 5.500000 +v -0.250000 0.316987 5.500000 +v -0.433012 0.500000 5.500000 +v -0.500000 0.750000 5.500000 +v -0.433013 1.000000 5.500000 +v -0.250000 1.183012 5.500000 +v 0.000000 1.250000 6.375000 +v 0.250000 1.183012 6.375000 +v 0.433013 1.000000 6.375000 +v 0.500000 0.750000 6.375000 +v 0.433013 0.500000 6.375000 +v 0.250000 0.316988 6.375000 +v 0.000000 0.250000 6.375000 +v -0.250000 0.316987 6.375000 +v -0.433012 0.500000 6.375000 +v -0.500000 0.750000 6.375000 +v -0.433013 1.000000 6.375000 +v -0.250000 1.183012 6.375000 +v 0.000000 1.000000 6.375000 +v 0.125000 0.966506 6.375000 +v 0.216506 0.875000 6.375000 +v 0.250000 0.750000 6.375000 +v 0.216506 0.625000 6.375000 +v 0.125000 0.533494 6.375000 +v 0.000000 0.500000 6.375000 +v -0.125000 0.533494 6.375000 +v -0.216506 0.625000 6.375000 +v -0.250000 0.750000 6.375000 +v -0.216506 0.875000 6.375000 +v -0.125000 0.966506 6.375000 +v 0.000000 1.000000 8.375000 +v 0.125000 0.966506 8.375000 +v 0.216506 0.875000 8.375000 +v 0.250000 0.750000 8.375000 +v 0.216506 0.625000 8.375000 +v 0.125000 0.533494 8.375000 +v 0.000000 0.500000 8.375000 +v -0.125000 0.533494 8.375000 +v -0.216506 0.625000 8.375000 +v -0.250000 0.750000 8.375000 +v -0.216506 0.875000 8.375000 +v -0.125000 0.966506 8.375000 +v 0.000000 0.937500 8.375000 +v 0.093750 0.912380 8.375000 +v 0.162380 0.843750 8.375000 +v 0.187500 0.750000 8.375000 +v 0.162380 0.656250 8.375000 +v 0.093750 0.587620 8.375000 +v 0.000000 0.562500 8.375000 +v -0.093750 0.587620 8.375000 +v -0.162380 0.656250 8.375000 +v -0.187500 0.750000 8.375000 +v -0.162380 0.843750 8.375000 +v -0.093750 0.912380 8.375000 +v 0.000000 0.937500 6.375000 +v 0.093750 0.912380 6.375000 +v 0.162380 0.843750 6.375000 +v 0.187500 0.750000 6.375000 +v 0.162380 0.656250 6.375000 +v 0.093750 0.587620 6.375000 +v 0.000000 0.562500 6.375000 +v -0.093750 0.587620 6.375000 +v -0.162380 0.656250 6.375000 +v -0.187500 0.750000 6.375000 +v -0.162380 0.843750 6.375000 +v -0.093750 0.912380 6.375000 +v 0.875000 -0.250000 1.250000 +v -0.875000 -0.250000 1.250000 +v 0.875000 -0.250000 -2.250000 +v -0.875000 -0.250000 -2.250000 +v 0.875000 0.500000 -2.250000 +v 0.875000 0.500000 1.250000 +v -0.875000 0.500000 1.250000 +v -0.875000 0.500000 -2.250000 +v 0.875000 1.000000 1.375000 +v 0.875000 1.000000 3.250000 +v -0.875000 1.000000 3.250000 +v -0.875000 1.000000 1.375000 +v 0.875000 0.125000 3.250000 +v 0.500000 -0.250000 3.250000 +v -0.500000 -0.250000 3.250000 +v -0.875000 0.125000 3.250000 +v 0.500000 -0.250000 1.375000 +v 0.875000 0.125000 1.375000 +v -0.875000 0.125000 1.375000 +v -0.500000 -0.250000 1.375000 +v 0.750000 0.125000 3.625000 +v 0.500000 -0.250000 3.625000 +v -0.750000 1.000000 3.625000 +v 0.750000 1.000000 3.625000 +v 0.625000 0.000000 3.625000 +v -0.625000 0.000000 3.625000 +v 0.625000 1.500000 3.625000 +v -0.625000 1.500000 3.625000 +v 0.625000 0.000000 5.500000 +v -0.625000 0.000000 5.500000 +v 0.625000 1.500000 5.500000 +v -0.625000 1.500000 5.500000 +v -0.750000 0.125000 3.625000 +v -0.500000 -0.250000 3.625000 +v 0.750000 0.125000 5.375000 +v 0.750000 1.000000 5.375000 +v -0.750000 0.125000 5.375000 +v -0.500000 -0.250000 5.375000 +v 0.500000 -0.250000 5.375000 +v -0.750000 1.000000 5.375000 +v 0.750000 1.500000 3.250000 +v 0.750000 1.500000 -3.750000 +v 0.375000 1.500000 3.250000 +v 0.375000 1.500000 -3.750000 +v 0.750000 1.750000 1.250000 +v 0.750000 1.750000 -1.750000 +v 0.375000 1.750000 1.250000 +v 0.375000 1.750000 -1.750000 +v -0.375000 1.500000 3.250000 +v -0.375000 1.500000 -3.750000 +v -0.750000 1.500000 3.250000 +v -0.750000 1.500000 -3.750000 +v -0.375000 1.750000 1.250000 +v -0.375000 1.750000 -1.750000 +v -0.750000 1.750000 1.250000 +v -0.750000 1.750000 -1.750000 +v -0.375000 1.500000 4.562500 +v -0.375000 1.500000 5.437500 +v -0.375000 1.875000 5.437500 +v -0.375000 2.018506 5.404197 +v -0.375000 2.140165 5.309359 +v -0.375000 2.221455 5.167424 +v -0.500000 1.875000 4.562500 +v -0.500000 2.018506 4.595803 +v -0.500000 2.140165 4.690641 +v -0.500000 2.221455 4.832576 +v -0.500000 2.250000 5.000000 +v -0.500000 2.221455 5.167424 +v -0.500000 2.140165 5.309359 +v -0.500000 2.018506 5.404197 +v -0.500000 1.875000 5.437500 +v -0.375000 2.250000 5.000000 +v -0.375000 2.221455 4.832576 +v -0.375000 2.140165 4.690641 +v -0.375000 2.018506 4.595803 +v -0.375000 1.875000 4.562500 +v -0.500000 1.500000 5.437500 +v -0.500000 1.500000 4.562500 +v -0.375000 2.000000 -5.375000 +v -0.375000 2.167424 -5.327425 +v -0.375000 2.309359 -5.191942 +v -0.375000 2.404197 -4.989178 +v -0.375000 2.437500 -4.750000 +v -0.375000 2.404197 -4.510823 +v -0.375000 2.309359 -4.308059 +v -0.375000 2.167424 -4.172575 +v -0.375000 2.000000 -4.125000 +v -0.500000 2.437500 -4.750000 +v -0.500000 2.404197 -4.989178 +v -0.500000 2.309359 -5.191942 +v -0.500000 2.167424 -5.327425 +v -0.500000 2.000000 -5.375000 +v -0.375000 1.500000 -4.125000 +v -0.375000 1.500000 -5.375000 +v -0.500000 2.404197 -4.510823 +v -0.500000 2.309359 -4.308059 +v -0.500000 2.167424 -4.172575 +v -0.500000 2.000000 -4.125000 +v -0.500000 1.500000 -4.125000 +v -0.500000 1.500000 -5.375000 +v 0.750000 1.500000 -1.500000 +v 0.750000 0.750000 -1.500000 +v 0.750000 0.750000 0.125000 +v 0.750000 1.500000 0.125000 +v 0.750000 1.500000 -1.500000 +v 0.750000 1.500000 0.125000 +v 0.750000 1.750000 -1.500000 +v 0.750000 1.750000 0.125000 +v 0.625000 1.500000 -1.500000 +v 0.625000 0.750000 -1.500000 +v 0.625000 0.750000 0.125000 +v 0.625000 1.500000 0.125000 +v -0.375000 -0.250000 -0.250000 +v 0.375000 -0.250000 -0.250000 +v 0.500000 1.500000 -1.500000 +v 0.500000 1.500000 0.125000 +v 0.500000 1.750000 -1.500000 +v 0.500000 1.750000 0.125000 +v 0.375000 -2.750000 -2.000000 +v -0.375000 -2.750000 -2.000000 +v -0.375000 -3.250000 -0.250000 +v -0.375000 -3.250000 -1.500000 +v 0.375000 -3.250000 -0.250000 +v 0.375000 -3.250000 -1.500000 +v 0.375000 -2.000000 -2.000000 +v -0.375000 -2.000000 -2.000000 +v 0.375000 -1.000000 -1.750000 +v -0.375000 -1.000000 -1.750000 +v 0.375000 -0.500000 -2.250000 +v -0.375000 -0.500000 -2.250000 +v 0.375000 -0.250000 -2.250000 +v -0.375000 -0.250000 -2.250000 +v -0.625000 -2.750000 -1.750000 +v -0.625000 -3.250000 -1.250000 +v -0.625000 -3.250000 -0.375000 +v -0.625000 -0.250000 -0.375000 +v -0.625000 -2.000000 -1.750000 +v -0.625000 -1.000000 -1.500000 +v -0.625000 -0.500000 -2.000000 +v -0.625000 -0.250000 -2.000000 +v 0.625000 -3.250000 -1.250000 +v 0.625000 -2.750000 -1.750000 +v 0.625000 -3.250000 -0.375000 +v 0.625000 -0.250000 -0.375000 +v 0.625000 -2.000000 -1.750000 +v 0.625000 -1.000000 -1.500000 +v 0.625000 -0.500000 -2.000000 +v 0.625000 -0.250000 -2.000000 +v 0.250000 0.000000 1.375000 +v -0.250000 0.000000 1.375000 +v 0.250000 0.000000 1.250000 +v -0.250000 0.000000 1.250000 +v 0.250000 -1.250000 1.375000 +v -0.250000 -1.250000 1.375000 +v 0.250000 -1.250000 1.250000 +v -0.250000 -1.250000 1.250000 +v 0.250000 -1.500000 1.000000 +v -0.250000 -1.500000 1.000000 +v 0.250000 -1.625000 1.000000 +v -0.250000 -1.625000 1.000000 +v 0.250000 -1.500000 0.250000 +v -0.250000 -1.500000 0.250000 +v 0.250000 -1.625000 0.250000 +v -0.250000 -1.625000 0.250000 +v 0.250000 -1.250000 -0.250000 +v -0.250000 -1.250000 -0.250000 +v 0.250000 -1.375000 -0.250000 +v -0.250000 -1.375000 -0.250000 +v 0.156250 -0.250000 0.312500 +v -0.156250 -0.250000 0.312500 +v 0.156250 -0.250000 0.187500 +v -0.156250 -0.250000 0.187500 +v 0.156250 -0.875000 0.312500 +v -0.156250 -0.875000 0.312500 +v 0.156250 -0.875000 0.187500 +v -0.156250 -0.875000 0.187500 +v 0.156250 -1.187500 0.562500 +v -0.156250 -1.187500 0.562500 +v 0.375000 1.500000 5.375000 +v -0.375000 1.500000 5.375000 +v 0.375000 1.500000 4.625000 +v -0.375000 1.500000 4.625000 +v 0.375000 1.625000 4.625000 +v 0.375000 1.625000 5.375000 +v -0.375000 1.625000 5.375000 +v -0.375000 1.625000 4.625000 +v 0.000000 1.625000 4.750000 +v 0.176777 1.625000 4.823223 +v 0.250000 1.625000 5.000000 +v 0.176777 1.625000 5.176777 +v 0.000000 1.625000 5.250000 +v -0.176777 1.625000 5.176777 +v -0.250000 1.625000 5.000000 +v -0.176777 1.625000 4.823223 +v 0.000000 1.687500 4.750000 +v 0.176777 1.687500 4.823223 +v 0.250000 1.687500 5.000000 +v 0.176777 1.687500 5.176777 +v 0.000000 1.687500 5.250000 +v -0.176777 1.687500 5.176777 +v -0.250000 1.687500 5.000000 +v -0.176777 1.687500 4.823223 +v 0.062500 1.687500 5.062500 +v -0.062500 1.687500 5.062500 +v 0.062500 1.687500 4.937500 +v -0.062500 1.687500 4.937500 +v 0.062500 2.187500 4.937500 +v 0.062500 2.187500 5.062500 +v -0.062500 2.187500 5.062500 +v -0.062500 2.187500 4.937500 +v 0.250000 1.500000 -4.250000 +v -0.250000 1.500000 -4.250000 +v 0.250000 1.500000 -5.250000 +v -0.250000 1.500000 -5.250000 +v 0.250000 1.750000 -5.250000 +v 0.250000 1.750000 -4.250000 +v -0.250000 1.750000 -4.250000 +v -0.250000 1.750000 -5.250000 +v -0.250000 1.500000 -4.250000 +v -0.250000 1.500000 -5.250000 +v -0.375000 1.500000 -4.250000 +v -0.375000 1.500000 -5.250000 +v -0.375000 2.000000 -4.250000 +v -0.375000 2.000000 -5.250000 +v -0.250000 2.000000 -4.250000 +v -0.250000 2.000000 -5.250000 +v 0.375000 1.500000 -4.250000 +v 0.375000 1.500000 -5.250000 +v 0.250000 1.500000 -4.250000 +v 0.250000 1.500000 -5.250000 +v 0.250000 2.000000 -4.250000 +v 0.250000 2.000000 -5.250000 +v 0.375000 2.000000 -4.250000 +v 0.375000 2.000000 -5.250000 +v 0.187500 1.750000 -4.625000 +v -0.187500 1.750000 -4.625000 +v 0.187500 1.750000 -4.875000 +v -0.187500 1.750000 -4.875000 +v 0.187500 2.250000 -4.875000 +v 0.187500 2.250000 -4.625000 +v -0.187500 2.250000 -4.625000 +v -0.187500 2.250000 -4.875000 +v 0.062500 2.375000 -4.875000 +v 0.062500 2.375000 -4.625000 +v -0.062500 2.375000 -4.625000 +v -0.062500 2.375000 -4.875000 +v 0.125000 2.250000 -4.625000 +v -0.125000 2.250000 -4.625000 +v 0.125000 2.250000 -4.875000 +v -0.125000 2.250000 -4.875000 +v 0.125000 2.125000 -4.625000 +v -0.125000 2.125000 -4.625000 +v 0.125000 2.125000 -4.875000 +v -0.125000 2.125000 -4.875000 +v -0.062500 2.312500 -4.625000 +v -0.062500 2.062500 -4.625000 +v -0.062500 2.312500 -4.875000 +v -0.062500 2.062500 -4.875000 +v 0.062500 2.312500 -4.625000 +v 0.062500 2.062500 -4.625000 +v 0.062500 2.312500 -4.875000 +v 0.062500 2.062500 -4.875000 +v 0.625000 0.000000 -5.500000 +v -0.625000 0.000000 -5.500000 +v 0.625000 1.000000 -5.500000 +v -0.625000 1.000000 -5.500000 +v 0.625000 1.000000 -5.750000 +v 0.625000 0.000000 -5.750000 +v -0.625000 0.000000 -5.750000 +v -0.625000 1.000000 -5.750000 +v 0.625000 0.750000 -6.000000 +v 0.625000 0.250000 -6.000000 +v -0.625000 0.250000 -6.000000 +v -0.625000 0.750000 -6.000000 +v 0.875000 0.312500 -5.875000 +v -0.875000 0.312500 -5.875000 +v 0.875000 0.224112 -5.838388 +v -0.875000 0.224112 -5.838388 +v 0.875000 0.187500 -5.750000 +v -0.875000 0.187500 -5.750000 +v 0.875000 0.224112 -5.661612 +v -0.875000 0.224112 -5.661612 +v 0.875000 0.312500 -5.625000 +v -0.875000 0.312500 -5.625000 +v 0.875000 0.400888 -5.661612 +v -0.875000 0.400888 -5.661612 +v 0.875000 0.437500 -5.750000 +v -0.875000 0.437500 -5.750000 +v 0.875000 0.400888 -5.838388 +v -0.875000 0.400888 -5.838388 +v 0.500000 1.500000 4.562500 +v 0.500000 1.500000 5.437500 +v 0.500000 1.875000 5.437500 +v 0.500000 2.018506 5.404197 +v 0.500000 2.140165 5.309359 +v 0.500000 2.221455 5.167424 +v 0.375000 1.875000 4.562500 +v 0.375000 2.018506 4.595803 +v 0.375000 2.140165 4.690641 +v 0.375000 2.221455 4.832576 +v 0.375000 2.250000 5.000000 +v 0.375000 2.221455 5.167424 +v 0.375000 2.140165 5.309359 +v 0.375000 2.018506 5.404197 +v 0.375000 1.875000 5.437500 +v 0.500000 2.250000 5.000000 +v 0.500000 2.221455 4.832576 +v 0.500000 2.140165 4.690641 +v 0.500000 2.018506 4.595803 +v 0.500000 1.875000 4.562500 +v 0.375000 1.500000 5.437500 +v 0.375000 1.500000 4.562500 +v 0.500000 2.000000 -5.375000 +v 0.500000 2.167424 -5.327425 +v 0.500000 2.309359 -5.191942 +v 0.500000 2.404197 -4.989178 +v 0.500000 2.437500 -4.750000 +v 0.500000 2.404197 -4.510823 +v 0.500000 2.309359 -4.308059 +v 0.500000 2.167424 -4.172575 +v 0.500000 2.000000 -4.125000 +v 0.375000 2.437500 -4.750000 +v 0.375000 2.404197 -4.989178 +v 0.375000 2.309359 -5.191942 +v 0.375000 2.167424 -5.327425 +v 0.375000 2.000000 -5.375000 +v 0.500000 1.500000 -4.125000 +v 0.500000 1.500000 -5.375000 +v 0.375000 2.404197 -4.510823 +v 0.375000 2.309359 -4.308059 +v 0.375000 2.167424 -4.172575 +v 0.375000 2.000000 -4.125000 +v 0.375000 1.500000 -4.125000 +v 0.375000 1.500000 -5.375000 +vt 0.336066 0.391304 +vt 0.049180 0.521739 +vt 0.336066 0.521739 +vt 0.336066 0.260870 +vt 0.049180 0.391304 +vt 0.049180 0.260870 +vt 0.000000 0.130435 +vt -0.000000 0.260870 +vt 0.348361 0.130435 +vt 0.336066 0.000000 +vt 0.336066 0.130435 +vt 0.663934 0.277174 +vt 0.655738 0.260870 +vt 0.655738 0.282609 +vt 0.663934 0.385870 +vt 0.655738 0.369565 +vt 0.655738 0.391304 +vt 0.663934 0.190217 +vt 0.655738 0.173913 +vt 0.655738 0.195652 +vt 0.655738 0.304348 +vt 0.663934 0.288043 +vt 0.663934 0.244565 +vt 0.655738 0.239130 +vt 0.663934 0.353261 +vt 0.655738 0.347826 +vt 0.663934 0.157609 +vt 0.655738 0.152174 +vt 0.663934 0.222826 +vt 0.655738 0.217391 +vt 0.663934 0.342391 +vt 0.655738 0.326087 +vt 0.655738 0.413043 +vt 0.663934 0.396739 +vt 0.663934 0.211957 +vt 0.663934 0.320652 +vt 0.706967 0.510870 +vt 0.704918 0.500000 +vt 0.704918 0.510870 +vt 0.706967 0.565217 +vt 0.704918 0.554348 +vt 0.704918 0.565217 +vt 0.706967 0.543478 +vt 0.704918 0.532609 +vt 0.704918 0.543478 +vt 0.706967 0.597826 +vt 0.704918 0.586957 +vt 0.704918 0.597826 +vt 0.706967 0.489130 +vt 0.704918 0.489130 +vt 0.706967 0.532609 +vt 0.704918 0.521739 +vt 0.706967 0.586957 +vt 0.704918 0.576087 +vt 0.706967 0.478261 +vt 0.704918 0.478261 +vt 0.706967 0.521739 +vt 0.706967 0.576087 +vt 0.704918 0.608696 +vt 0.663102 0.470094 +vt 0.657787 0.445681 +vt 0.652472 0.470094 +vt 0.598361 0.282609 +vt 0.483607 0.434783 +vt 0.598361 0.434783 +vt 0.483607 0.065217 +vt 0.598361 0.217391 +vt 0.598361 0.065217 +vt 0.483607 0.217391 +vt 0.459016 0.065217 +vt 0.459016 0.217391 +vt 0.622951 0.217391 +vt 0.622951 0.065217 +vt 0.483607 0.282609 +vt 0.598361 0.000000 +vt 0.483607 0.000000 +vt 0.663934 -0.000000 +vt 0.725410 0.152174 +vt 0.725410 0.000000 +vt 0.622951 0.119565 +vt 0.622951 0.032609 +vt 0.409836 0.391304 +vt 0.348361 0.260870 +vt 0.348361 0.391304 +vt 0.348361 0.250000 +vt 0.348361 0.510870 +vt 0.409836 0.141304 +vt 0.459016 0.250000 +vt 0.459016 0.141304 +vt 0.409836 0.510870 +vt 0.348361 0.402174 +vt 0.409836 0.130435 +vt 0.348361 -0.000000 +vt 0.409836 0.250000 +vt 0.348361 0.141304 +vt 0.737705 0.141304 +vt 0.823770 0.141304 +vt 0.836066 0.119565 +vt 0.836066 0.032609 +vt 0.795082 0.141304 +vt 0.737705 0.010870 +vt 0.639344 0.510870 +vt 0.475410 0.489130 +vt 0.409836 0.510870 +vt 0.573770 0.456522 +vt 0.536885 0.434783 +vt 0.536885 0.456522 +vt 0.483607 0.434783 +vt 0.475410 0.456522 +vt 0.483607 0.456522 +vt 0.639344 0.586956 +vt 0.475410 0.565217 +vt 0.409836 0.586956 +vt 0.475410 0.532609 +vt 0.639344 0.510870 +vt 0.409836 0.510870 +vt 0.733772 0.750000 +vt 0.747951 0.782232 +vt 0.762129 0.750000 +vt 0.742525 0.779778 +vt 0.737925 0.772791 +vt 0.733772 0.750000 +vt 0.692623 0.798848 +vt 0.713082 0.760865 +vt 0.672164 0.760865 +vt 0.684794 0.795957 +vt 0.678156 0.787723 +vt 0.672164 0.760865 +vt 0.180328 0.065217 +vt 0.049180 0.130435 +vt 0.180328 0.130435 +vt 0.233607 0.065217 +vt 0.233607 0.130435 +vt 0.467213 0.260870 +vt 0.471311 0.326087 +vt 0.471311 0.260870 +vt 0.413934 0.260870 +vt 0.467213 0.250000 +vt 0.413934 0.250000 +vt 0.413934 0.326087 +vt 0.409836 0.260870 +vt 0.409836 0.326087 +vt 0.471311 0.413043 +vt 0.479508 0.434783 +vt 0.479508 0.413043 +vt 0.418033 0.434783 +vt 0.409836 0.413043 +vt 0.409836 0.434783 +vt 0.471311 0.434783 +vt 0.418033 0.413043 +vt 0.483607 0.478261 +vt 0.180328 0.141304 +vt 0.528689 0.695652 +vt 0.536885 0.608696 +vt 0.495902 0.608696 +vt 0.467213 0.326087 +vt 0.717213 0.673913 +vt 0.676230 0.663043 +vt 0.676230 0.673913 +vt 0.717213 0.619565 +vt 0.676230 0.608696 +vt 0.676230 0.619565 +vt 0.733607 0.619565 +vt 0.719262 0.608696 +vt 0.719262 0.673913 +vt 0.733607 0.663043 +vt 0.717213 0.663043 +vt 0.758197 0.673913 +vt 0.733607 0.673913 +vt 0.758197 0.619565 +vt 0.733607 0.608696 +vt 0.774590 0.619565 +vt 0.758197 0.608696 +vt 0.774590 0.663043 +vt 0.758197 0.663043 +vt 0.668033 0.722826 +vt 0.657787 0.777174 +vt 0.668033 0.777174 +vt 0.653689 0.722826 +vt 0.643443 0.777174 +vt 0.653689 0.777174 +vt 0.657787 0.722826 +vt 0.672131 0.722826 +vt 0.672131 0.777174 +vt 0.653689 0.695652 +vt 0.643443 0.722826 +vt 0.657787 0.695652 +vt 0.672131 0.695652 +vt 0.536885 0.478261 +vt 0.573770 0.489130 +vt 0.741803 0.793478 +vt 0.766393 0.858696 +vt 0.766393 0.793478 +vt 0.741803 0.858696 +vt 0.737705 0.793478 +vt 0.737705 0.858696 +vt 0.770492 0.858696 +vt 0.770492 0.793478 +vt 0.813518 0.744565 +vt 0.821721 0.766322 +vt 0.829925 0.744565 +vt 0.651639 0.853261 +vt 0.684426 0.809783 +vt 0.651639 0.809783 +vt 0.829918 0.777174 +vt 0.834016 0.766304 +vt 0.829918 0.766304 +vt 0.838115 0.766304 +vt 0.842213 0.722826 +vt 0.838115 0.722826 +vt 0.834016 0.722826 +vt 0.829918 0.722826 +vt 0.842213 0.766304 +vt 0.846311 0.722826 +vt 0.696721 0.809783 +vt 0.729508 0.853261 +vt 0.729508 0.809783 +vt 0.684426 0.864130 +vt 0.684426 0.853261 +vt 0.684426 0.864130 +vt 0.651639 0.853261 +vt 0.651639 0.864130 +vt 0.696721 0.853261 +vt 0.688525 0.809783 +vt 0.688525 0.853261 +vt 0.737705 0.853261 +vt 0.737705 0.809783 +vt 0.688525 0.809783 +vt 0.647541 0.853261 +vt 0.651639 0.809783 +vt 0.647541 0.809783 +vt 0.647541 0.853261 +vt 0.647541 0.809783 +vt 0.684426 0.853261 +vt 0.688525 0.809783 +vt 0.684426 0.809783 +vt 0.635246 0.842391 +vt 0.631148 0.847826 +vt 0.635246 0.847826 +vt 0.631148 0.842391 +vt 0.627049 0.836957 +vt 0.639344 0.836957 +vt 0.614754 0.847826 +vt 0.610656 0.842391 +vt 0.610656 0.847826 +vt 0.606557 0.836957 +vt 0.608607 0.836957 +vt 0.618852 0.836957 +vt 0.614754 0.842391 +vt 0.608607 0.826087 +vt 0.606557 0.793478 +vt 0.616803 0.826087 +vt 0.618562 0.793404 +vt 0.610656 0.820652 +vt 0.614754 0.820652 +vt 0.637295 0.826087 +vt 0.639344 0.793478 +vt 0.629098 0.826087 +vt 0.627049 0.793478 +vt 0.631148 0.820652 +vt 0.635246 0.820652 +vt 0.643443 0.951087 +vt 0.659836 0.885870 +vt 0.643443 0.907609 +vt 0.602459 0.907609 +vt 0.586066 0.972826 +vt 0.602459 0.951087 +vt 0.524591 0.978309 +vt 0.520510 0.989130 +vt 0.524591 0.999951 +vt 0.524590 0.956569 +vt 0.521705 0.959739 +vt 0.527475 0.975042 +vt 0.733772 0.750000 +vt 0.747951 0.782232 +vt 0.762129 0.750000 +vt 0.742525 0.779778 +vt 0.737925 0.772791 +vt 0.733772 0.750000 +vt 0.692623 0.798848 +vt 0.713082 0.760865 +vt 0.672164 0.760865 +vt 0.684794 0.795957 +vt 0.678156 0.787723 +vt 0.672164 0.760865 +vt 0.663934 0.266304 +vt 0.663934 0.375000 +vt 0.663934 0.179348 +vt 0.663934 0.298913 +vt 0.663934 0.255435 +vt 0.663934 0.364130 +vt 0.663934 0.168478 +vt 0.663934 0.233696 +vt 0.663934 0.331522 +vt 0.663934 0.407609 +vt 0.663934 0.201087 +vt 0.663934 0.309783 +vt 0.706967 0.500000 +vt 0.706967 0.554348 +vt 0.706967 0.608696 +vt 0.654719 0.476052 +vt 0.657787 0.478232 +vt 0.660855 0.476052 +vt 0.663924 0.461957 +vt 0.663102 0.453819 +vt 0.660855 0.447861 +vt 0.654719 0.447861 +vt 0.652472 0.453819 +vt 0.651650 0.461957 +vt 0.663934 0.152174 +vt 0.635246 0.152174 +vt 0.635246 0.000000 +vt 0.409836 0.260870 +vt 0.409836 0.402174 +vt 0.409836 0.000000 +vt 0.823770 0.010870 +vt 0.795082 0.010870 +vt 0.639344 0.434783 +vt 0.409836 0.434783 +vt 0.573770 0.565217 +vt 0.573770 0.532609 +vt 0.734852 0.762334 +vt 0.737925 0.772791 +vt 0.742525 0.779778 +vt 0.753377 0.779778 +vt 0.757977 0.772791 +vt 0.761050 0.762334 +vt 0.762129 0.717768 +vt 0.733772 0.717768 +vt 0.734852 0.762334 +vt 0.733772 0.717768 +vt 0.762129 0.717768 +vt 0.762129 0.750000 +vt 0.761050 0.762334 +vt 0.757977 0.772791 +vt 0.747951 0.782232 +vt 0.753377 0.779778 +vt 0.673721 0.775401 +vt 0.678156 0.787723 +vt 0.684794 0.795957 +vt 0.700452 0.795957 +vt 0.707090 0.787723 +vt 0.711525 0.775401 +vt 0.713082 0.717456 +vt 0.672164 0.717456 +vt 0.673721 0.775401 +vt 0.672164 0.717456 +vt 0.713082 0.717456 +vt 0.713082 0.760865 +vt 0.711525 0.775401 +vt 0.707090 0.787723 +vt 0.692623 0.798848 +vt 0.700452 0.795957 +vt 0.049180 -0.000000 +vt 0.233607 0.141304 +vt 0.536885 0.673913 +vt 0.528689 0.586957 +vt 0.500000 0.586957 +vt 0.495902 0.673913 +vt 0.500000 0.695652 +vt 0.717213 0.608696 +vt 0.731557 0.608696 +vt 0.731557 0.673913 +vt 0.774590 0.608696 +vt 0.774590 0.673913 +vt 0.643443 0.695652 +vt 0.668033 0.695652 +vt 0.827522 0.729181 +vt 0.821721 0.722809 +vt 0.815921 0.729181 +vt 0.815921 0.759950 +vt 0.827522 0.759950 +vt 0.834016 0.777174 +vt 0.846311 0.766304 +vt 0.651639 0.864130 +vt 0.688525 0.853261 +vt 0.688525 0.853261 +vt 0.629098 0.836957 +vt 0.637295 0.836957 +vt 0.616803 0.836957 +vt 0.651639 0.972826 +vt 0.659836 0.972826 +vt 0.651639 0.885870 +vt 0.594262 0.885870 +vt 0.586066 0.885870 +vt 0.594262 0.972826 +vt 0.528671 0.989130 +vt 0.527476 0.981478 +vt 0.521705 0.981478 +vt 0.521705 0.996782 +vt 0.527476 0.996782 +vt 0.520510 0.967391 +vt 0.521705 0.975042 +vt 0.524590 0.978212 +vt 0.528670 0.967391 +vt 0.527475 0.959739 +vt 0.734852 0.762334 +vt 0.737925 0.772791 +vt 0.742525 0.779778 +vt 0.753377 0.779778 +vt 0.757977 0.772791 +vt 0.761050 0.762334 +vt 0.762129 0.717768 +vt 0.733772 0.717768 +vt 0.734852 0.762334 +vt 0.733772 0.717768 +vt 0.762129 0.717768 +vt 0.762129 0.750000 +vt 0.761050 0.762334 +vt 0.757977 0.772791 +vt 0.747951 0.782232 +vt 0.753377 0.779778 +vt 0.673721 0.775401 +vt 0.678156 0.787723 +vt 0.684794 0.795957 +vt 0.700452 0.795957 +vt 0.707090 0.787723 +vt 0.711525 0.775401 +vt 0.713082 0.717456 +vt 0.672164 0.717456 +vt 0.673721 0.775401 +vt 0.672164 0.717456 +vt 0.713082 0.717456 +vt 0.713082 0.760865 +vt 0.711525 0.775401 +vt 0.707090 0.787723 +vt 0.692623 0.798848 +vt 0.700452 0.795957 +vt 0.627049 0.217391 +vt 0.627049 0.239130 +vt 0.627049 0.326087 +vt 0.627049 0.347826 +vt 0.627049 0.391304 +vt 0.627049 0.413043 +vt 0.627049 0.195652 +vt 0.627049 0.304348 +vt 0.627049 0.260870 +vt 0.627049 0.282609 +vt 0.627049 0.369565 +vt 0.627049 0.173913 +vt 0.627049 0.152174 +vt 0.639344 0.554348 +vt 0.639344 0.565217 +vt 0.639344 0.532609 +vt 0.639344 0.543478 +vt 0.639344 0.586957 +vt 0.639344 0.597826 +vt 0.639344 0.489130 +vt 0.639344 0.500000 +vt 0.639344 0.521739 +vt 0.639344 0.576087 +vt 0.639344 0.478261 +vt 0.639344 0.510870 +vt 0.639344 0.608696 +vt 0.772541 0.510870 +vt 0.772541 0.565217 +vt 0.772541 0.543478 +vt 0.772541 0.597826 +vt 0.772541 0.500000 +vt 0.772541 0.554348 +vt 0.772541 0.532609 +vt 0.772541 0.586957 +vt 0.772541 0.489130 +vt 0.772541 0.521739 +vt 0.772541 0.576087 +vt 0.772541 0.608696 +vt 0.725410 0.271739 +vt 0.737705 0.233696 +vt 0.725410 0.228261 +vt 0.663934 0.358696 +vt 0.725410 0.358696 +vt 0.663934 0.228261 +vt 0.663934 0.402174 +vt 0.663934 0.271739 +vt 0.663934 0.478261 +vt 0.725410 0.402174 +vt 0.795082 0.271739 +vt 0.737705 0.271739 +vt 0.737705 0.396739 +vt 0.737705 0.478261 +vt 0.725410 0.478261 +vt 0.737705 0.228261 +vt 0.737705 0.358696 +vt 0.795082 0.228261 +vt 0.737705 0.152174 +vt 0.795082 0.396739 +vt 0.795082 0.478261 +vt 0.737705 0.402174 +vt 0.795082 0.358696 +vt 0.639344 0.489130 +vt 0.639344 0.456522 +vt 0.409836 0.456522 +vt 0.409836 0.489130 +vt 0.639344 0.565217 +vt 0.639344 0.532609 +vt 0.409836 0.532609 +vt 0.409836 0.565217 +vt 0.741803 0.782609 +vt 0.735656 0.793478 +vt 0.741803 0.793478 +vt 0.760246 0.782609 +vt 0.754098 0.793478 +vt 0.760246 0.793478 +vt 0.725410 0.782609 +vt 0.713115 0.793478 +vt 0.725410 0.793478 +vt 0.735656 0.782609 +vt 0.729508 0.793478 +vt 0.754098 0.782609 +vt 0.747951 0.793478 +vt 0.782787 0.782609 +vt 0.770492 0.793478 +vt 0.782787 0.793478 +vt 0.770492 0.782609 +vt 0.766393 0.793478 +vt 0.729508 0.782609 +vt 0.747951 0.782609 +vt 0.766393 0.782609 +vt 0.709016 0.809783 +vt 0.715164 0.798913 +vt 0.709016 0.798913 +vt 0.684426 0.809783 +vt 0.692623 0.798913 +vt 0.684426 0.798913 +vt 0.663934 0.809783 +vt 0.670082 0.798913 +vt 0.663934 0.798913 +vt 0.715164 0.809783 +vt 0.721311 0.798913 +vt 0.721311 0.809783 +vt 0.737705 0.798913 +vt 0.692623 0.809783 +vt 0.700820 0.798913 +vt 0.670082 0.809783 +vt 0.676230 0.798913 +vt 0.647541 0.809783 +vt 0.647541 0.798913 +vt 0.700820 0.809783 +vt 0.676230 0.809783 +vt 0.561475 0.934783 +vt 0.586066 0.891304 +vt 0.561475 0.891304 +vt 0.491803 0.695652 +vt 0.467213 0.956522 +vt 0.491803 0.956522 +vt 0.561475 0.804348 +vt 0.586066 0.739130 +vt 0.561475 0.739130 +vt 0.586066 0.695652 +vt 0.561475 0.695652 +vt 0.586066 0.804348 +vt 0.561475 0.956522 +vt 0.586066 0.934783 +vt 0.545082 0.739130 +vt 0.553279 0.804348 +vt 0.553279 0.739130 +vt 0.553279 0.956522 +vt 0.561475 0.934783 +vt 0.561475 0.956522 +vt 0.545082 0.804348 +vt 0.545082 0.891304 +vt 0.553279 0.934783 +vt 0.500000 0.956522 +vt 0.536885 0.695652 +vt 0.528689 0.695652 +vt 0.545082 0.804348 +vt 0.500000 0.695652 +vt 0.459016 0.695652 +vt 0.467213 0.695652 +vt 0.545082 0.891304 +vt 0.553279 0.804348 +vt 0.553279 0.934783 +vt 0.545082 0.739130 +vt 0.536885 0.695652 +vt 0.553279 0.739130 +vt 0.536885 0.891304 +vt 0.538934 0.891304 +vt 0.717213 0.717391 +vt 0.676230 0.717391 +vt 0.731557 0.717391 +vt 0.719262 0.717391 +vt 0.758197 0.717391 +vt 0.733607 0.717391 +vt 0.774590 0.717391 +vt 0.793033 0.755435 +vt 0.799180 0.750000 +vt 0.793033 0.750000 +vt 0.780738 0.755435 +vt 0.786885 0.750000 +vt 0.780738 0.750000 +vt 0.768443 0.755435 +vt 0.774590 0.750000 +vt 0.768443 0.750000 +vt 0.805328 0.755435 +vt 0.811475 0.750000 +vt 0.805328 0.750000 +vt 0.786885 0.755435 +vt 0.774590 0.755435 +vt 0.762295 0.755435 +vt 0.762295 0.750000 +vt 0.799180 0.755435 +vt 0.606557 0.853261 +vt 0.598361 0.847826 +vt 0.598361 0.853261 +vt 0.647541 0.793478 +vt 0.627049 0.858696 +vt 0.618852 0.847826 +vt 0.618852 0.858696 +vt 0.639344 0.847826 +vt 0.647541 0.836957 +vt 0.606557 0.798913 +vt 0.598361 0.788043 +vt 0.598361 0.798913 +vt 0.598361 0.804348 +vt 0.606557 0.815217 +vt 0.606557 0.804348 +vt 0.606557 0.847826 +vt 0.598361 0.836957 +vt 0.598361 0.831522 +vt 0.606557 0.836957 +vt 0.606557 0.831522 +vt 0.598361 0.820652 +vt 0.606557 0.820652 +vt 0.598361 0.815217 +vt 0.500000 0.956522 +vt 0.643443 0.972826 +vt 0.602459 0.994565 +vt 0.643443 0.994565 +vt 0.602459 0.885870 +vt 0.643443 0.864130 +vt 0.602459 0.864130 +vt 0.602459 0.972826 +vt 0.643443 0.885870 +vt 0.586066 0.961957 +vt 0.528689 0.967391 +vt 0.586066 0.967391 +vt 0.586066 0.956522 +vt 0.528689 0.961957 +vt 0.586066 0.994565 +vt 0.528689 1.000000 +vt 0.586066 1.000000 +vt 0.586066 0.989130 +vt 0.528689 0.994565 +vt 0.586066 0.983696 +vt 0.528689 0.989130 +vt 0.586066 0.978261 +vt 0.528689 0.983696 +vt 0.586066 0.972826 +vt 0.528689 0.978261 +vt 0.528689 0.972826 +vt 0.553279 0.956522 +vt 0.741803 0.782609 +vt 0.735656 0.793478 +vt 0.741803 0.793478 +vt 0.760246 0.782609 +vt 0.754098 0.793478 +vt 0.760246 0.793478 +vt 0.725410 0.782609 +vt 0.713115 0.793478 +vt 0.725410 0.793478 +vt 0.735656 0.782609 +vt 0.729508 0.793478 +vt 0.754098 0.782609 +vt 0.747951 0.793478 +vt 0.782787 0.782609 +vt 0.770492 0.793478 +vt 0.782787 0.793478 +vt 0.770492 0.782609 +vt 0.766393 0.793478 +vt 0.729508 0.782609 +vt 0.747951 0.782609 +vt 0.766393 0.782609 +vt 0.709016 0.809783 +vt 0.715164 0.798913 +vt 0.709016 0.798913 +vt 0.684426 0.809783 +vt 0.692623 0.798913 +vt 0.684426 0.798913 +vt 0.663934 0.809783 +vt 0.670082 0.798913 +vt 0.663934 0.798913 +vt 0.715164 0.809783 +vt 0.721311 0.798913 +vt 0.721311 0.809783 +vt 0.737705 0.798913 +vt 0.692623 0.809783 +vt 0.700820 0.798913 +vt 0.670082 0.809783 +vt 0.676230 0.798913 +vt 0.647541 0.809783 +vt 0.647541 0.798913 +vt 0.700820 0.809783 +vt 0.676230 0.809783 +vt 0.772541 0.478261 +vt 0.795082 0.233696 +vt 0.795082 0.152174 +vt 0.795082 0.402174 +vt 0.713115 0.782609 +vt 0.737705 0.809783 +vt 0.586066 0.956522 +vt 0.459016 0.956522 +vt 0.811475 0.755435 +vt 0.627049 0.847826 +vt 0.647541 0.847826 +vt 0.606557 0.788043 +vt 0.528689 0.956522 +vt 0.713115 0.782609 +vt 0.737705 0.809783 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.9487 0.0000 0.3162 +vn -0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -0.9487 0.0000 0.3162 +vn 0.0000 0.6247 0.7809 +vn 0.0000 -0.7682 -0.6402 +vn 0.8660 0.5000 0.0000 +vn -0.8660 0.5000 0.0000 +vn -0.5000 -0.8660 0.0000 +vn 0.8660 -0.5000 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.8660 -0.5000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn -0.4072 -0.9129 0.0287 +vn -0.9363 -0.3291 0.1225 +vn -0.9188 -0.3671 0.1452 +vn 0.3827 -0.9239 0.0000 +vn 0.4072 -0.9129 0.0287 +vn -0.9871 0.0000 0.1602 +vn -0.9239 -0.3827 0.0000 +vn 0.9239 -0.3827 0.0000 +vn -0.3827 -0.9239 0.0000 +vn 0.9188 -0.3671 0.1452 +vn -0.4719 -0.8817 0.0000 +vn 0.9363 -0.3291 0.1225 +vn 0.9871 0.0000 0.1602 +vn 0.4719 -0.8817 0.0000 +vn -0.9571 -0.2898 0.0000 +vn 0.9571 -0.2898 0.0000 +vn 0.0000 0.9923 0.1240 +vn 0.0000 0.9923 -0.1240 +vn 0.0000 0.9981 0.0621 +vn 0.0000 0.9981 -0.0621 +vn 0.0000 0.9412 -0.3377 +vn 0.0000 0.7555 -0.6552 +vn 0.0000 0.7555 0.6552 +vn 0.0000 0.9412 0.3377 +vn 0.0000 0.1138 -0.9935 +vn 0.0000 0.4305 -0.9026 +vn 0.0000 0.1138 0.9935 +vn 0.0000 0.4305 0.9026 +vn 0.0000 0.8121 0.5835 +vn 0.0000 0.4965 0.8681 +vn 0.0000 0.9588 -0.2840 +vn 0.0000 0.1380 -0.9904 +vn 0.0000 0.4964 -0.8681 +vn 0.0000 0.1380 0.9904 +vn 0.0000 0.9588 0.2840 +vn 0.0000 0.8121 -0.5835 +vn -0.3416 -0.3416 -0.8756 +vn 0.4148 -0.2800 -0.8658 +vn -0.4148 -0.2800 -0.8658 +vn -0.2298 0.0000 0.9732 +vn 0.2298 0.0000 0.9732 +vn -0.3711 0.1112 -0.9219 +vn 0.3416 -0.3416 -0.8756 +vn 0.3458 -0.6635 -0.6635 +vn -0.3458 -0.6635 -0.6635 +vn 0.3711 0.1112 -0.9219 +vn -0.3827 0.0000 -0.9239 +vn -0.8727 -0.2257 -0.4330 +vn 0.9239 0.0000 -0.3827 +vn 0.3827 0.0000 -0.9239 +vn -0.9607 -0.1962 -0.1962 +vn -0.9123 0.0530 -0.4062 +vn -0.8507 0.0000 0.5257 +vn 0.9607 -0.1962 -0.1962 +vn 0.9123 0.0530 -0.4062 +vn 0.8507 0.0000 0.5257 +vn 0.8727 -0.2257 -0.4330 +vn -0.9626 -0.0605 -0.2642 +vn 0.9626 -0.0605 -0.2642 +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.9732 -0.2298 +vn 0.0000 0.9732 0.2298 +vn 0.0000 0.8944 0.4472 +vn 0.0000 -0.8944 -0.4472 +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.9239 0.3827 0.0000 +vn 0.9239 0.3827 0.0000 +vn 0.3827 0.9239 0.0000 +vn -0.3827 0.9239 0.0000 +vn 0.0000 -0.9239 -0.3827 +vn 0.0000 -0.3827 -0.9239 +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.9239 0.0000 -0.3827 +s off +f 2/1/1 3/2/1 1/3/1 +f 6/4/2 4/5/2 2/1/2 +f 8/6/3 3/7/3 4/8/3 +f 107/9/4 1/10/4 5/11/4 +f 33/12/5 22/13/5 21/14/5 +f 40/15/5 29/16/5 28/17/5 +f 37/18/5 26/19/5 25/20/5 +f 32/21/5 33/22/5 21/14/5 +f 22/13/5 35/23/5 23/24/5 +f 29/16/5 42/25/5 30/26/5 +f 26/19/5 39/27/5 27/28/5 +f 23/24/5 36/29/5 24/30/5 +f 42/31/5 31/32/5 30/26/5 +f 27/33/5 40/34/5 28/17/5 +f 36/35/5 25/20/5 24/30/5 +f 43/36/5 32/21/5 31/32/5 +f 60/37/5 49/38/5 48/39/5 +f 67/40/5 56/41/5 55/42/5 +f 57/43/5 46/44/5 45/45/5 +f 64/46/5 53/47/5 52/48/5 +f 49/38/5 62/49/5 50/50/5 +f 56/41/5 57/43/5 45/45/5 +f 58/51/5 47/52/5 46/44/5 +f 65/53/5 54/54/5 53/47/5 +f 50/50/5 63/55/5 51/56/5 +f 59/57/5 48/39/5 47/52/5 +f 66/58/5 55/42/5 54/54/5 +f 51/59/5 64/46/5 52/48/5 +f 79/60/5 75/61/5 71/62/5 +f 82/63/1 83/64/1 81/65/1 +f 85/66/6 87/67/6 86/68/6 +f 88/69/3 83/70/3 84/71/3 +f 86/68/5 82/72/5 81/73/5 +f 87/67/2 84/74/2 82/63/2 +f 85/66/7 81/75/7 83/76/7 +f 89/77/6 91/78/6 90/79/6 +f 100/80/3 89/77/3 97/81/3 +f 110/82/2 108/83/2 106/84/2 +f 106/84/8 6/4/8 2/1/8 +f 108/85/6 5/11/6 6/4/6 +f 105/86/1 2/1/1 1/3/1 +f 111/87/5 110/88/5 109/89/5 +f 109/90/1 106/91/1 105/86/1 +f 111/92/7 105/93/7 107/9/7 +f 112/94/6 107/95/6 108/85/6 +f 103/96/6 90/79/6 91/78/6 +f 117/97/5 118/98/5 119/99/5 +f 120/100/6 104/101/6 103/96/6 +f 123/102/2 128/103/2 124/104/2 +f 125/105/7 186/106/7 188/107/7 +f 185/108/7 126/109/7 187/110/7 +f 131/111/2 136/112/2 132/113/2 +f 134/114/7 129/115/7 130/116/7 +f 156/117/7 152/118/7 139/119/7 +f 146/120/2 145/121/2 143/122/2 +f 163/123/7 167/124/7 159/125/7 +f 169/126/2 170/127/2 172/128/2 +f 182/129/7 7/130/7 181/131/7 +f 1/10/7 182/129/7 183/132/7 +f 5/11/7 183/132/7 184/133/7 +f 191/134/3 184/135/3 183/136/3 +f 190/137/6 183/138/6 182/139/6 +f 189/140/5 182/141/5 181/142/5 +f 196/143/3 188/144/3 186/145/3 +f 197/146/5 185/147/5 187/148/5 +f 198/149/7 195/150/7 197/146/7 +f 126/109/6 197/151/6 187/110/6 +f 189/152/6 7/130/6 8/6/6 +f 214/153/1 204/154/1 203/155/1 +f 192/156/7 190/137/7 189/140/7 +f 236/157/2 230/158/2 232/159/2 +f 233/160/7 231/161/7 229/162/7 +f 239/163/7 235/164/7 233/160/7 +f 236/165/2 240/166/2 234/167/2 +f 242/168/2 240/166/2 238/169/2 +f 243/170/7 237/171/7 239/163/7 +f 247/172/7 241/173/7 243/170/7 +f 242/168/2 248/174/2 244/175/2 +f 255/176/3 252/177/3 251/178/3 +f 254/179/5 249/180/5 250/181/5 +f 256/182/2 250/181/2 252/177/2 +f 253/183/7 251/178/7 249/184/7 +f 258/185/9 253/186/9 254/179/9 +f 255/176/10 258/187/10 256/182/10 +f 253/183/7 257/188/7 255/176/7 +f 254/179/2 256/182/2 258/185/2 +f 128/103/6 198/189/6 197/151/6 +f 125/105/6 198/189/6 127/190/6 +f 263/191/6 265/192/6 264/193/6 +f 266/194/3 261/195/3 262/196/3 +f 264/193/5 260/197/5 259/198/5 +f 281/199/6 279/200/6 277/201/6 +f 306/202/7 299/203/7 300/204/7 +f 287/205/6 289/206/6 288/207/6 +f 290/208/3 285/209/3 286/210/3 +f 288/207/5 284/211/5 283/212/5 +f 289/206/2 286/210/2 284/211/2 +f 287/213/7 283/214/7 285/209/7 +f 295/215/6 297/216/6 296/217/6 +f 306/202/6 303/218/6 305/219/6 +f 314/220/6 311/221/6 313/222/6 +f 298/223/3 293/224/3 294/225/3 +f 296/217/5 292/226/5 291/227/5 +f 305/219/5 301/228/5 299/203/5 +f 313/229/5 309/230/5 307/231/5 +f 304/232/3 300/204/3 302/233/3 +f 312/234/3 308/235/3 310/236/3 +f 310/236/2 311/221/2 312/234/2 +f 341/237/3 326/238/3 323/239/3 +f 337/240/3 322/241/3 326/238/3 +f 319/242/3 341/237/3 323/239/3 +f 325/243/5 339/244/5 324/245/5 +f 320/246/5 339/244/5 327/247/5 +f 321/248/5 335/249/5 325/243/5 +f 320/246/5 331/250/5 315/251/5 +f 332/252/5 321/248/5 316/253/5 +f 340/254/5 336/255/5 316/253/5 +f 333/256/3 319/242/3 317/257/3 +f 322/241/3 334/258/3 318/259/3 +f 338/260/3 342/261/3 317/257/3 +f 351/262/7 343/263/7 352/264/7 +f 353/265/2 346/266/2 354/267/2 +f 360/268/2 364/269/2 368/270/2 +f 359/271/7 357/272/7 365/273/7 +f 390/274/7 386/275/7 373/276/7 +f 380/277/2 379/278/2 377/279/2 +f 397/280/7 401/281/7 393/282/7 +f 403/283/2 404/284/2 406/285/2 +f 2/1/1 4/5/1 3/2/1 +f 6/4/2 8/6/2 4/5/2 +f 8/6/3 7/130/3 3/7/3 +f 107/9/4 105/93/4 1/10/4 +f 33/12/5 34/286/5 22/13/5 +f 40/15/5 41/287/5 29/16/5 +f 37/18/5 38/288/5 26/19/5 +f 32/21/5 44/289/5 33/22/5 +f 22/13/5 34/290/5 35/23/5 +f 29/16/5 41/291/5 42/25/5 +f 26/19/5 38/292/5 39/27/5 +f 23/24/5 35/293/5 36/29/5 +f 42/31/5 43/294/5 31/32/5 +f 27/33/5 39/295/5 40/34/5 +f 36/35/5 37/296/5 25/20/5 +f 43/36/5 44/297/5 32/21/5 +f 60/37/5 61/298/5 49/38/5 +f 67/40/5 68/299/5 56/41/5 +f 57/43/5 58/51/5 46/44/5 +f 64/46/5 65/53/5 53/47/5 +f 49/38/5 61/298/5 62/49/5 +f 56/41/5 68/299/5 57/43/5 +f 58/51/5 59/57/5 47/52/5 +f 65/53/5 66/58/5 54/54/5 +f 50/50/5 62/49/5 63/55/5 +f 59/57/5 60/37/5 48/39/5 +f 66/58/5 67/40/5 55/42/5 +f 51/59/5 63/300/5 64/46/5 +f 71/62/5 70/301/5 79/60/5 +f 70/301/5 69/302/5 79/60/5 +f 69/302/5 80/303/5 79/60/5 +f 79/60/5 78/304/5 77/305/5 +f 77/305/5 76/306/5 75/61/5 +f 75/61/5 74/307/5 71/62/5 +f 74/307/5 73/308/5 71/62/5 +f 73/308/5 72/309/5 71/62/5 +f 79/60/5 77/305/5 75/61/5 +f 82/63/1 84/74/1 83/64/1 +f 85/66/6 88/69/6 87/67/6 +f 88/69/3 85/66/3 83/70/3 +f 86/68/5 87/67/5 82/72/5 +f 87/67/2 88/69/2 84/74/2 +f 85/66/7 86/68/7 81/75/7 +f 89/77/6 92/310/6 91/78/6 +f 100/80/3 99/311/3 92/310/3 +f 92/310/3 89/77/3 100/80/3 +f 89/77/3 98/312/3 97/81/3 +f 110/82/2 112/313/2 108/83/2 +f 106/84/8 108/83/8 6/4/8 +f 108/85/6 107/95/6 5/11/6 +f 105/86/1 106/91/1 2/1/1 +f 111/87/5 112/94/5 110/88/5 +f 109/90/1 110/314/1 106/91/1 +f 111/92/7 109/315/7 105/93/7 +f 112/94/6 111/87/6 107/95/6 +f 103/96/6 104/101/6 90/79/6 +f 119/99/5 115/316/5 117/97/5 +f 115/316/5 116/317/5 117/97/5 +f 116/317/5 120/100/5 117/97/5 +f 120/100/6 116/317/6 104/101/6 +f 123/102/2 127/190/2 128/103/2 +f 125/105/7 121/318/7 186/106/7 +f 185/108/7 122/319/7 126/109/7 +f 131/111/2 135/320/2 136/112/2 +f 134/114/7 133/321/7 129/115/7 +f 156/117/7 155/322/7 154/323/7 +f 154/323/7 153/324/7 156/117/7 +f 153/324/7 152/118/7 156/117/7 +f 152/118/7 142/325/7 139/119/7 +f 142/325/7 141/326/7 139/119/7 +f 141/326/7 140/327/7 139/119/7 +f 139/119/7 138/328/7 137/329/7 +f 137/329/7 156/117/7 139/119/7 +f 145/121/2 144/330/2 143/122/2 +f 143/122/2 158/331/2 157/332/2 +f 157/332/2 151/333/2 143/122/2 +f 151/333/2 150/334/2 149/335/2 +f 143/122/2 151/333/2 147/336/2 +f 149/335/2 148/337/2 151/333/2 +f 148/337/2 147/336/2 151/333/2 +f 147/336/2 146/120/2 143/122/2 +f 159/125/7 160/338/7 161/339/7 +f 161/339/7 162/340/7 159/125/7 +f 162/340/7 163/123/7 159/125/7 +f 163/123/7 164/341/7 167/124/7 +f 164/341/7 165/342/7 167/124/7 +f 165/342/7 166/343/7 167/124/7 +f 167/124/7 173/344/7 174/345/7 +f 174/345/7 159/125/7 167/124/7 +f 170/127/2 171/346/2 172/128/2 +f 172/128/2 180/347/2 179/348/2 +f 179/348/2 178/349/2 172/128/2 +f 178/349/2 177/350/2 176/351/2 +f 172/128/2 178/349/2 168/352/2 +f 176/351/2 175/353/2 178/349/2 +f 175/353/2 168/352/2 178/349/2 +f 168/352/2 169/126/2 172/128/2 +f 182/129/7 3/354/7 7/130/7 +f 1/10/7 3/354/7 182/129/7 +f 5/11/7 1/10/7 183/132/7 +f 191/134/3 192/156/3 184/135/3 +f 190/137/6 191/134/6 183/138/6 +f 189/140/5 190/137/5 182/141/5 +f 196/143/3 198/149/3 188/144/3 +f 197/146/5 195/150/5 185/147/5 +f 198/149/7 196/143/7 195/150/7 +f 126/109/6 128/103/6 197/151/6 +f 8/6/6 6/4/6 189/152/6 +f 6/4/6 5/11/6 192/355/6 +f 5/11/6 184/133/6 192/355/6 +f 189/152/6 181/131/6 7/130/6 +f 6/4/6 192/355/6 189/152/6 +f 214/153/1 202/356/1 204/154/1 +f 204/154/1 221/357/1 203/155/1 +f 221/357/1 223/358/1 203/155/1 +f 203/155/1 201/359/1 214/153/1 +f 201/359/1 215/360/1 214/153/1 +f 192/156/7 191/134/7 190/137/7 +f 236/157/2 234/167/2 230/158/2 +f 233/160/7 235/361/7 231/161/7 +f 239/163/7 237/362/7 235/164/7 +f 236/165/2 238/363/2 240/166/2 +f 242/168/2 244/175/2 240/166/2 +f 243/170/7 241/173/7 237/171/7 +f 247/172/7 245/364/7 241/173/7 +f 242/168/2 246/365/2 248/174/2 +f 255/176/3 256/182/3 252/177/3 +f 254/179/5 253/186/5 249/180/5 +f 256/182/2 254/179/2 250/181/2 +f 253/183/7 255/176/7 251/178/7 +f 258/185/9 257/366/9 253/186/9 +f 255/176/10 257/367/10 258/187/10 +f 128/103/6 127/190/6 198/189/6 +f 125/105/6 188/107/6 198/189/6 +f 263/191/6 266/194/6 265/192/6 +f 266/194/3 263/191/3 261/195/3 +f 264/193/5 265/192/5 260/197/5 +f 277/201/6 276/368/6 275/369/6 +f 275/369/6 282/370/6 281/199/6 +f 281/199/6 280/371/6 279/200/6 +f 279/200/6 278/372/6 277/201/6 +f 277/201/6 275/369/6 281/199/6 +f 306/202/7 305/219/7 299/203/7 +f 287/205/6 290/373/6 289/206/6 +f 290/208/3 287/213/3 285/209/3 +f 288/207/5 289/206/5 284/211/5 +f 289/206/2 290/208/2 286/210/2 +f 287/213/7 288/374/7 283/214/7 +f 295/215/6 298/223/6 297/216/6 +f 306/202/6 304/375/6 303/218/6 +f 314/220/6 312/234/6 311/221/6 +f 298/223/3 295/215/3 293/224/3 +f 296/217/5 297/216/5 292/226/5 +f 305/219/5 303/376/5 301/228/5 +f 313/229/5 311/221/5 309/230/5 +f 304/232/3 306/202/3 300/204/3 +f 312/234/3 314/377/3 308/235/3 +f 310/236/2 309/230/2 311/221/2 +f 341/237/3 337/240/3 326/238/3 +f 337/240/3 330/378/3 322/241/3 +f 319/242/3 329/379/3 341/237/3 +f 325/243/5 335/249/5 339/244/5 +f 320/246/5 324/245/5 339/244/5 +f 321/248/5 328/380/5 335/249/5 +f 320/246/5 327/247/5 331/250/5 +f 332/252/5 328/380/5 321/248/5 +f 336/255/5 332/252/5 316/253/5 +f 316/253/5 315/251/5 340/254/5 +f 315/251/5 331/250/5 340/254/5 +f 333/256/3 329/379/3 319/242/3 +f 322/241/3 330/378/3 334/258/3 +f 342/261/3 333/256/3 317/257/3 +f 317/257/3 318/259/3 338/260/3 +f 318/259/3 334/258/3 338/260/3 +f 351/262/7 347/381/7 345/382/7 +f 345/382/7 343/263/7 351/262/7 +f 343/263/7 348/383/7 352/264/7 +f 353/265/2 349/384/2 344/385/2 +f 344/385/2 346/266/2 353/265/2 +f 346/266/2 350/386/2 354/267/2 +f 356/387/2 358/388/2 360/268/2 +f 360/268/2 362/389/2 364/269/2 +f 364/269/2 366/390/2 368/270/2 +f 368/270/2 370/391/2 356/387/2 +f 356/387/2 360/268/2 368/270/2 +f 357/272/7 355/392/7 369/393/7 +f 369/393/7 367/394/7 357/272/7 +f 367/394/7 365/273/7 357/272/7 +f 365/273/7 363/395/7 361/396/7 +f 361/396/7 359/271/7 365/273/7 +f 390/274/7 389/397/7 388/398/7 +f 388/398/7 387/399/7 390/274/7 +f 387/399/7 386/275/7 390/274/7 +f 386/275/7 376/400/7 373/276/7 +f 376/400/7 375/401/7 373/276/7 +f 375/401/7 374/402/7 373/276/7 +f 373/276/7 372/403/7 371/404/7 +f 371/404/7 390/274/7 373/276/7 +f 379/278/2 378/405/2 377/279/2 +f 377/279/2 392/406/2 391/407/2 +f 391/407/2 385/408/2 377/279/2 +f 385/408/2 384/409/2 383/410/2 +f 377/279/2 385/408/2 381/411/2 +f 383/410/2 382/412/2 385/408/2 +f 382/412/2 381/411/2 385/408/2 +f 381/411/2 380/277/2 377/279/2 +f 393/282/7 394/413/7 395/414/7 +f 395/414/7 396/415/7 393/282/7 +f 396/415/7 397/280/7 393/282/7 +f 397/280/7 398/416/7 401/281/7 +f 398/416/7 399/417/7 401/281/7 +f 399/417/7 400/418/7 401/281/7 +f 401/281/7 407/419/7 408/420/7 +f 408/420/7 393/282/7 401/281/7 +f 404/284/2 405/421/2 406/285/2 +f 406/285/2 414/422/2 413/423/2 +f 413/423/2 412/424/2 406/285/2 +f 412/424/2 411/425/2 410/426/2 +f 406/285/2 412/424/2 402/427/2 +f 410/426/2 409/428/2 412/424/2 +f 409/428/2 402/427/2 412/424/2 +f 402/427/2 403/283/2 406/285/2 +s 1 +f 23/24/11 12/429/7 11/430/11 +f 30/26/2 19/431/12 18/432/2 +f 27/33/1 16/433/13 15/434/1 +f 24/30/7 13/435/14 12/429/7 +f 31/32/12 20/436/15 19/431/12 +f 21/14/6 10/437/16 9/438/6 +f 28/17/13 17/439/17 16/433/13 +f 25/20/14 14/440/18 13/435/14 +f 32/21/15 9/438/6 20/436/15 +f 22/13/16 11/430/11 10/437/16 +f 29/16/17 18/432/2 17/439/17 +f 26/19/18 15/441/1 14/440/18 +f 55/42/12 44/442/15 43/443/12 +f 45/45/6 34/444/16 33/445/6 +f 52/48/13 41/446/17 40/447/13 +f 49/38/14 38/448/18 37/449/14 +f 56/41/15 33/445/6 44/442/15 +f 46/44/16 35/450/11 34/444/16 +f 53/47/17 42/451/2 41/446/17 +f 50/50/18 39/452/1 38/448/18 +f 47/52/11 36/453/7 35/450/11 +f 54/54/2 43/443/12 42/451/2 +f 51/59/1 40/447/13 39/454/1 +f 48/39/7 37/449/14 36/453/7 +f 72/455/2 61/298/12 60/37/2 +f 79/456/14 68/299/18 67/40/14 +f 69/457/1 58/51/13 57/43/1 +f 76/458/16 65/53/11 64/46/16 +f 73/459/12 62/49/15 61/298/12 +f 80/460/18 57/43/1 68/299/18 +f 70/461/13 59/57/17 58/51/13 +f 77/462/11 66/58/7 65/53/11 +f 74/463/15 63/55/6 62/49/15 +f 71/464/17 60/37/2 59/57/17 +f 78/465/7 67/40/14 66/58/7 +f 75/466/6 64/46/16 63/300/6 +f 95/467/19 113/468/20 96/469/21 +f 95/467/19 97/470/22 94/471/23 +f 91/78/24 99/472/25 96/469/21 +f 98/473/26 94/471/23 97/470/22 +f 96/469/21 100/474/27 95/467/19 +f 89/475/7 93/476/28 98/473/26 +f 118/477/29 113/468/20 114/478/29 +f 101/479/30 94/471/23 93/476/28 +f 104/480/31 93/476/28 90/481/31 +f 113/482/20 91/78/24 96/469/21 +f 102/483/32 95/467/19 94/471/23 +f 117/484/33 103/485/24 113/482/20 +f 115/486/34 102/483/32 101/479/30 +f 116/487/7 101/488/30 104/480/31 +f 119/489/32 114/478/29 102/483/32 +f 125/105/35 123/490/35 121/491/35 +f 128/103/36 122/492/36 124/493/36 +f 133/321/37 131/494/35 129/495/35 +f 136/112/38 130/496/36 132/497/36 +f 136/112/38 133/321/37 134/114/38 +f 153/498/39 145/499/40 146/500/39 +f 141/501/41 148/502/42 149/503/41 +f 156/504/43 158/505/3 143/506/43 +f 154/507/40 144/508/44 145/499/40 +f 142/509/42 147/510/6 148/502/42 +f 138/511/5 151/512/45 157/513/5 +f 139/514/45 150/515/46 151/512/45 +f 155/516/44 143/506/43 144/508/44 +f 152/517/6 146/500/39 147/510/6 +f 140/518/46 149/503/41 150/515/46 +f 176/519/47 166/520/48 165/521/47 +f 169/522/49 163/523/6 162/524/49 +f 172/525/50 160/526/51 159/527/50 +f 177/528/48 167/529/52 166/520/48 +f 178/530/52 173/531/5 167/529/52 +f 168/532/6 164/533/53 163/523/6 +f 171/534/51 161/535/54 160/526/51 +f 180/536/3 159/527/50 174/537/3 +f 175/538/53 165/521/47 164/533/53 +f 170/539/54 162/524/49 161/535/54 +f 210/540/55 207/541/56 208/542/57 +f 201/543/58 194/544/59 193/545/58 +f 206/546/60 199/547/61 200/548/55 +f 200/548/55 204/549/62 202/550/63 +f 208/542/57 205/551/64 206/546/60 +f 212/552/65 209/553/61 210/540/55 +f 213/554/66 206/555/60 200/556/55 +f 228/557/67 209/558/61 211/559/68 +f 214/153/69 217/560/70 213/554/66 +f 208/561/57 219/562/66 210/540/55 +f 219/562/66 212/552/65 210/540/55 +f 216/563/71 201/543/58 193/545/58 +f 217/560/70 208/561/57 206/555/60 +f 202/564/63 213/554/66 200/556/55 +f 221/565/72 225/566/73 223/567/74 +f 223/568/74 194/544/59 203/569/59 +f 207/570/56 225/566/73 205/571/64 +f 227/572/75 207/570/56 209/558/61 +f 222/573/75 204/574/62 199/575/61 +f 225/566/73 199/575/61 205/571/64 +f 215/360/71 218/576/76 217/560/70 +f 225/566/73 226/577/77 223/567/74 +f 235/578/78 232/159/3 231/579/3 +f 234/167/79 229/162/5 230/158/5 +f 237/580/80 236/165/78 235/581/78 +f 240/166/81 233/160/79 234/167/79 +f 244/175/82 239/163/81 240/166/81 +f 241/582/83 238/169/80 237/583/80 +f 245/584/84 242/168/83 241/582/83 +f 248/174/85 243/170/82 244/175/82 +f 282/585/86 267/586/3 274/587/86 +f 280/588/87 273/589/2 272/590/87 +f 278/591/88 271/592/5 270/593/88 +f 276/594/89 269/595/7 268/596/89 +f 281/597/2 274/587/86 273/589/2 +f 279/598/5 272/590/87 271/592/5 +f 277/599/7 270/593/88 269/600/7 +f 275/601/3 268/596/89 267/586/3 +f 341/602/27 327/603/25 339/604/27 +f 321/248/90 318/259/2 316/253/2 +f 319/242/91 315/605/7 317/257/7 +f 323/606/92 325/607/93 324/608/92 +f 325/607/93 322/241/90 321/248/90 +f 323/609/92 320/610/91 319/242/91 +f 337/611/22 339/612/27 335/613/22 +f 328/614/26 337/611/22 335/613/22 +f 328/614/26 334/615/91 330/616/26 +f 329/617/25 331/618/90 327/603/25 +f 340/619/93 333/620/90 342/621/93 +f 336/622/92 342/621/93 338/623/92 +f 332/624/91 338/623/92 334/615/91 +f 218/576/76 215/360/71 216/563/71 +f 226/577/77 224/625/74 223/567/74 +f 347/626/80 346/627/6 345/628/6 +f 349/629/94 343/630/1 344/631/1 +f 353/265/95 351/262/78 352/264/95 +f 351/262/78 350/632/80 347/626/80 +f 353/265/95 348/633/94 349/629/94 +f 357/634/96 356/635/3 355/636/3 +f 359/637/1 358/638/96 357/634/96 +f 361/639/97 360/640/1 359/641/1 +f 363/642/5 362/643/97 361/639/97 +f 365/644/98 364/645/5 363/642/5 +f 367/646/6 366/647/98 365/644/98 +f 369/648/99 368/649/6 367/646/6 +f 355/636/3 370/650/99 369/648/99 +f 216/563/71 220/651/100 218/576/76 +f 220/651/100 219/562/66 218/576/76 +f 228/557/67 226/577/77 227/572/75 +f 224/625/74 226/577/77 228/557/67 +f 387/652/39 379/653/40 380/654/39 +f 375/655/41 382/656/42 383/657/41 +f 390/658/43 392/659/3 377/660/43 +f 388/661/40 378/662/44 379/653/40 +f 376/663/42 381/664/6 382/656/42 +f 372/665/5 385/666/45 391/667/5 +f 373/668/45 384/669/46 385/666/45 +f 389/670/44 377/660/43 378/662/44 +f 386/671/6 380/654/39 381/664/6 +f 374/672/46 383/657/41 384/669/46 +f 410/673/47 400/674/48 399/675/47 +f 403/676/49 397/677/6 396/678/49 +f 406/679/50 394/680/51 393/681/50 +f 411/682/48 401/683/52 400/674/48 +f 412/684/52 407/685/5 401/683/52 +f 402/686/6 398/687/53 397/677/6 +f 405/688/51 395/689/54 394/680/51 +f 414/690/3 393/681/50 408/691/3 +f 409/692/53 399/675/47 398/687/53 +f 404/693/54 396/678/49 395/689/54 +f 23/24/11 24/30/7 12/429/7 +f 30/26/2 31/32/12 19/431/12 +f 27/33/1 28/17/13 16/433/13 +f 24/30/7 25/20/14 13/435/14 +f 31/32/12 32/21/15 20/436/15 +f 21/14/6 22/13/16 10/437/16 +f 28/17/13 29/16/17 17/439/17 +f 25/20/14 26/19/18 14/440/18 +f 32/21/15 21/14/6 9/438/6 +f 22/13/16 23/24/11 11/430/11 +f 29/16/17 30/26/2 18/432/2 +f 26/19/18 27/28/1 15/441/1 +f 55/42/12 56/41/15 44/442/15 +f 45/45/6 46/44/16 34/444/16 +f 52/48/13 53/47/17 41/446/17 +f 49/38/14 50/50/18 38/448/18 +f 56/41/15 45/45/6 33/445/6 +f 46/44/16 47/52/11 35/450/11 +f 53/47/17 54/54/2 42/451/2 +f 50/50/18 51/56/1 39/452/1 +f 47/52/11 48/39/7 36/453/7 +f 54/54/2 55/42/12 43/443/12 +f 51/59/1 52/48/13 40/447/13 +f 48/39/7 49/38/14 37/449/14 +f 72/455/2 73/459/12 61/298/12 +f 79/456/14 80/460/18 68/299/18 +f 69/457/1 70/461/13 58/51/13 +f 76/458/16 77/462/11 65/53/11 +f 73/459/12 74/463/15 62/49/15 +f 80/460/18 69/457/1 57/43/1 +f 70/461/13 71/464/17 59/57/17 +f 77/462/11 78/465/7 66/58/7 +f 74/463/15 75/694/6 63/55/6 +f 71/464/17 72/455/2 60/37/2 +f 78/465/7 79/456/14 67/40/14 +f 75/466/6 76/458/16 64/46/16 +f 95/467/19 114/478/29 113/468/20 +f 95/467/19 100/474/27 97/470/22 +f 91/78/24 92/310/2 99/472/25 +f 98/473/26 93/476/28 94/471/23 +f 96/469/21 99/472/25 100/474/27 +f 89/475/7 90/481/31 93/476/28 +f 118/477/29 117/695/33 113/468/20 +f 101/479/30 102/483/32 94/471/23 +f 104/480/31 101/488/30 93/476/28 +f 113/482/20 103/485/24 91/78/24 +f 102/483/32 114/478/29 95/467/19 +f 117/484/33 120/696/2 103/485/24 +f 115/486/34 119/489/32 102/483/32 +f 116/487/7 115/697/34 101/488/30 +f 119/489/32 118/477/29 114/478/29 +f 125/105/35 127/190/35 123/490/35 +f 128/103/36 126/109/36 122/492/36 +f 133/321/37 135/320/37 131/494/35 +f 136/112/38 134/114/38 130/496/36 +f 136/112/38 135/320/37 133/321/37 +f 153/498/39 154/507/40 145/499/40 +f 141/501/41 142/509/42 148/502/42 +f 156/504/43 137/698/3 158/505/3 +f 154/507/40 155/516/44 144/508/44 +f 142/509/42 152/517/6 147/510/6 +f 138/511/5 139/514/45 151/512/45 +f 139/514/45 140/518/46 150/515/46 +f 155/516/44 156/504/43 143/506/43 +f 152/517/6 153/498/39 146/500/39 +f 140/518/46 141/501/41 149/503/41 +f 176/519/47 177/528/48 166/520/48 +f 169/522/49 168/532/6 163/523/6 +f 172/525/50 171/534/51 160/526/51 +f 177/528/48 178/530/52 167/529/52 +f 178/530/52 179/699/5 173/531/5 +f 168/532/6 175/538/53 164/533/53 +f 171/534/51 170/539/54 161/535/54 +f 180/536/3 172/525/50 159/527/50 +f 175/538/53 176/519/47 165/521/47 +f 170/539/54 169/522/49 162/524/49 +f 210/540/55 209/553/61 207/541/56 +f 201/543/58 203/569/59 194/544/59 +f 206/546/60 205/551/64 199/547/61 +f 200/548/55 199/547/61 204/549/62 +f 208/542/57 207/541/56 205/551/64 +f 212/552/65 211/700/68 209/553/61 +f 213/554/66 217/560/70 206/555/60 +f 228/557/67 227/572/75 209/558/61 +f 214/153/69 215/360/71 217/560/70 +f 208/561/57 218/576/76 219/562/66 +f 219/562/66 220/651/100 212/552/65 +f 216/563/71 215/360/71 201/543/58 +f 217/560/70 218/576/76 208/561/57 +f 202/564/63 214/153/69 213/554/66 +f 221/565/72 222/573/75 225/566/73 +f 223/568/74 224/701/74 194/544/59 +f 207/570/56 226/577/77 225/566/73 +f 227/572/75 226/577/77 207/570/56 +f 222/573/75 221/565/72 204/574/62 +f 225/566/73 222/573/75 199/575/61 +f 235/578/78 236/157/78 232/159/3 +f 234/167/79 233/160/79 229/162/5 +f 237/580/80 238/363/80 236/165/78 +f 240/166/81 239/163/81 233/160/79 +f 244/175/82 243/170/82 239/163/81 +f 241/582/83 242/168/83 238/169/80 +f 245/584/84 246/365/84 242/168/83 +f 248/174/85 247/172/85 243/170/82 +f 282/585/86 275/601/3 267/586/3 +f 280/588/87 281/597/2 273/589/2 +f 278/591/88 279/598/5 271/592/5 +f 276/594/89 277/702/7 269/595/7 +f 281/597/2 282/585/86 274/587/86 +f 279/598/5 280/588/87 272/590/87 +f 277/599/7 278/591/88 270/593/88 +f 275/601/3 276/594/89 268/596/89 +f 341/602/27 329/617/25 327/603/25 +f 321/248/90 322/241/90 318/259/2 +f 319/242/91 320/610/91 315/605/7 +f 323/606/92 326/703/93 325/607/93 +f 325/607/93 326/703/93 322/241/90 +f 323/609/92 324/704/92 320/610/91 +f 337/611/22 341/705/27 339/612/27 +f 328/614/26 330/616/26 337/611/22 +f 328/614/26 332/624/91 334/615/91 +f 329/617/25 333/620/90 331/618/90 +f 340/619/93 331/618/90 333/620/90 +f 336/622/92 340/619/93 342/621/93 +f 332/624/91 336/622/92 338/623/92 +f 347/626/80 350/632/80 346/627/6 +f 349/629/94 348/633/94 343/630/1 +f 353/265/95 354/267/78 351/262/78 +f 351/262/78 354/267/78 350/632/80 +f 353/265/95 352/264/95 348/633/94 +f 357/634/96 358/638/96 356/635/3 +f 359/637/1 360/706/1 358/638/96 +f 361/639/97 362/643/97 360/640/1 +f 363/642/5 364/645/5 362/643/97 +f 365/644/98 366/647/98 364/645/5 +f 367/646/6 368/649/6 366/647/98 +f 369/648/99 370/650/99 368/649/6 +f 355/636/3 356/635/3 370/650/99 +f 387/652/39 388/661/40 379/653/40 +f 375/655/41 376/663/42 382/656/42 +f 390/658/43 371/707/3 392/659/3 +f 388/661/40 389/670/44 378/662/44 +f 376/663/42 386/671/6 381/664/6 +f 372/665/5 373/668/45 385/666/45 +f 373/668/45 374/672/46 384/669/46 +f 389/670/44 390/658/43 377/660/43 +f 386/671/6 387/652/39 380/654/39 +f 374/672/46 375/655/41 383/657/41 +f 410/673/47 411/682/48 400/674/48 +f 403/676/49 402/686/6 397/677/6 +f 406/679/50 405/688/51 394/680/51 +f 411/682/48 412/684/52 401/683/52 +f 412/684/52 413/708/5 407/685/5 +f 402/686/6 409/692/53 398/687/53 +f 405/688/51 404/693/54 395/689/54 +f 414/690/3 406/679/50 393/681/50 +f 409/692/53 410/673/47 399/675/47 +f 404/693/54 403/676/49 396/678/49 o Slide v -0.125500 1.625000 2.562500 v -0.312500 1.625000 2.375500 @@ -101,47 +2000,47 @@ vn -0.7071 -0.0000 0.7071 vn -0.7071 -0.0000 -0.7071 vn 0.7071 -0.0000 -0.7071 s off -f 25/1/1 28/2/1 26/3/1 -f 19/4/2 10/5/2 11/6/2 -f 18/7/2 15/8/2 17/9/2 -f 24/10/3 21/11/3 22/12/3 -f 22/13/4 28/2/4 24/10/4 -f 23/14/5 25/15/5 21/16/5 -f 24/10/2 27/17/2 23/14/2 -f 25/1/1 27/17/1 28/2/1 -f 19/4/2 20/18/2 10/5/2 -f 18/7/2 14/19/2 15/8/2 -f 24/10/3 23/14/3 21/11/3 -f 22/13/4 26/20/4 28/2/4 -f 23/14/5 27/17/5 25/15/5 -f 24/10/2 28/2/2 27/17/2 +f 439/709/101 442/710/101 440/711/101 +f 433/712/102 424/713/102 425/714/102 +f 432/715/102 429/716/102 431/717/102 +f 438/718/103 435/719/103 436/720/103 +f 436/721/104 442/710/104 438/718/104 +f 437/722/105 439/723/105 435/724/105 +f 438/718/102 441/725/102 437/722/102 +f 439/709/101 441/725/101 442/710/101 +f 433/712/102 434/726/102 424/713/102 +f 432/715/102 428/727/102 429/716/102 +f 438/718/103 437/722/103 435/719/103 +f 436/721/104 440/728/104 442/710/104 +f 437/722/105 441/725/105 439/723/105 +f 438/718/102 442/710/102 441/725/102 s 1 -f 4/21/6 12/22/7 1/23/8 -f 8/24/9 14/25/10 3/26/10 -f 6/27/11 16/28/12 7/29/13 -f 12/22/7 11/30/14 2/31/14 -f 10/32/15 9/33/16 5/34/15 -f 8/24/9 7/29/13 16/28/12 -f 14/25/10 18/35/17 13/36/18 -f 2/37/14 10/32/15 5/34/15 -f 12/38/19 20/18/20 19/4/20 -f 13/39/21 17/9/22 16/40/21 -f 12/38/19 16/40/21 9/41/19 -f 4/21/6 13/36/18 12/22/7 -f 8/24/9 15/42/9 14/25/10 -f 6/27/11 9/33/16 16/28/12 -f 2/31/14 1/23/8 12/22/7 -f 12/22/7 19/43/23 11/30/14 -f 20/44/24 9/33/16 10/32/15 -f 9/33/16 6/27/11 5/34/15 -f 17/45/25 15/42/9 16/28/12 -f 15/42/9 8/24/9 16/28/12 -f 4/21/6 3/26/10 13/36/18 -f 3/26/10 14/25/10 13/36/18 -f 2/37/14 11/46/14 10/32/15 -f 12/38/19 9/41/19 20/18/20 -f 13/39/21 18/7/22 17/9/22 -f 12/38/19 13/39/21 16/40/21 +f 418/729/106 426/730/107 415/731/108 +f 422/732/109 428/733/110 417/734/110 +f 420/735/111 430/736/112 421/737/113 +f 426/730/107 425/738/114 416/739/114 +f 424/740/115 423/741/116 419/742/115 +f 422/732/109 421/737/113 430/736/112 +f 428/733/110 432/743/117 427/744/118 +f 416/745/114 424/740/115 419/742/115 +f 426/746/119 434/726/120 433/712/120 +f 427/747/121 431/717/122 430/748/121 +f 426/746/119 430/748/121 423/749/119 +f 418/729/106 427/744/118 426/730/107 +f 422/732/109 429/750/109 428/733/110 +f 420/735/111 423/741/116 430/736/112 +f 416/739/114 415/731/108 426/730/107 +f 426/730/107 433/751/123 425/738/114 +f 434/752/124 423/741/116 424/740/115 +f 423/741/116 420/735/111 419/742/115 +f 431/753/125 429/750/109 430/736/112 +f 429/750/109 422/732/109 430/736/112 +f 418/729/106 417/734/110 427/744/118 +f 417/734/110 428/733/110 427/744/118 +f 416/745/114 425/754/114 424/740/115 +f 426/746/119 423/749/119 434/726/120 +f 427/747/121 432/715/122 431/717/122 +f 426/746/119 427/747/121 430/748/121 o Bullet v 0.000000 0.750000 -1.312500 v 0.000000 0.750000 -0.812500 @@ -268,67 +2167,67 @@ vn -0.3730 -0.3730 0.8496 vn 0.3730 0.3730 0.8496 vn 0.0000 0.5275 0.8496 s off -f 39/47/26 41/48/26 43/49/26 -f 43/49/26 29/50/26 31/51/26 -f 31/51/26 33/52/26 43/49/26 -f 33/52/26 35/53/26 43/49/26 -f 35/53/26 37/54/26 43/49/26 -f 37/54/26 39/47/26 43/49/26 +f 453/755/126 455/756/126 457/757/126 +f 457/757/126 443/758/126 445/759/126 +f 445/759/126 447/760/126 457/757/126 +f 447/760/126 449/761/126 457/757/126 +f 449/761/126 451/762/126 457/757/126 +f 451/762/126 453/755/126 457/757/126 s 1 -f 30/55/27 31/56/28 29/57/29 -f 32/58/30 33/59/31 31/56/28 -f 34/60/32 35/61/33 33/59/31 -f 36/62/34 37/63/35 35/61/33 -f 38/64/36 39/65/37 37/66/35 -f 40/67/38 41/68/39 39/65/37 -f 38/64/36 50/69/40 40/67/38 -f 42/70/41 43/71/42 41/68/39 -f 44/72/43 29/57/29 43/71/42 -f 45/73/44 55/74/45 47/75/46 -f 44/72/43 46/76/47 30/55/27 -f 30/55/27 45/73/44 32/58/30 -f 36/62/34 47/75/46 48/77/48 -f 40/67/38 51/78/49 42/70/41 -f 38/79/36 48/77/48 49/80/50 -f 44/72/43 51/78/49 52/81/51 -f 34/60/32 45/73/44 47/75/46 -f 56/82/52 55/83/45 59/84/53 -f 51/78/49 60/85/54 52/81/51 -f 50/69/40 57/86/55 58/87/56 -f 48/77/48 55/88/45 56/89/52 -f 46/76/47 53/90/57 45/73/44 -f 52/81/51 54/91/58 46/76/47 -f 51/78/49 58/92/56 59/93/53 -f 48/77/48 57/94/55 49/80/50 -f 30/55/27 32/58/30 31/56/28 -f 32/58/30 34/60/32 33/59/31 -f 34/60/32 36/62/34 35/61/33 -f 36/62/34 38/79/36 37/63/35 -f 38/64/36 40/67/38 39/65/37 -f 40/67/38 42/70/41 41/68/39 -f 38/64/36 49/95/50 50/69/40 -f 42/70/41 44/72/43 43/71/42 -f 44/72/43 30/55/27 29/57/29 -f 45/73/44 53/96/57 55/74/45 -f 44/72/43 52/81/51 46/76/47 -f 30/55/27 46/76/47 45/73/44 -f 36/62/34 34/60/32 47/75/46 -f 40/67/38 50/69/40 51/78/49 -f 38/79/36 36/62/34 48/77/48 -f 44/72/43 42/70/41 51/78/49 -f 34/60/32 32/58/30 45/73/44 -f 55/83/45 53/97/57 59/84/53 -f 53/97/57 54/98/58 59/84/53 -f 54/98/58 60/99/54 59/84/53 -f 59/84/53 58/100/56 57/101/55 -f 57/101/55 56/82/52 59/84/53 -f 51/78/49 59/102/53 60/85/54 -f 50/69/40 49/95/50 57/86/55 -f 48/77/48 47/75/46 55/88/45 -f 46/76/47 54/103/58 53/90/57 -f 52/81/51 60/104/54 54/91/58 -f 51/78/49 50/69/40 58/92/56 -f 48/77/48 56/105/52 57/94/55 +f 444/763/127 445/764/128 443/765/129 +f 446/766/130 447/767/131 445/764/128 +f 448/768/132 449/769/133 447/767/131 +f 450/770/134 451/771/135 449/769/133 +f 452/772/136 453/773/137 451/774/135 +f 454/775/138 455/776/139 453/773/137 +f 452/772/136 464/777/140 454/775/138 +f 456/778/141 457/779/142 455/776/139 +f 458/780/143 443/765/129 457/779/142 +f 459/781/144 469/782/145 461/783/146 +f 458/780/143 460/784/147 444/763/127 +f 444/763/127 459/781/144 446/766/130 +f 450/770/134 461/783/146 462/785/148 +f 454/775/138 465/786/149 456/778/141 +f 452/787/136 462/785/148 463/788/150 +f 458/780/143 465/786/149 466/789/151 +f 448/768/132 459/781/144 461/783/146 +f 470/790/152 469/791/145 473/792/153 +f 465/786/149 474/793/154 466/789/151 +f 464/777/140 471/794/155 472/795/156 +f 462/785/148 469/796/145 470/797/152 +f 460/784/147 467/798/157 459/781/144 +f 466/789/151 468/799/158 460/784/147 +f 465/786/149 472/800/156 473/801/153 +f 462/785/148 471/802/155 463/788/150 +f 444/763/127 446/766/130 445/764/128 +f 446/766/130 448/768/132 447/767/131 +f 448/768/132 450/770/134 449/769/133 +f 450/770/134 452/787/136 451/771/135 +f 452/772/136 454/775/138 453/773/137 +f 454/775/138 456/778/141 455/776/139 +f 452/772/136 463/803/150 464/777/140 +f 456/778/141 458/780/143 457/779/142 +f 458/780/143 444/763/127 443/765/129 +f 459/781/144 467/804/157 469/782/145 +f 458/780/143 466/789/151 460/784/147 +f 444/763/127 460/784/147 459/781/144 +f 450/770/134 448/768/132 461/783/146 +f 454/775/138 464/777/140 465/786/149 +f 452/787/136 450/770/134 462/785/148 +f 458/780/143 456/778/141 465/786/149 +f 448/768/132 446/766/130 459/781/144 +f 469/791/145 467/805/157 473/792/153 +f 467/805/157 468/806/158 473/792/153 +f 468/806/158 474/807/154 473/792/153 +f 473/792/153 472/808/156 471/809/155 +f 471/809/155 470/790/152 473/792/153 +f 465/786/149 473/810/153 474/793/154 +f 464/777/140 463/803/150 471/794/155 +f 462/785/148 461/783/146 469/796/145 +f 460/784/147 468/811/158 467/798/157 +f 466/789/151 474/812/154 468/799/158 +f 465/786/149 464/777/140 472/800/156 +f 462/785/148 470/813/152 471/802/155 o Magazine v 0.375000 -4.750000 -0.375000 v -0.375000 -4.750000 -0.375000 @@ -390,38 +2289,38 @@ vn 0.0000 1.0000 0.0000 vn 0.0000 0.8944 0.4472 vn 0.0000 0.0000 -1.0000 s off -f 62/106/59 63/107/59 61/108/59 -f 61/108/60 73/109/60 71/110/60 -f 67/111/61 70/112/61 65/113/61 -f 66/114/62 69/115/62 68/116/62 -f 73/109/63 72/117/63 71/110/63 -f 70/112/63 75/118/63 65/113/63 -f 72/119/62 76/120/62 71/121/62 -f 67/122/64 76/120/64 70/112/64 -f 66/114/63 78/123/63 69/115/63 -f 78/123/61 74/124/61 73/125/61 -f 69/115/64 73/126/64 68/127/64 -f 64/128/65 72/129/65 74/130/65 -f 62/106/59 64/131/59 63/107/59 -f 67/132/60 62/133/60 71/110/60 -f 62/133/60 61/108/60 71/110/60 -f 61/108/60 68/116/60 73/109/60 -f 65/113/61 64/128/61 67/111/61 -f 64/128/61 62/134/61 67/111/61 -f 68/116/62 61/108/62 63/107/62 -f 63/107/62 66/114/62 68/116/62 -f 73/109/63 74/135/63 72/117/63 -f 70/112/63 76/120/63 75/118/63 -f 72/119/62 75/118/62 76/120/62 -f 67/122/64 71/136/64 76/120/64 -f 66/114/63 77/137/63 78/123/63 -f 78/123/61 77/137/61 74/124/61 -f 69/115/64 78/123/64 73/126/64 -f 66/114/65 63/107/65 74/130/65 -f 63/107/65 64/128/65 74/130/65 -f 64/128/65 65/113/65 72/129/65 -f 65/113/65 75/138/65 72/129/65 -f 74/130/65 77/139/65 66/114/65 +f 476/814/159 477/815/159 475/816/159 +f 475/816/160 487/817/160 485/818/160 +f 481/819/161 484/820/161 479/821/161 +f 480/822/162 483/823/162 482/824/162 +f 487/817/163 486/825/163 485/818/163 +f 484/820/163 489/826/163 479/821/163 +f 486/827/162 490/828/162 485/829/162 +f 481/830/164 490/828/164 484/820/164 +f 480/822/163 492/831/163 483/823/163 +f 492/831/161 488/832/161 487/833/161 +f 483/823/164 487/834/164 482/835/164 +f 478/836/165 486/837/165 488/838/165 +f 476/814/159 478/839/159 477/815/159 +f 481/840/160 476/841/160 485/818/160 +f 476/841/160 475/816/160 485/818/160 +f 475/816/160 482/824/160 487/817/160 +f 479/821/161 478/836/161 481/819/161 +f 478/836/161 476/842/161 481/819/161 +f 482/824/162 475/816/162 477/815/162 +f 477/815/162 480/822/162 482/824/162 +f 487/817/163 488/843/163 486/825/163 +f 484/820/163 490/828/163 489/826/163 +f 486/827/162 489/826/162 490/828/162 +f 481/830/164 485/844/164 490/828/164 +f 480/822/163 491/845/163 492/831/163 +f 492/831/161 491/845/161 488/832/161 +f 483/823/164 492/831/164 487/834/164 +f 480/822/165 477/815/165 488/838/165 +f 477/815/165 478/836/165 488/838/165 +f 478/836/165 479/821/165 486/837/165 +f 479/821/165 489/846/165 486/837/165 +f 488/838/165 491/847/165 480/822/165 o StockFront v 0.750000 0.000000 -2.500000 v 0.750000 0.000000 -5.500000 @@ -588,99 +2487,99 @@ vn 0.0000 -0.7071 0.7071 vn 0.0000 -1.0000 0.0000 vn 0.0000 -0.7071 -0.7071 s off -f 80/140/66 87/141/66 84/142/66 -f 86/143/66 87/141/66 80/140/66 -f 91/144/67 90/145/67 88/146/67 -f 92/147/67 96/148/67 95/149/67 -f 84/150/68 89/151/68 83/152/68 -f 87/141/69 88/153/69 84/142/69 -f 83/152/70 90/154/70 82/155/70 -f 79/156/71 94/157/71 85/158/71 -f 82/155/72 91/159/72 81/160/72 -f 85/161/73 95/149/73 86/143/73 -f 81/162/71 92/147/71 80/163/71 -f 80/140/70 93/164/70 79/156/70 -f 86/143/74 96/148/74 87/141/74 -f 98/165/66 105/166/66 102/167/66 -f 104/168/66 105/166/66 98/165/66 -f 109/169/67 108/170/67 106/171/67 -f 110/172/67 114/173/67 113/174/67 -f 102/175/68 107/176/68 101/177/68 -f 105/166/69 106/178/69 102/167/69 -f 101/177/70 108/179/70 100/180/70 -f 97/181/71 112/182/71 103/183/71 -f 100/180/72 109/184/72 99/185/72 -f 103/186/73 113/174/73 104/168/73 -f 99/187/71 110/172/71 98/188/71 -f 98/165/70 111/189/70 97/181/70 -f 104/168/74 114/173/74 105/166/74 -f 128/190/66 124/191/66 120/192/66 -f 125/193/67 127/194/67 129/195/67 -f 84/142/66 83/152/66 82/155/66 -f 82/155/66 81/196/66 84/142/66 -f 81/196/66 80/140/66 84/142/66 -f 80/140/66 79/156/66 86/143/66 -f 79/156/66 85/158/66 86/143/66 -f 90/145/67 89/197/67 88/146/67 -f 88/146/67 96/148/67 92/147/67 -f 92/147/67 91/144/67 88/146/67 -f 94/198/67 93/199/67 95/149/67 -f 93/199/67 92/147/67 95/149/67 -f 84/150/68 88/200/68 89/151/68 -f 87/141/69 96/201/69 88/153/69 -f 83/152/70 89/151/70 90/154/70 -f 79/156/71 93/202/71 94/157/71 -f 82/155/72 90/154/72 91/159/72 -f 85/161/73 94/203/73 95/149/73 -f 81/162/71 91/144/71 92/147/71 -f 80/140/70 92/204/70 93/164/70 -f 86/143/74 95/149/74 96/148/74 -f 102/167/66 101/177/66 100/180/66 -f 100/180/66 99/205/66 102/167/66 -f 99/205/66 98/165/66 102/167/66 -f 98/165/66 97/181/66 104/168/66 -f 97/181/66 103/183/66 104/168/66 -f 108/170/67 107/206/67 106/171/67 -f 106/171/67 114/173/67 110/172/67 -f 110/172/67 109/169/67 106/171/67 -f 112/207/67 111/208/67 113/174/67 -f 111/208/67 110/172/67 113/174/67 -f 102/175/68 106/209/68 107/176/68 -f 105/166/69 114/210/69 106/178/69 -f 101/177/70 107/176/70 108/179/70 -f 97/181/71 111/211/71 112/182/71 -f 100/180/72 108/179/72 109/184/72 -f 103/186/73 112/212/73 113/174/73 -f 99/187/71 109/169/71 110/172/71 -f 98/165/70 110/213/70 111/189/70 -f 104/168/74 113/174/74 114/173/74 -f 120/192/66 118/214/66 116/215/66 -f 116/215/66 130/216/66 128/190/66 -f 128/190/66 126/217/66 124/191/66 -f 124/191/66 122/218/66 120/192/66 -f 120/192/66 116/215/66 128/190/66 -f 129/195/67 115/219/67 117/220/67 -f 117/220/67 119/221/67 129/195/67 -f 119/221/67 121/222/67 129/195/67 -f 121/222/67 123/223/67 129/195/67 -f 123/223/67 125/193/67 129/195/67 +f 494/848/166 501/849/166 498/850/166 +f 500/851/166 501/849/166 494/848/166 +f 505/852/167 504/853/167 502/854/167 +f 506/855/167 510/856/167 509/857/167 +f 498/858/168 503/859/168 497/860/168 +f 501/849/169 502/861/169 498/850/169 +f 497/860/170 504/862/170 496/863/170 +f 493/864/171 508/865/171 499/866/171 +f 496/863/172 505/867/172 495/868/172 +f 499/869/173 509/857/173 500/851/173 +f 495/870/171 506/855/171 494/871/171 +f 494/848/170 507/872/170 493/864/170 +f 500/851/174 510/856/174 501/849/174 +f 512/873/166 519/874/166 516/875/166 +f 518/876/166 519/874/166 512/873/166 +f 523/877/167 522/878/167 520/879/167 +f 524/880/167 528/881/167 527/882/167 +f 516/883/168 521/884/168 515/885/168 +f 519/874/169 520/886/169 516/875/169 +f 515/885/170 522/887/170 514/888/170 +f 511/889/171 526/890/171 517/891/171 +f 514/888/172 523/892/172 513/893/172 +f 517/894/173 527/882/173 518/876/173 +f 513/895/171 524/880/171 512/896/171 +f 512/873/170 525/897/170 511/889/170 +f 518/876/174 528/881/174 519/874/174 +f 542/898/166 538/899/166 534/900/166 +f 539/901/167 541/902/167 543/903/167 +f 498/850/166 497/860/166 496/863/166 +f 496/863/166 495/904/166 498/850/166 +f 495/904/166 494/848/166 498/850/166 +f 494/848/166 493/864/166 500/851/166 +f 493/864/166 499/866/166 500/851/166 +f 504/853/167 503/905/167 502/854/167 +f 502/854/167 510/856/167 506/855/167 +f 506/855/167 505/852/167 502/854/167 +f 508/906/167 507/907/167 509/857/167 +f 507/907/167 506/855/167 509/857/167 +f 498/858/168 502/908/168 503/859/168 +f 501/849/169 510/909/169 502/861/169 +f 497/860/170 503/859/170 504/862/170 +f 493/864/171 507/910/171 508/865/171 +f 496/863/172 504/862/172 505/867/172 +f 499/869/173 508/911/173 509/857/173 +f 495/870/171 505/852/171 506/855/171 +f 494/848/170 506/912/170 507/872/170 +f 500/851/174 509/857/174 510/856/174 +f 516/875/166 515/885/166 514/888/166 +f 514/888/166 513/913/166 516/875/166 +f 513/913/166 512/873/166 516/875/166 +f 512/873/166 511/889/166 518/876/166 +f 511/889/166 517/891/166 518/876/166 +f 522/878/167 521/914/167 520/879/167 +f 520/879/167 528/881/167 524/880/167 +f 524/880/167 523/877/167 520/879/167 +f 526/915/167 525/916/167 527/882/167 +f 525/916/167 524/880/167 527/882/167 +f 516/883/168 520/917/168 521/884/168 +f 519/874/169 528/918/169 520/886/169 +f 515/885/170 521/884/170 522/887/170 +f 511/889/171 525/919/171 526/890/171 +f 514/888/172 522/887/172 523/892/172 +f 517/894/173 526/920/173 527/882/173 +f 513/895/171 523/877/171 524/880/171 +f 512/873/170 524/921/170 525/897/170 +f 518/876/174 527/882/174 528/881/174 +f 534/900/166 532/922/166 530/923/166 +f 530/923/166 544/924/166 542/898/166 +f 542/898/166 540/925/166 538/899/166 +f 538/899/166 536/926/166 534/900/166 +f 534/900/166 530/923/166 542/898/166 +f 543/903/167 529/927/167 531/928/167 +f 531/928/167 533/929/167 543/903/167 +f 533/929/167 535/930/167 543/903/167 +f 535/930/167 537/931/167 543/903/167 +f 537/931/167 539/901/167 543/903/167 s 1 -f 116/224/69 117/225/75 115/226/69 -f 118/227/75 119/228/74 117/225/75 -f 120/229/74 121/230/73 119/231/74 -f 122/232/73 123/233/71 121/230/73 -f 124/234/71 125/235/72 123/233/71 -f 126/236/72 127/237/70 125/235/72 -f 128/238/70 129/239/68 127/237/70 -f 130/240/68 115/226/69 129/239/68 -f 116/224/69 118/227/75 117/225/75 -f 118/227/75 120/241/74 119/228/74 -f 120/229/74 122/232/73 121/230/73 -f 122/232/73 124/234/71 123/233/71 -f 124/234/71 126/236/72 125/235/72 -f 126/236/72 128/238/70 127/237/70 -f 128/238/70 130/240/68 129/239/68 -f 130/240/68 116/224/69 115/226/69 +f 530/932/169 531/933/175 529/934/169 +f 532/935/175 533/936/174 531/933/175 +f 534/937/174 535/938/173 533/939/174 +f 536/940/173 537/941/171 535/938/173 +f 538/942/171 539/943/172 537/941/171 +f 540/944/172 541/945/170 539/943/172 +f 542/946/170 543/947/168 541/945/170 +f 544/948/168 529/934/169 543/947/168 +f 530/932/169 532/935/175 531/933/175 +f 532/935/175 534/949/174 533/936/174 +f 534/937/174 536/940/173 535/938/173 +f 536/940/173 538/942/171 537/941/171 +f 538/942/171 540/944/172 539/943/172 +f 540/944/172 542/946/170 541/945/170 +f 542/946/170 544/948/168 543/947/168 +f 544/948/168 530/932/169 529/934/169 o StockBack v 0.500000 0.000000 -2.500000 v 0.500000 0.000000 -6.000000 @@ -795,58 +2694,58 @@ vn 0.0000 0.7071 -0.7071 vn 0.0000 -0.1789 -0.9839 vn 0.0000 -0.7071 0.7071 s off -f 133/242/76 131/243/76 134/244/76 -f 138/245/77 136/246/77 137/247/77 -f 131/248/78 137/247/78 134/244/78 -f 132/249/79 138/250/79 131/243/79 -f 134/244/80 136/246/80 133/242/80 -f 140/251/78 141/252/78 139/253/78 -f 147/254/80 139/253/80 141/252/80 -f 139/253/76 144/255/76 140/251/76 -f 142/256/77 145/257/77 141/252/77 -f 143/258/81 148/259/81 144/255/81 -f 148/260/82 145/257/82 146/261/82 -f 148/262/79 142/256/79 140/251/79 -f 150/263/83 151/264/83 149/265/83 -f 151/264/80 153/266/80 149/265/80 -f 150/263/79 156/267/79 152/268/79 -f 156/269/81 153/266/81 154/270/81 -f 159/271/76 157/272/76 160/273/76 -f 164/274/77 162/275/77 163/276/77 -f 157/277/78 163/276/78 160/273/78 -f 158/278/79 164/279/79 157/272/79 -f 160/273/80 162/275/80 159/271/80 -f 166/280/83 167/281/83 165/282/83 -f 167/281/80 169/283/80 165/282/80 -f 166/280/79 172/284/79 168/285/79 -f 172/286/81 169/283/81 170/287/81 -f 133/242/76 132/249/76 131/243/76 -f 138/245/77 135/288/77 136/246/77 -f 131/248/78 138/289/78 137/247/78 -f 132/249/79 135/290/79 138/250/79 -f 134/244/80 137/247/80 136/246/80 -f 140/251/78 142/256/78 141/252/78 -f 141/252/80 145/291/80 147/254/80 -f 147/254/80 143/292/80 139/253/80 -f 139/253/76 143/258/76 144/255/76 -f 142/256/77 146/261/77 145/257/77 -f 143/258/81 147/293/81 148/259/81 -f 148/260/82 147/294/82 145/257/82 -f 140/251/79 144/295/79 148/262/79 -f 148/262/79 146/296/79 142/256/79 -f 150/263/83 152/268/83 151/264/83 -f 151/264/80 154/270/80 153/266/80 -f 150/263/79 155/297/79 156/267/79 -f 156/269/81 155/298/81 153/266/81 -f 159/271/76 158/278/76 157/272/76 -f 164/274/77 161/299/77 162/275/77 -f 157/277/78 164/300/78 163/276/78 -f 158/278/79 161/301/79 164/279/79 -f 160/273/80 163/276/80 162/275/80 -f 166/280/83 168/285/83 167/281/83 -f 167/281/80 170/287/80 169/283/80 -f 166/280/79 171/302/79 172/284/79 -f 172/286/81 171/303/81 169/283/81 +f 547/950/176 545/951/176 548/952/176 +f 552/953/177 550/954/177 551/955/177 +f 545/956/178 551/955/178 548/952/178 +f 546/957/179 552/958/179 545/951/179 +f 548/952/180 550/954/180 547/950/180 +f 554/959/178 555/960/178 553/961/178 +f 561/962/180 553/961/180 555/960/180 +f 553/961/176 558/963/176 554/959/176 +f 556/964/177 559/965/177 555/960/177 +f 557/966/181 562/967/181 558/963/181 +f 562/968/182 559/965/182 560/969/182 +f 562/970/179 556/964/179 554/959/179 +f 564/971/183 565/972/183 563/973/183 +f 565/972/180 567/974/180 563/973/180 +f 564/971/179 570/975/179 566/976/179 +f 570/977/181 567/974/181 568/978/181 +f 573/979/176 571/980/176 574/981/176 +f 578/982/177 576/983/177 577/984/177 +f 571/985/178 577/984/178 574/981/178 +f 572/986/179 578/987/179 571/980/179 +f 574/981/180 576/983/180 573/979/180 +f 580/988/183 581/989/183 579/990/183 +f 581/989/180 583/991/180 579/990/180 +f 580/988/179 586/992/179 582/993/179 +f 586/994/181 583/991/181 584/995/181 +f 547/950/176 546/957/176 545/951/176 +f 552/953/177 549/996/177 550/954/177 +f 545/956/178 552/997/178 551/955/178 +f 546/957/179 549/998/179 552/958/179 +f 548/952/180 551/955/180 550/954/180 +f 554/959/178 556/964/178 555/960/178 +f 555/960/180 559/999/180 561/962/180 +f 561/962/180 557/1000/180 553/961/180 +f 553/961/176 557/966/176 558/963/176 +f 556/964/177 560/969/177 559/965/177 +f 557/966/181 561/1001/181 562/967/181 +f 562/968/182 561/1002/182 559/965/182 +f 554/959/179 558/1003/179 562/970/179 +f 562/970/179 560/1004/179 556/964/179 +f 564/971/183 566/976/183 565/972/183 +f 565/972/180 568/978/180 567/974/180 +f 564/971/179 569/1005/179 570/975/179 +f 570/977/181 569/1006/181 567/974/181 +f 573/979/176 572/986/176 571/980/176 +f 578/982/177 575/1007/177 576/983/177 +f 571/985/178 578/1008/178 577/984/178 +f 572/986/179 575/1009/179 578/987/179 +f 574/981/180 577/984/180 576/983/180 +f 580/988/183 582/993/183 581/989/183 +f 581/989/180 584/995/180 583/991/180 +f 580/988/179 585/1010/179 586/992/179 +f 586/994/181 585/1011/181 583/991/181 o Silencer v 0.000000 1.500000 6.375000 v -0.375000 1.399519 6.375000 @@ -1009,99 +2908,99 @@ vn -0.5000 0.8660 0.0000 vn 0.0000 1.0000 0.0000 vn 0.8660 -0.5000 0.0000 s off -f 177/304/84 175/305/84 183/306/84 -f 195/307/85 208/308/85 207/309/85 -f 185/310/85 198/311/85 186/312/85 -f 193/313/85 204/314/85 192/315/85 -f 190/316/85 201/317/85 189/318/85 -f 196/319/85 198/320/85 208/321/85 -f 185/310/85 199/322/85 197/323/85 -f 194/324/85 205/325/85 193/313/85 -f 191/326/85 202/327/85 190/316/85 -f 188/328/85 199/329/85 187/330/85 -f 195/307/85 206/331/85 194/324/85 -f 191/332/85 204/333/85 203/334/85 -f 189/318/85 200/335/85 188/328/85 -f 219/336/85 210/337/85 213/338/85 -f 175/305/84 174/339/84 183/306/84 -f 174/339/84 173/340/84 183/306/84 -f 173/340/84 184/341/84 183/306/84 -f 183/306/84 182/342/84 181/343/84 -f 181/343/84 180/344/84 179/345/84 -f 179/345/84 178/346/84 177/304/84 -f 177/304/84 176/347/84 175/305/84 -f 183/306/84 181/343/84 179/345/84 -f 179/345/84 177/304/84 183/306/84 -f 195/307/85 196/319/85 208/308/85 -f 185/310/85 197/348/85 198/311/85 -f 193/313/85 205/349/85 204/314/85 -f 190/316/85 202/350/85 201/317/85 -f 196/319/85 186/312/85 198/320/85 -f 185/310/85 187/330/85 199/322/85 -f 194/324/85 206/351/85 205/325/85 -f 191/326/85 203/352/85 202/327/85 -f 188/328/85 200/353/85 199/329/85 -f 195/307/85 207/354/85 206/331/85 -f 191/332/85 192/315/85 204/333/85 -f 189/318/85 201/355/85 200/335/85 -f 210/337/85 209/356/85 213/338/85 -f 209/356/85 211/357/85 213/338/85 -f 211/357/85 212/358/85 213/338/85 -f 213/338/85 214/359/85 217/360/85 -f 214/359/85 215/361/85 217/360/85 -f 215/361/85 216/362/85 217/360/85 -f 217/360/85 218/363/85 219/336/85 -f 219/336/85 220/364/85 210/337/85 -f 217/360/85 219/336/85 213/338/85 +f 591/1012/184 589/1013/184 597/1014/184 +f 609/1015/185 622/1016/185 621/1017/185 +f 599/1018/185 612/1019/185 600/1020/185 +f 607/1021/185 618/1022/185 606/1023/185 +f 604/1024/185 615/1025/185 603/1026/185 +f 610/1027/185 612/1028/185 622/1029/185 +f 599/1018/185 613/1030/185 611/1031/185 +f 608/1032/185 619/1033/185 607/1021/185 +f 605/1034/185 616/1035/185 604/1024/185 +f 602/1036/185 613/1037/185 601/1038/185 +f 609/1015/185 620/1039/185 608/1032/185 +f 605/1040/185 618/1041/185 617/1042/185 +f 603/1026/185 614/1043/185 602/1036/185 +f 633/1044/185 624/1045/185 627/1046/185 +f 589/1013/184 588/1047/184 597/1014/184 +f 588/1047/184 587/1048/184 597/1014/184 +f 587/1048/184 598/1049/184 597/1014/184 +f 597/1014/184 596/1050/184 595/1051/184 +f 595/1051/184 594/1052/184 593/1053/184 +f 593/1053/184 592/1054/184 591/1012/184 +f 591/1012/184 590/1055/184 589/1013/184 +f 597/1014/184 595/1051/184 593/1053/184 +f 593/1053/184 591/1012/184 597/1014/184 +f 609/1015/185 610/1027/185 622/1016/185 +f 599/1018/185 611/1056/185 612/1019/185 +f 607/1021/185 619/1057/185 618/1022/185 +f 604/1024/185 616/1058/185 615/1025/185 +f 610/1027/185 600/1020/185 612/1028/185 +f 599/1018/185 601/1038/185 613/1030/185 +f 608/1032/185 620/1059/185 619/1033/185 +f 605/1034/185 617/1060/185 616/1035/185 +f 602/1036/185 614/1061/185 613/1037/185 +f 609/1015/185 621/1062/185 620/1039/185 +f 605/1040/185 606/1023/185 618/1041/185 +f 603/1026/185 615/1063/185 614/1043/185 +f 624/1045/185 623/1064/185 627/1046/185 +f 623/1064/185 625/1065/185 627/1046/185 +f 625/1065/185 626/1066/185 627/1046/185 +f 627/1046/185 628/1067/185 631/1068/185 +f 628/1067/185 629/1069/185 631/1068/185 +f 629/1069/185 630/1070/185 631/1068/185 +f 631/1068/185 632/1071/185 633/1044/185 +f 633/1044/185 634/1072/185 624/1045/185 +f 631/1068/185 633/1044/185 627/1046/185 s 1 -f 179/365/86 190/316/87 178/366/87 -f 176/367/88 187/330/89 175/368/89 -f 183/369/90 194/324/91 182/370/91 -f 180/371/92 191/332/86 179/372/86 -f 177/373/93 188/328/88 176/367/88 -f 184/374/94 195/307/90 183/369/90 -f 174/375/95 186/312/96 173/376/96 -f 181/377/97 192/315/92 180/371/92 -f 178/366/87 189/318/93 177/373/93 -f 173/376/96 196/319/94 184/374/94 -f 175/368/89 185/310/95 174/375/95 -f 182/370/91 193/313/97 181/377/97 -f 200/335/91 213/378/90 212/379/91 -f 208/308/87 219/380/93 207/309/93 -f 198/311/86 209/381/92 210/382/86 -f 205/349/89 216/383/95 204/314/95 -f 201/317/90 214/384/94 213/385/90 -f 198/320/86 220/386/87 208/321/87 -f 197/323/92 211/387/97 209/388/92 -f 206/351/88 217/389/89 205/325/89 -f 202/327/94 215/390/96 214/391/94 -f 199/329/97 212/392/91 211/393/97 -f 207/354/93 218/394/88 206/331/88 -f 204/333/95 215/395/96 203/334/96 -f 179/365/86 191/326/86 190/316/87 -f 176/367/88 188/328/88 187/330/89 -f 183/369/90 195/307/90 194/324/91 -f 180/371/92 192/315/92 191/332/86 -f 177/373/93 189/318/93 188/328/88 -f 184/374/94 196/319/94 195/307/90 -f 174/375/95 185/310/95 186/312/96 -f 181/377/97 193/313/97 192/315/92 -f 178/366/87 190/316/87 189/318/93 -f 173/376/96 186/312/96 196/319/94 -f 175/368/89 187/330/89 185/310/95 -f 182/370/91 194/324/91 193/313/97 -f 200/335/91 201/355/90 213/378/90 -f 208/308/87 220/396/87 219/380/93 -f 198/311/86 197/348/92 209/381/92 -f 205/349/89 217/397/89 216/383/95 -f 201/317/90 202/350/94 214/384/94 -f 198/320/86 210/398/86 220/386/87 -f 197/323/92 199/322/97 211/387/97 -f 206/351/88 218/399/88 217/389/89 -f 202/327/94 203/352/96 215/390/96 -f 199/329/97 200/353/91 212/392/91 -f 207/354/93 219/400/93 218/394/88 -f 204/333/95 216/401/95 215/395/96 +f 593/1073/186 604/1024/187 592/1074/187 +f 590/1075/188 601/1038/189 589/1076/189 +f 597/1077/190 608/1032/191 596/1078/191 +f 594/1079/192 605/1040/186 593/1080/186 +f 591/1081/193 602/1036/188 590/1075/188 +f 598/1082/194 609/1015/190 597/1077/190 +f 588/1083/195 600/1020/196 587/1084/196 +f 595/1085/197 606/1023/192 594/1079/192 +f 592/1074/187 603/1026/193 591/1081/193 +f 587/1084/196 610/1027/194 598/1082/194 +f 589/1076/189 599/1018/195 588/1083/195 +f 596/1078/191 607/1021/197 595/1085/197 +f 614/1043/191 627/1086/190 626/1087/191 +f 622/1016/187 633/1088/193 621/1017/193 +f 612/1019/186 623/1089/192 624/1090/186 +f 619/1057/189 630/1091/195 618/1022/195 +f 615/1025/190 628/1092/194 627/1093/190 +f 612/1028/186 634/1094/187 622/1029/187 +f 611/1031/192 625/1095/197 623/1096/192 +f 620/1059/188 631/1097/189 619/1033/189 +f 616/1035/194 629/1098/196 628/1099/194 +f 613/1037/197 626/1100/191 625/1101/197 +f 621/1062/193 632/1102/188 620/1039/188 +f 618/1041/195 629/1103/196 617/1042/196 +f 593/1073/186 605/1034/186 604/1024/187 +f 590/1075/188 602/1036/188 601/1038/189 +f 597/1077/190 609/1015/190 608/1032/191 +f 594/1079/192 606/1023/192 605/1040/186 +f 591/1081/193 603/1026/193 602/1036/188 +f 598/1082/194 610/1027/194 609/1015/190 +f 588/1083/195 599/1018/195 600/1020/196 +f 595/1085/197 607/1021/197 606/1023/192 +f 592/1074/187 604/1024/187 603/1026/193 +f 587/1084/196 600/1020/196 610/1027/194 +f 589/1076/189 601/1038/189 599/1018/195 +f 596/1078/191 608/1032/191 607/1021/197 +f 614/1043/191 615/1063/190 627/1086/190 +f 622/1016/187 634/1104/187 633/1088/193 +f 612/1019/186 611/1056/192 623/1089/192 +f 619/1057/189 631/1105/189 630/1091/195 +f 615/1025/190 616/1058/194 628/1092/194 +f 612/1028/186 624/1106/186 634/1094/187 +f 611/1031/192 613/1030/197 625/1095/197 +f 620/1059/188 632/1107/188 631/1097/189 +f 616/1035/194 617/1060/196 629/1098/196 +f 613/1037/197 614/1061/191 626/1100/191 +f 621/1062/193 633/1108/193 632/1102/188 +f 618/1041/195 630/1109/195 629/1103/196 o Gun v -0.750000 0.000000 3.250000 v 0.750000 0.000000 3.250000 @@ -2326,678 +4225,678 @@ vn 0.0000 0.7071 0.7071 vn 0.0000 0.7071 -0.7071 vn 0.9239 0.0000 -0.3827 s off -f 223/402/98 222/403/98 221/404/98 -f 224/405/99 226/406/99 222/403/99 -f 223/407/100 228/408/100 224/409/100 -f 221/410/101 327/411/101 225/412/101 -f 242/413/102 253/414/102 241/415/102 -f 249/416/102 260/417/102 248/418/102 -f 246/419/102 257/420/102 245/421/102 -f 252/422/102 253/423/102 264/424/102 -f 242/413/102 255/425/102 254/426/102 -f 249/416/102 262/427/102 261/428/102 -f 246/419/102 259/429/102 258/430/102 -f 243/431/102 256/432/102 255/433/102 -f 251/434/102 262/435/102 250/436/102 -f 247/437/102 260/438/102 259/439/102 -f 245/421/102 256/440/102 244/441/102 -f 252/422/102 263/442/102 251/434/102 -f 269/443/102 280/444/102 268/445/102 -f 276/446/102 287/447/102 275/448/102 -f 266/449/102 277/450/102 265/451/102 -f 273/452/102 284/453/102 272/454/102 -f 269/443/102 282/455/102 281/456/102 -f 276/446/102 277/450/102 288/457/102 -f 267/458/102 278/459/102 266/449/102 -f 274/460/102 285/461/102 273/452/102 -f 270/462/102 283/463/102 282/455/102 -f 268/445/102 279/464/102 267/458/102 -f 275/448/102 286/465/102 274/460/102 -f 271/466/102 284/453/102 283/467/102 -f 299/468/102 289/469/102 293/470/102 -f 303/471/98 302/472/98 301/473/98 -f 307/474/103 305/475/103 306/476/103 -f 303/477/100 308/478/100 304/479/100 -f 302/480/102 306/476/102 301/481/102 -f 304/482/99 307/474/99 302/472/99 -f 301/483/104 305/475/104 303/484/104 -f 311/485/103 309/486/103 310/487/103 -f 309/486/100 312/488/100 320/489/100 -f 328/490/99 330/491/99 326/492/99 -f 226/406/105 326/492/105 222/403/105 -f 225/412/103 328/493/103 226/406/103 -f 222/403/98 325/494/98 221/404/98 -f 330/495/102 331/496/102 329/497/102 -f 326/498/98 329/499/98 325/494/98 -f 325/500/104 331/501/104 327/411/104 -f 327/502/103 332/503/103 328/493/103 -f 310/487/103 323/504/103 311/485/103 -f 337/505/102 340/506/102 336/507/102 -f 324/508/103 340/506/103 323/504/103 -f 348/509/99 343/510/99 344/511/99 -f 406/512/104 345/513/104 408/514/104 -f 405/515/104 346/516/104 342/517/104 -f 356/518/99 351/519/99 352/520/99 -f 349/521/104 354/522/104 350/523/104 -f 373/524/104 374/525/104 376/526/104 -f 363/527/99 367/528/99 371/529/99 -f 382/530/104 381/531/104 379/532/104 -f 388/533/99 398/534/99 392/535/99 -f 402/536/104 227/537/104 223/538/104 -f 221/410/104 402/536/104 223/538/104 -f 225/412/104 403/539/104 221/410/104 -f 404/540/100 411/541/100 403/542/100 -f 403/543/103 410/544/103 402/545/103 -f 402/546/102 409/547/102 401/548/102 -f 408/549/100 416/550/100 406/551/100 -f 405/552/102 417/553/102 407/554/102 -f 415/555/104 418/556/104 417/553/104 -f 417/557/103 346/516/103 407/558/103 -f 412/559/103 404/560/103 225/412/103 -f 424/561/98 434/562/98 421/563/98 -f 410/544/104 412/564/104 409/547/104 -f 450/565/99 456/566/99 452/567/99 -f 451/568/104 453/569/104 449/570/104 -f 455/571/104 459/572/104 453/569/104 -f 460/573/99 456/574/99 454/575/99 -f 460/573/99 462/576/99 458/577/99 -f 457/578/104 463/579/104 459/572/104 -f 461/580/104 467/581/104 463/579/104 -f 462/576/99 468/582/99 466/583/99 -f 472/584/100 475/585/100 471/586/100 -f 469/587/102 474/588/102 470/589/102 -f 470/589/99 476/590/99 472/584/99 -f 471/586/104 473/591/104 469/592/104 -f 473/593/106 478/594/106 474/588/106 -f 478/595/107 475/585/107 476/590/107 -f 473/591/104 475/585/104 477/596/104 -f 474/588/99 478/594/99 476/590/99 -f 348/509/103 418/597/103 347/598/103 -f 418/597/103 345/513/103 347/598/103 -f 485/599/103 483/600/103 484/601/103 -f 481/602/100 486/603/100 482/604/100 -f 480/605/102 484/601/102 479/606/102 -f 499/607/103 501/608/103 495/609/103 -f 519/610/104 526/611/104 520/612/104 -f 509/613/103 507/614/103 508/615/103 -f 505/616/100 510/617/100 506/618/100 -f 504/619/102 508/615/102 503/620/102 -f 506/618/99 509/613/99 504/619/99 -f 503/621/104 507/622/104 505/616/104 -f 517/623/103 515/624/103 516/625/103 -f 523/626/103 526/611/103 525/627/103 -f 531/628/103 534/629/103 533/630/103 -f 513/631/100 518/632/100 514/633/100 -f 512/634/102 516/625/102 511/635/102 -f 521/636/102 525/627/102 519/610/102 -f 529/637/102 533/638/102 527/639/102 -f 520/612/100 524/640/100 522/641/100 -f 528/642/100 532/643/100 530/644/100 -f 531/628/99 530/644/99 532/643/99 -f 546/645/100 561/646/100 543/647/100 -f 542/648/100 557/649/100 546/645/100 -f 561/646/100 539/650/100 543/647/100 -f 559/651/102 545/652/102 544/653/102 -f 559/651/102 540/654/102 547/655/102 -f 555/656/102 541/657/102 545/652/102 -f 551/658/102 540/654/102 535/659/102 -f 541/657/102 552/660/102 536/661/102 -f 556/662/102 560/663/102 535/659/102 -f 539/650/100 553/664/100 537/665/100 -f 554/666/100 542/648/100 538/667/100 -f 562/668/100 558/669/100 538/667/100 -f 563/670/104 565/671/104 571/672/104 -f 566/673/99 564/674/99 573/675/99 -f 588/676/99 584/677/99 580/678/99 -f 587/679/104 589/680/104 581/681/104 -f 607/682/104 608/683/104 610/684/104 -f 597/685/99 601/686/99 605/687/99 -f 616/688/104 615/689/104 613/690/104 -f 622/691/99 632/692/99 626/693/99 -f 223/402/98 224/405/98 222/403/98 -f 224/405/99 228/408/99 226/406/99 -f 223/407/100 227/537/100 228/408/100 -f 221/410/101 325/500/101 327/411/101 -f 242/413/102 254/694/102 253/414/102 -f 249/416/102 261/695/102 260/417/102 -f 246/419/102 258/696/102 257/420/102 -f 252/422/102 241/415/102 253/423/102 -f 242/413/102 243/431/102 255/425/102 -f 249/416/102 250/436/102 262/427/102 -f 246/419/102 247/697/102 259/429/102 -f 243/431/102 244/441/102 256/432/102 -f 251/434/102 263/698/102 262/435/102 -f 247/437/102 248/418/102 260/438/102 -f 245/421/102 257/699/102 256/440/102 -f 252/422/102 264/700/102 263/442/102 -f 269/443/102 281/456/102 280/444/102 -f 276/446/102 288/457/102 287/447/102 -f 266/449/102 278/459/102 277/450/102 -f 273/452/102 285/461/102 284/453/102 -f 269/443/102 270/462/102 282/455/102 -f 276/446/102 265/451/102 277/450/102 -f 267/458/102 279/464/102 278/459/102 -f 274/460/102 286/465/102 285/461/102 -f 270/462/102 271/701/102 283/463/102 -f 268/445/102 280/444/102 279/464/102 -f 275/448/102 287/447/102 286/465/102 -f 271/466/102 272/454/102 284/453/102 -f 289/469/102 290/702/102 293/470/102 -f 290/702/102 291/703/102 293/470/102 -f 291/703/102 292/704/102 293/470/102 -f 293/470/102 294/705/102 297/706/102 -f 294/705/102 295/707/102 297/706/102 -f 295/707/102 296/708/102 297/706/102 -f 297/706/102 298/709/102 299/468/102 -f 299/468/102 300/710/102 289/469/102 -f 297/706/102 299/468/102 293/470/102 -f 303/471/98 304/482/98 302/472/98 -f 307/474/103 308/478/103 305/475/103 -f 303/477/100 305/475/100 308/478/100 -f 302/480/102 307/474/102 306/476/102 -f 304/482/99 308/478/99 307/474/99 -f 301/483/104 306/476/104 305/475/104 -f 311/485/103 312/488/103 309/486/103 -f 312/488/100 319/711/100 320/489/100 -f 320/489/100 317/712/100 309/486/100 -f 317/712/100 318/713/100 309/486/100 -f 328/490/99 332/714/99 330/491/99 -f 226/406/105 328/490/105 326/492/105 -f 225/412/103 327/502/103 328/493/103 -f 222/403/98 326/498/98 325/494/98 -f 330/495/102 332/503/102 331/496/102 -f 326/498/98 330/715/98 329/499/98 -f 325/500/104 329/716/104 331/501/104 -f 327/502/103 331/496/103 332/503/103 -f 310/487/103 324/508/103 323/504/103 -f 336/507/102 335/717/102 337/505/102 -f 335/717/102 339/718/102 337/505/102 -f 339/718/102 338/719/102 337/505/102 -f 324/508/103 336/507/103 340/506/103 -f 348/509/99 347/598/99 343/510/99 -f 406/512/104 341/720/104 345/513/104 -f 405/515/104 407/558/104 346/516/104 -f 356/518/99 355/721/99 351/519/99 -f 349/521/104 353/722/104 354/522/104 -f 374/525/104 375/723/104 376/526/104 -f 376/526/104 357/724/104 358/725/104 -f 358/725/104 359/726/104 376/526/104 -f 359/726/104 360/727/104 361/728/104 -f 376/526/104 359/726/104 372/729/104 -f 361/728/104 362/730/104 359/726/104 -f 362/730/104 372/729/104 359/726/104 -f 372/729/104 373/524/104 376/526/104 -f 363/527/99 364/731/99 365/732/99 -f 365/732/99 366/733/99 363/527/99 -f 366/733/99 367/528/99 363/527/99 -f 367/528/99 368/734/99 371/529/99 -f 368/734/99 369/735/99 371/529/99 -f 369/735/99 370/736/99 371/529/99 -f 371/529/99 377/737/99 378/738/99 -f 378/738/99 363/527/99 371/529/99 -f 381/531/104 380/739/104 379/532/104 -f 379/532/104 394/740/104 393/741/104 -f 393/741/104 387/742/104 379/532/104 -f 387/742/104 386/743/104 385/744/104 -f 379/532/104 387/742/104 383/745/104 -f 385/744/104 384/746/104 387/742/104 -f 384/746/104 383/745/104 387/742/104 -f 383/745/104 382/530/104 379/532/104 -f 392/535/99 391/747/99 390/748/99 -f 390/748/99 389/749/99 392/535/99 -f 389/749/99 388/533/99 392/535/99 -f 388/533/99 395/750/99 398/534/99 -f 395/750/99 396/751/99 398/534/99 -f 396/751/99 397/752/99 398/534/99 -f 398/534/99 399/753/99 400/754/99 -f 400/754/99 392/535/99 398/534/99 -f 402/536/104 401/755/104 227/537/104 -f 221/410/104 403/539/104 402/536/104 -f 225/412/104 404/560/104 403/539/104 -f 404/540/100 412/564/100 411/541/100 -f 403/543/103 411/541/103 410/544/103 -f 402/546/102 410/544/102 409/547/102 -f 408/549/100 418/556/100 416/550/100 -f 405/552/102 415/555/102 417/553/102 -f 415/555/104 416/550/104 418/556/104 -f 417/557/103 348/509/103 346/516/103 -f 225/412/103 226/406/103 412/559/103 -f 226/406/103 228/408/103 409/756/103 -f 412/559/103 226/406/103 409/756/103 -f 228/408/103 227/537/103 409/756/103 -f 227/537/103 401/755/103 409/756/103 -f 424/561/98 422/757/98 434/562/98 -f 434/562/98 435/758/98 421/563/98 -f 421/563/98 423/759/98 424/561/98 -f 423/759/98 443/760/98 441/761/98 -f 424/561/98 423/759/98 441/761/98 -f 410/544/104 411/541/104 412/564/104 -f 450/565/99 454/575/99 456/566/99 -f 451/568/104 455/762/104 453/569/104 -f 455/571/104 457/763/104 459/572/104 -f 460/573/99 458/764/99 456/574/99 -f 460/573/99 464/765/99 462/576/99 -f 457/578/104 461/580/104 463/579/104 -f 461/580/104 465/766/104 467/581/104 -f 462/576/99 464/765/99 468/582/99 -f 472/584/100 476/590/100 475/585/100 -f 469/587/102 473/593/102 474/588/102 -f 470/589/99 474/588/99 476/590/99 -f 471/586/104 475/585/104 473/591/104 -f 473/593/106 477/767/106 478/594/106 -f 478/595/107 477/768/107 475/585/107 -f 348/509/103 417/557/103 418/597/103 -f 418/597/103 408/514/103 345/513/103 -f 485/599/103 486/603/103 483/600/103 -f 481/602/100 483/600/100 486/603/100 -f 480/605/102 485/599/102 484/601/102 -f 495/609/103 496/769/103 497/770/103 -f 497/770/103 498/771/103 499/607/103 -f 499/607/103 500/772/103 501/608/103 -f 501/608/103 502/773/103 495/609/103 -f 495/609/103 497/770/103 499/607/103 -f 519/610/104 525/627/104 526/611/104 -f 509/613/103 510/774/103 507/614/103 -f 505/616/100 507/622/100 510/617/100 -f 504/619/102 509/613/102 508/615/102 -f 506/618/99 510/617/99 509/613/99 -f 503/621/104 508/775/104 507/622/104 -f 517/623/103 518/632/103 515/624/103 -f 523/626/103 524/776/103 526/611/103 -f 531/628/103 532/643/103 534/629/103 -f 513/631/100 515/624/100 518/632/100 -f 512/634/102 517/623/102 516/625/102 -f 521/636/102 523/777/102 525/627/102 -f 529/637/102 531/628/102 533/638/102 -f 520/612/100 526/611/100 524/640/100 -f 528/642/100 534/778/100 532/643/100 -f 531/628/99 529/637/99 530/644/99 -f 546/645/100 557/649/100 561/646/100 -f 542/648/100 550/779/100 557/649/100 -f 561/646/100 549/780/100 539/650/100 -f 559/651/102 555/656/102 545/652/102 -f 559/651/102 544/653/102 540/654/102 -f 555/656/102 548/781/102 541/657/102 -f 551/658/102 547/655/102 540/654/102 -f 541/657/102 548/781/102 552/660/102 -f 560/663/102 551/658/102 535/659/102 -f 535/659/102 536/661/102 556/662/102 -f 536/661/102 552/660/102 556/662/102 -f 539/650/100 549/780/100 553/664/100 -f 554/666/100 550/779/100 542/648/100 -f 558/669/100 554/666/100 538/667/100 -f 538/667/100 537/665/100 562/668/100 -f 537/665/100 553/664/100 562/668/100 -f 565/671/104 567/782/104 571/672/104 -f 571/672/104 572/783/104 563/670/104 -f 572/783/104 568/784/104 563/670/104 -f 564/674/99 569/785/99 573/675/99 -f 573/675/99 574/786/99 566/673/99 -f 574/786/99 570/787/99 566/673/99 -f 580/678/99 578/788/99 576/789/99 -f 576/789/99 590/790/99 588/676/99 -f 588/676/99 586/791/99 584/677/99 -f 584/677/99 582/792/99 580/678/99 -f 580/678/99 576/789/99 588/676/99 -f 589/680/104 575/793/104 577/794/104 -f 577/794/104 579/795/104 589/680/104 -f 579/795/104 581/681/104 589/680/104 -f 581/681/104 583/796/104 585/797/104 -f 585/797/104 587/679/104 581/681/104 -f 608/683/104 609/798/104 610/684/104 -f 610/684/104 591/799/104 592/800/104 -f 592/800/104 593/801/104 610/684/104 -f 593/801/104 594/802/104 595/803/104 -f 610/684/104 593/801/104 606/804/104 -f 595/803/104 596/805/104 593/801/104 -f 596/805/104 606/804/104 593/801/104 -f 606/804/104 607/682/104 610/684/104 -f 597/685/99 598/806/99 599/807/99 -f 599/807/99 600/808/99 597/685/99 -f 600/808/99 601/686/99 597/685/99 -f 601/686/99 602/809/99 605/687/99 -f 602/809/99 603/810/99 605/687/99 -f 603/810/99 604/811/99 605/687/99 -f 605/687/99 611/812/99 612/813/99 -f 612/813/99 597/685/99 605/687/99 -f 615/689/104 614/814/104 613/690/104 -f 613/690/104 628/815/104 627/816/104 -f 627/816/104 621/817/104 613/690/104 -f 621/817/104 620/818/104 619/819/104 -f 613/690/104 621/817/104 617/820/104 -f 619/819/104 618/821/104 621/817/104 -f 618/821/104 617/820/104 621/817/104 -f 617/820/104 616/688/104 613/690/104 -f 626/693/99 625/822/99 624/823/99 -f 624/823/99 623/824/99 626/693/99 -f 623/824/99 622/691/99 626/693/99 -f 622/691/99 629/825/99 632/692/99 -f 629/825/99 630/826/99 632/692/99 -f 630/826/99 631/827/99 632/692/99 -f 632/692/99 633/828/99 634/829/99 -f 634/829/99 626/693/99 632/692/99 +f 637/1110/198 636/1111/198 635/1112/198 +f 638/1113/199 640/1114/199 636/1111/199 +f 637/1115/200 642/1116/200 638/1117/200 +f 635/1118/201 741/1119/201 639/1120/201 +f 656/1121/202 667/1122/202 655/1123/202 +f 663/1124/202 674/1125/202 662/1126/202 +f 660/1127/202 671/1128/202 659/1129/202 +f 666/1130/202 667/1131/202 678/1132/202 +f 656/1121/202 669/1133/202 668/1134/202 +f 663/1124/202 676/1135/202 675/1136/202 +f 660/1127/202 673/1137/202 672/1138/202 +f 657/1139/202 670/1140/202 669/1141/202 +f 665/1142/202 676/1143/202 664/1144/202 +f 661/1145/202 674/1146/202 673/1147/202 +f 659/1129/202 670/1148/202 658/1149/202 +f 666/1130/202 677/1150/202 665/1142/202 +f 683/1151/202 694/1152/202 682/1153/202 +f 690/1154/202 701/1155/202 689/1156/202 +f 680/1157/202 691/1158/202 679/1159/202 +f 687/1160/202 698/1161/202 686/1162/202 +f 683/1151/202 696/1163/202 695/1164/202 +f 690/1154/202 691/1158/202 702/1165/202 +f 681/1166/202 692/1167/202 680/1157/202 +f 688/1168/202 699/1169/202 687/1160/202 +f 684/1170/202 697/1171/202 696/1163/202 +f 682/1153/202 693/1172/202 681/1166/202 +f 689/1156/202 700/1173/202 688/1168/202 +f 685/1174/202 698/1161/202 697/1175/202 +f 713/1176/202 703/1177/202 707/1178/202 +f 717/1179/198 716/1180/198 715/1181/198 +f 721/1182/203 719/1183/203 720/1184/203 +f 717/1185/200 722/1186/200 718/1187/200 +f 716/1188/202 720/1184/202 715/1189/202 +f 718/1190/199 721/1182/199 716/1180/199 +f 715/1191/204 719/1183/204 717/1192/204 +f 725/1193/203 723/1194/203 724/1195/203 +f 723/1194/200 726/1196/200 734/1197/200 +f 742/1198/199 744/1199/199 740/1200/199 +f 640/1114/205 740/1200/205 636/1111/205 +f 639/1120/203 742/1201/203 640/1114/203 +f 636/1111/198 739/1202/198 635/1112/198 +f 744/1203/202 745/1204/202 743/1205/202 +f 740/1206/198 743/1207/198 739/1202/198 +f 739/1208/204 745/1209/204 741/1119/204 +f 741/1210/203 746/1211/203 742/1201/203 +f 724/1195/203 737/1212/203 725/1193/203 +f 751/1213/202 754/1214/202 750/1215/202 +f 738/1216/203 754/1214/203 737/1212/203 +f 762/1217/199 757/1218/199 758/1219/199 +f 820/1220/204 759/1221/204 822/1222/204 +f 819/1223/204 760/1224/204 756/1225/204 +f 770/1226/199 765/1227/199 766/1228/199 +f 763/1229/204 768/1230/204 764/1231/204 +f 787/1232/204 788/1233/204 790/1234/204 +f 777/1235/199 781/1236/199 785/1237/199 +f 796/1238/204 795/1239/204 793/1240/204 +f 802/1241/199 812/1242/199 806/1243/199 +f 816/1244/204 641/1245/204 637/1246/204 +f 635/1118/204 816/1244/204 637/1246/204 +f 639/1120/204 817/1247/204 635/1118/204 +f 818/1248/200 825/1249/200 817/1250/200 +f 817/1251/203 824/1252/203 816/1253/203 +f 816/1254/202 823/1255/202 815/1256/202 +f 822/1257/200 830/1258/200 820/1259/200 +f 819/1260/202 831/1261/202 821/1262/202 +f 829/1263/204 832/1264/204 831/1261/204 +f 831/1265/203 760/1224/203 821/1266/203 +f 826/1267/203 818/1268/203 639/1120/203 +f 838/1269/198 848/1270/198 835/1271/198 +f 824/1252/204 826/1272/204 823/1255/204 +f 864/1273/199 870/1274/199 866/1275/199 +f 865/1276/204 867/1277/204 863/1278/204 +f 869/1279/204 873/1280/204 867/1277/204 +f 874/1281/199 870/1282/199 868/1283/199 +f 874/1281/199 876/1284/199 872/1285/199 +f 871/1286/204 877/1287/204 873/1280/204 +f 875/1288/204 881/1289/204 877/1287/204 +f 876/1284/199 882/1290/199 880/1291/199 +f 886/1292/200 889/1293/200 885/1294/200 +f 883/1295/202 888/1296/202 884/1297/202 +f 884/1297/199 890/1298/199 886/1292/199 +f 885/1294/204 887/1299/204 883/1300/204 +f 887/1301/206 892/1302/206 888/1296/206 +f 892/1303/207 889/1293/207 890/1298/207 +f 887/1299/204 889/1293/204 891/1304/204 +f 888/1296/199 892/1302/199 890/1298/199 +f 762/1217/203 832/1305/203 761/1306/203 +f 832/1305/203 759/1221/203 761/1306/203 +f 899/1307/203 897/1308/203 898/1309/203 +f 895/1310/200 900/1311/200 896/1312/200 +f 894/1313/202 898/1309/202 893/1314/202 +f 913/1315/203 915/1316/203 909/1317/203 +f 933/1318/204 940/1319/204 934/1320/204 +f 923/1321/203 921/1322/203 922/1323/203 +f 919/1324/200 924/1325/200 920/1326/200 +f 918/1327/202 922/1323/202 917/1328/202 +f 920/1326/199 923/1321/199 918/1327/199 +f 917/1329/204 921/1330/204 919/1324/204 +f 931/1331/203 929/1332/203 930/1333/203 +f 937/1334/203 940/1319/203 939/1335/203 +f 945/1336/203 948/1337/203 947/1338/203 +f 927/1339/200 932/1340/200 928/1341/200 +f 926/1342/202 930/1333/202 925/1343/202 +f 935/1344/202 939/1335/202 933/1318/202 +f 943/1345/202 947/1346/202 941/1347/202 +f 934/1320/200 938/1348/200 936/1349/200 +f 942/1350/200 946/1351/200 944/1352/200 +f 945/1336/199 944/1352/199 946/1351/199 +f 960/1353/200 975/1354/200 957/1355/200 +f 956/1356/200 971/1357/200 960/1353/200 +f 975/1354/200 953/1358/200 957/1355/200 +f 973/1359/202 959/1360/202 958/1361/202 +f 973/1359/202 954/1362/202 961/1363/202 +f 969/1364/202 955/1365/202 959/1360/202 +f 965/1366/202 954/1362/202 949/1367/202 +f 955/1365/202 966/1368/202 950/1369/202 +f 970/1370/202 974/1371/202 949/1367/202 +f 953/1358/200 967/1372/200 951/1373/200 +f 968/1374/200 956/1356/200 952/1375/200 +f 976/1376/200 972/1377/200 952/1375/200 +f 977/1378/204 979/1379/204 985/1380/204 +f 980/1381/199 978/1382/199 987/1383/199 +f 1002/1384/199 998/1385/199 994/1386/199 +f 1001/1387/204 1003/1388/204 995/1389/204 +f 1021/1390/204 1022/1391/204 1024/1392/204 +f 1011/1393/199 1015/1394/199 1019/1395/199 +f 1030/1396/204 1029/1397/204 1027/1398/204 +f 1036/1399/199 1046/1400/199 1040/1401/199 +f 637/1110/198 638/1113/198 636/1111/198 +f 638/1113/199 642/1116/199 640/1114/199 +f 637/1115/200 641/1245/200 642/1116/200 +f 635/1118/201 739/1208/201 741/1119/201 +f 656/1121/202 668/1402/202 667/1122/202 +f 663/1124/202 675/1403/202 674/1125/202 +f 660/1127/202 672/1404/202 671/1128/202 +f 666/1130/202 655/1123/202 667/1131/202 +f 656/1121/202 657/1139/202 669/1133/202 +f 663/1124/202 664/1144/202 676/1135/202 +f 660/1127/202 661/1405/202 673/1137/202 +f 657/1139/202 658/1149/202 670/1140/202 +f 665/1142/202 677/1406/202 676/1143/202 +f 661/1145/202 662/1126/202 674/1146/202 +f 659/1129/202 671/1407/202 670/1148/202 +f 666/1130/202 678/1408/202 677/1150/202 +f 683/1151/202 695/1164/202 694/1152/202 +f 690/1154/202 702/1165/202 701/1155/202 +f 680/1157/202 692/1167/202 691/1158/202 +f 687/1160/202 699/1169/202 698/1161/202 +f 683/1151/202 684/1170/202 696/1163/202 +f 690/1154/202 679/1159/202 691/1158/202 +f 681/1166/202 693/1172/202 692/1167/202 +f 688/1168/202 700/1173/202 699/1169/202 +f 684/1170/202 685/1409/202 697/1171/202 +f 682/1153/202 694/1152/202 693/1172/202 +f 689/1156/202 701/1155/202 700/1173/202 +f 685/1174/202 686/1162/202 698/1161/202 +f 703/1177/202 704/1410/202 707/1178/202 +f 704/1410/202 705/1411/202 707/1178/202 +f 705/1411/202 706/1412/202 707/1178/202 +f 707/1178/202 708/1413/202 711/1414/202 +f 708/1413/202 709/1415/202 711/1414/202 +f 709/1415/202 710/1416/202 711/1414/202 +f 711/1414/202 712/1417/202 713/1176/202 +f 713/1176/202 714/1418/202 703/1177/202 +f 711/1414/202 713/1176/202 707/1178/202 +f 717/1179/198 718/1190/198 716/1180/198 +f 721/1182/203 722/1186/203 719/1183/203 +f 717/1185/200 719/1183/200 722/1186/200 +f 716/1188/202 721/1182/202 720/1184/202 +f 718/1190/199 722/1186/199 721/1182/199 +f 715/1191/204 720/1184/204 719/1183/204 +f 725/1193/203 726/1196/203 723/1194/203 +f 726/1196/200 733/1419/200 734/1197/200 +f 734/1197/200 731/1420/200 723/1194/200 +f 731/1420/200 732/1421/200 723/1194/200 +f 742/1198/199 746/1422/199 744/1199/199 +f 640/1114/205 742/1198/205 740/1200/205 +f 639/1120/203 741/1210/203 742/1201/203 +f 636/1111/198 740/1206/198 739/1202/198 +f 744/1203/202 746/1211/202 745/1204/202 +f 740/1206/198 744/1423/198 743/1207/198 +f 739/1208/204 743/1424/204 745/1209/204 +f 741/1210/203 745/1204/203 746/1211/203 +f 724/1195/203 738/1216/203 737/1212/203 +f 750/1215/202 749/1425/202 751/1213/202 +f 749/1425/202 753/1426/202 751/1213/202 +f 753/1426/202 752/1427/202 751/1213/202 +f 738/1216/203 750/1215/203 754/1214/203 +f 762/1217/199 761/1306/199 757/1218/199 +f 820/1220/204 755/1428/204 759/1221/204 +f 819/1223/204 821/1266/204 760/1224/204 +f 770/1226/199 769/1429/199 765/1227/199 +f 763/1229/204 767/1430/204 768/1230/204 +f 788/1233/204 789/1431/204 790/1234/204 +f 790/1234/204 771/1432/204 772/1433/204 +f 772/1433/204 773/1434/204 790/1234/204 +f 773/1434/204 774/1435/204 775/1436/204 +f 790/1234/204 773/1434/204 786/1437/204 +f 775/1436/204 776/1438/204 773/1434/204 +f 776/1438/204 786/1437/204 773/1434/204 +f 786/1437/204 787/1232/204 790/1234/204 +f 777/1235/199 778/1439/199 779/1440/199 +f 779/1440/199 780/1441/199 777/1235/199 +f 780/1441/199 781/1236/199 777/1235/199 +f 781/1236/199 782/1442/199 785/1237/199 +f 782/1442/199 783/1443/199 785/1237/199 +f 783/1443/199 784/1444/199 785/1237/199 +f 785/1237/199 791/1445/199 792/1446/199 +f 792/1446/199 777/1235/199 785/1237/199 +f 795/1239/204 794/1447/204 793/1240/204 +f 793/1240/204 808/1448/204 807/1449/204 +f 807/1449/204 801/1450/204 793/1240/204 +f 801/1450/204 800/1451/204 799/1452/204 +f 793/1240/204 801/1450/204 797/1453/204 +f 799/1452/204 798/1454/204 801/1450/204 +f 798/1454/204 797/1453/204 801/1450/204 +f 797/1453/204 796/1238/204 793/1240/204 +f 806/1243/199 805/1455/199 804/1456/199 +f 804/1456/199 803/1457/199 806/1243/199 +f 803/1457/199 802/1241/199 806/1243/199 +f 802/1241/199 809/1458/199 812/1242/199 +f 809/1458/199 810/1459/199 812/1242/199 +f 810/1459/199 811/1460/199 812/1242/199 +f 812/1242/199 813/1461/199 814/1462/199 +f 814/1462/199 806/1243/199 812/1242/199 +f 816/1244/204 815/1463/204 641/1245/204 +f 635/1118/204 817/1247/204 816/1244/204 +f 639/1120/204 818/1268/204 817/1247/204 +f 818/1248/200 826/1272/200 825/1249/200 +f 817/1251/203 825/1249/203 824/1252/203 +f 816/1254/202 824/1252/202 823/1255/202 +f 822/1257/200 832/1264/200 830/1258/200 +f 819/1260/202 829/1263/202 831/1261/202 +f 829/1263/204 830/1258/204 832/1264/204 +f 831/1265/203 762/1217/203 760/1224/203 +f 639/1120/203 640/1114/203 826/1267/203 +f 640/1114/203 642/1116/203 823/1464/203 +f 826/1267/203 640/1114/203 823/1464/203 +f 642/1116/203 641/1245/203 823/1464/203 +f 641/1245/203 815/1463/203 823/1464/203 +f 838/1269/198 836/1465/198 848/1270/198 +f 848/1270/198 849/1466/198 835/1271/198 +f 835/1271/198 837/1467/198 838/1269/198 +f 837/1467/198 857/1468/198 855/1469/198 +f 838/1269/198 837/1467/198 855/1469/198 +f 824/1252/204 825/1249/204 826/1272/204 +f 864/1273/199 868/1283/199 870/1274/199 +f 865/1276/204 869/1470/204 867/1277/204 +f 869/1279/204 871/1471/204 873/1280/204 +f 874/1281/199 872/1472/199 870/1282/199 +f 874/1281/199 878/1473/199 876/1284/199 +f 871/1286/204 875/1288/204 877/1287/204 +f 875/1288/204 879/1474/204 881/1289/204 +f 876/1284/199 878/1473/199 882/1290/199 +f 886/1292/200 890/1298/200 889/1293/200 +f 883/1295/202 887/1301/202 888/1296/202 +f 884/1297/199 888/1296/199 890/1298/199 +f 885/1294/204 889/1293/204 887/1299/204 +f 887/1301/206 891/1475/206 892/1302/206 +f 892/1303/207 891/1476/207 889/1293/207 +f 762/1217/203 831/1265/203 832/1305/203 +f 832/1305/203 822/1222/203 759/1221/203 +f 899/1307/203 900/1311/203 897/1308/203 +f 895/1310/200 897/1308/200 900/1311/200 +f 894/1313/202 899/1307/202 898/1309/202 +f 909/1317/203 910/1477/203 911/1478/203 +f 911/1478/203 912/1479/203 913/1315/203 +f 913/1315/203 914/1480/203 915/1316/203 +f 915/1316/203 916/1481/203 909/1317/203 +f 909/1317/203 911/1478/203 913/1315/203 +f 933/1318/204 939/1335/204 940/1319/204 +f 923/1321/203 924/1482/203 921/1322/203 +f 919/1324/200 921/1330/200 924/1325/200 +f 918/1327/202 923/1321/202 922/1323/202 +f 920/1326/199 924/1325/199 923/1321/199 +f 917/1329/204 922/1483/204 921/1330/204 +f 931/1331/203 932/1340/203 929/1332/203 +f 937/1334/203 938/1484/203 940/1319/203 +f 945/1336/203 946/1351/203 948/1337/203 +f 927/1339/200 929/1332/200 932/1340/200 +f 926/1342/202 931/1331/202 930/1333/202 +f 935/1344/202 937/1485/202 939/1335/202 +f 943/1345/202 945/1336/202 947/1346/202 +f 934/1320/200 940/1319/200 938/1348/200 +f 942/1350/200 948/1486/200 946/1351/200 +f 945/1336/199 943/1345/199 944/1352/199 +f 960/1353/200 971/1357/200 975/1354/200 +f 956/1356/200 964/1487/200 971/1357/200 +f 975/1354/200 963/1488/200 953/1358/200 +f 973/1359/202 969/1364/202 959/1360/202 +f 973/1359/202 958/1361/202 954/1362/202 +f 969/1364/202 962/1489/202 955/1365/202 +f 965/1366/202 961/1363/202 954/1362/202 +f 955/1365/202 962/1489/202 966/1368/202 +f 974/1371/202 965/1366/202 949/1367/202 +f 949/1367/202 950/1369/202 970/1370/202 +f 950/1369/202 966/1368/202 970/1370/202 +f 953/1358/200 963/1488/200 967/1372/200 +f 968/1374/200 964/1487/200 956/1356/200 +f 972/1377/200 968/1374/200 952/1375/200 +f 952/1375/200 951/1373/200 976/1376/200 +f 951/1373/200 967/1372/200 976/1376/200 +f 979/1379/204 981/1490/204 985/1380/204 +f 985/1380/204 986/1491/204 977/1378/204 +f 986/1491/204 982/1492/204 977/1378/204 +f 978/1382/199 983/1493/199 987/1383/199 +f 987/1383/199 988/1494/199 980/1381/199 +f 988/1494/199 984/1495/199 980/1381/199 +f 994/1386/199 992/1496/199 990/1497/199 +f 990/1497/199 1004/1498/199 1002/1384/199 +f 1002/1384/199 1000/1499/199 998/1385/199 +f 998/1385/199 996/1500/199 994/1386/199 +f 994/1386/199 990/1497/199 1002/1384/199 +f 1003/1388/204 989/1501/204 991/1502/204 +f 991/1502/204 993/1503/204 1003/1388/204 +f 993/1503/204 995/1389/204 1003/1388/204 +f 995/1389/204 997/1504/204 999/1505/204 +f 999/1505/204 1001/1387/204 995/1389/204 +f 1022/1391/204 1023/1506/204 1024/1392/204 +f 1024/1392/204 1005/1507/204 1006/1508/204 +f 1006/1508/204 1007/1509/204 1024/1392/204 +f 1007/1509/204 1008/1510/204 1009/1511/204 +f 1024/1392/204 1007/1509/204 1020/1512/204 +f 1009/1511/204 1010/1513/204 1007/1509/204 +f 1010/1513/204 1020/1512/204 1007/1509/204 +f 1020/1512/204 1021/1390/204 1024/1392/204 +f 1011/1393/199 1012/1514/199 1013/1515/199 +f 1013/1515/199 1014/1516/199 1011/1393/199 +f 1014/1516/199 1015/1394/199 1011/1393/199 +f 1015/1394/199 1016/1517/199 1019/1395/199 +f 1016/1517/199 1017/1518/199 1019/1395/199 +f 1017/1518/199 1018/1519/199 1019/1395/199 +f 1019/1395/199 1025/1520/199 1026/1521/199 +f 1026/1521/199 1011/1393/199 1019/1395/199 +f 1029/1397/204 1028/1522/204 1027/1398/204 +f 1027/1398/204 1042/1523/204 1041/1524/204 +f 1041/1524/204 1035/1525/204 1027/1398/204 +f 1035/1525/204 1034/1526/204 1033/1527/204 +f 1027/1398/204 1035/1525/204 1031/1528/204 +f 1033/1527/204 1032/1529/204 1035/1525/204 +f 1032/1529/204 1031/1528/204 1035/1525/204 +f 1031/1528/204 1030/1396/204 1027/1398/204 +f 1040/1401/199 1039/1530/199 1038/1531/199 +f 1038/1531/199 1037/1532/199 1040/1401/199 +f 1037/1532/199 1036/1399/199 1040/1401/199 +f 1036/1399/199 1043/1533/199 1046/1400/199 +f 1043/1533/199 1044/1534/199 1046/1400/199 +f 1044/1534/199 1045/1535/199 1046/1400/199 +f 1046/1400/199 1047/1536/199 1048/1537/199 +f 1048/1537/199 1040/1401/199 1046/1400/199 s 1 -f 232/830/104 243/431/108 231/831/108 -f 239/832/109 250/436/99 238/833/99 -f 236/834/110 247/437/98 235/835/98 -f 233/836/111 244/441/104 232/830/104 -f 240/837/112 251/434/109 239/832/109 -f 230/838/113 241/415/103 229/839/103 -f 237/840/114 248/418/110 236/834/110 -f 234/841/115 245/421/111 233/836/111 -f 229/839/103 252/422/112 240/837/112 -f 231/831/108 242/413/113 230/838/113 -f 238/833/99 249/416/114 237/840/114 -f 235/842/98 246/419/115 234/841/115 -f 264/843/112 275/448/109 263/844/109 -f 254/845/113 265/451/103 253/846/103 -f 261/847/114 272/454/110 260/848/110 -f 258/849/115 269/443/111 257/850/111 -f 253/846/103 276/446/112 264/843/112 -f 255/851/108 266/449/113 254/845/113 -f 262/852/99 273/452/114 261/847/114 -f 259/853/98 270/462/115 258/849/115 -f 256/854/104 267/458/108 255/851/108 -f 263/844/109 274/460/99 262/852/99 -f 260/848/110 271/466/98 259/855/98 -f 257/850/111 268/445/104 256/854/104 -f 281/456/109 292/856/99 280/444/99 -f 288/457/115 299/857/111 287/447/111 -f 278/459/110 289/858/98 277/450/98 -f 285/461/108 296/859/113 284/453/113 -f 282/455/112 293/860/109 281/456/109 -f 277/450/98 300/861/115 288/457/115 -f 279/464/114 290/862/110 278/459/110 -f 286/465/104 297/863/108 285/461/108 -f 283/463/103 294/864/112 282/455/112 -f 280/444/99 291/865/114 279/464/114 -f 287/447/111 298/866/104 286/465/104 -f 284/453/113 295/867/103 283/467/103 -f 315/868/116 333/869/117 334/870/118 -f 317/871/119 315/868/116 314/872/120 -f 319/873/121 311/485/122 316/874/123 -f 314/872/120 318/875/124 317/871/119 -f 320/876/125 316/874/123 315/868/116 -f 313/877/126 309/878/104 318/875/124 -f 333/869/117 338/879/118 334/870/118 -f 314/872/120 321/880/127 313/877/126 -f 313/877/126 324/881/128 310/882/128 -f 311/485/122 333/883/117 316/874/123 -f 315/868/116 322/884/129 314/872/120 -f 323/885/122 337/886/130 333/883/117 -f 322/884/129 335/887/131 321/880/127 -f 321/888/127 336/889/104 324/881/128 -f 334/870/118 339/890/129 322/884/129 -f 343/891/132 345/513/132 341/892/132 -f 342/893/133 348/509/133 344/894/133 -f 351/895/132 353/722/134 349/896/132 -f 350/897/133 356/518/135 352/898/133 -f 353/722/134 356/518/135 354/522/135 -f 365/899/136 373/900/137 366/901/137 -f 368/902/138 361/903/139 369/904/139 -f 378/905/100 376/906/140 363/907/140 -f 364/908/141 374/909/136 365/899/136 -f 367/910/103 362/911/138 368/902/138 -f 371/912/142 358/913/102 377/914/102 -f 370/915/143 359/916/142 371/912/142 -f 363/907/140 375/917/141 364/908/141 -f 366/901/137 372/918/103 367/910/103 -f 369/904/139 360/919/143 370/915/143 -f 386/920/144 396/921/145 385/922/145 -f 383/923/103 389/924/146 382/925/146 -f 380/926/147 392/927/148 379/928/148 -f 387/929/149 397/930/144 386/920/144 -f 393/931/102 398/932/149 387/929/149 -f 384/933/150 388/934/103 383/923/103 -f 381/935/151 391/936/147 380/926/147 -f 379/928/148 400/937/100 394/938/100 -f 385/922/145 395/939/150 384/933/150 -f 382/925/146 390/940/151 381/935/151 -f 427/941/152 430/942/153 428/943/154 -f 414/944/155 421/945/156 413/946/156 -f 419/947/157 426/948/158 420/949/153 -f 424/950/159 420/949/153 422/951/160 -f 425/952/161 428/943/154 426/948/158 -f 429/953/157 432/954/162 430/942/153 -f 426/955/158 433/956/163 420/957/153 -f 429/958/157 448/959/164 431/960/165 -f 437/961/166 434/562/167 433/956/163 -f 428/962/154 439/963/163 438/964/168 -f 432/954/162 439/963/163 430/942/153 -f 421/945/156 436/965/169 413/946/156 -f 428/962/154 437/961/166 426/955/158 -f 422/966/160 433/956/163 434/562/167 -f 441/967/170 445/968/171 442/969/172 -f 414/944/155 443/970/173 423/971/155 -f 427/972/152 445/968/171 446/973/174 -f 427/972/152 447/974/172 429/958/157 -f 424/975/159 442/969/172 419/976/157 -f 419/976/157 445/968/171 425/977/161 -f 435/758/169 437/961/166 438/964/168 -f 445/968/171 443/978/173 446/973/174 -f 452/567/100 455/979/175 451/980/100 -f 449/570/102 454/575/176 450/565/102 -f 456/574/175 457/981/177 455/982/175 -f 453/569/176 460/573/178 454/575/176 -f 459/572/178 464/765/179 460/573/178 -f 458/577/177 461/983/180 457/984/177 -f 462/576/180 465/985/181 461/983/180 -f 463/579/179 468/582/182 464/765/179 -f 487/986/100 502/987/183 494/988/183 -f 493/989/99 500/990/184 492/991/184 -f 491/992/102 498/993/185 490/994/185 -f 489/995/104 496/996/186 488/997/186 -f 494/988/183 501/998/99 493/989/99 -f 492/991/184 499/999/102 491/992/102 -f 490/994/185 497/1000/104 489/1001/104 -f 488/997/186 495/1002/100 487/986/100 -f 547/1003/121 561/1004/125 559/1005/125 -f 538/667/99 541/657/187 536/661/99 -f 535/1006/104 539/650/188 537/665/104 -f 545/1007/189 543/1008/190 544/1009/190 -f 542/648/187 545/1007/189 541/657/187 -f 540/1010/188 543/1011/190 539/650/188 -f 559/1012/125 557/1013/119 555/1014/119 -f 557/1013/119 548/1015/124 555/1014/119 -f 554/1016/188 548/1015/124 550/1017/124 -f 551/1018/187 549/1019/121 547/1003/121 -f 553/1020/187 560/1021/189 562/1022/189 -f 562/1022/189 556/1023/190 558/1024/190 -f 558/1024/190 552/1025/188 554/1016/188 -f 438/964/168 436/965/169 435/758/169 -f 446/973/174 443/978/173 444/1026/173 -f 566/1027/103 567/1028/177 565/1029/103 -f 563/1030/98 569/1031/191 564/1032/98 -f 571/672/175 573/675/192 572/783/192 -f 570/1033/177 571/672/175 567/1028/177 -f 568/1034/191 573/675/192 569/1031/191 -f 576/1035/100 577/1036/193 575/1037/100 -f 578/1038/193 579/1039/98 577/1036/193 -f 580/1040/98 581/1041/194 579/1042/98 -f 582/1043/194 583/1044/102 581/1041/194 -f 584/1045/102 585/1046/195 583/1044/102 -f 586/1047/195 587/1048/103 585/1046/195 -f 588/1049/103 589/1050/196 587/1048/103 -f 590/1051/196 575/1037/100 589/1050/196 -f 436/965/169 438/964/168 440/1052/197 -f 440/1052/197 438/964/168 439/963/163 -f 448/959/164 447/974/172 446/973/174 -f 444/1026/173 448/959/164 446/973/174 -f 599/1053/136 607/1054/137 600/1055/137 -f 602/1056/138 595/1057/139 603/1058/139 -f 612/1059/100 610/1060/140 597/1061/140 -f 598/1062/141 608/1063/136 599/1053/136 -f 601/1064/103 596/1065/138 602/1056/138 -f 605/1066/142 592/1067/102 611/1068/102 -f 604/1069/143 593/1070/142 605/1066/142 -f 597/1061/140 609/1071/141 598/1062/141 -f 600/1055/137 606/1072/103 601/1064/103 -f 603/1058/139 594/1073/143 604/1069/143 -f 620/1074/144 630/1075/145 619/1076/145 -f 617/1077/103 623/1078/146 616/1079/146 -f 614/1080/147 626/1081/148 613/1082/148 -f 621/1083/149 631/1084/144 620/1074/144 -f 627/1085/102 632/1086/149 621/1083/149 -f 618/1087/150 622/1088/103 617/1077/103 -f 615/1089/151 625/1090/147 614/1080/147 -f 613/1082/148 634/1091/100 628/1092/100 -f 619/1076/145 629/1093/150 618/1087/150 -f 616/1079/146 624/1094/151 615/1089/151 -f 232/830/104 244/441/104 243/431/108 -f 239/832/109 251/434/109 250/436/99 -f 236/834/110 248/418/110 247/437/98 -f 233/836/111 245/421/111 244/441/104 -f 240/837/112 252/422/112 251/434/109 -f 230/838/113 242/413/113 241/415/103 -f 237/840/114 249/416/114 248/418/110 -f 234/841/115 246/419/115 245/421/111 -f 229/839/103 241/415/103 252/422/112 -f 231/831/108 243/431/108 242/413/113 -f 238/833/99 250/436/99 249/416/114 -f 235/842/98 247/697/98 246/419/115 -f 264/843/112 276/446/112 275/448/109 -f 254/845/113 266/449/113 265/451/103 -f 261/847/114 273/452/114 272/454/110 -f 258/849/115 270/462/115 269/443/111 -f 253/846/103 265/451/103 276/446/112 -f 255/851/108 267/458/108 266/449/113 -f 262/852/99 274/460/99 273/452/114 -f 259/853/98 271/701/98 270/462/115 -f 256/854/104 268/445/104 267/458/108 -f 263/844/109 275/448/109 274/460/99 -f 260/848/110 272/454/110 271/466/98 -f 257/850/111 269/443/111 268/445/104 -f 281/456/109 293/860/109 292/856/99 -f 288/457/115 300/861/115 299/857/111 -f 278/459/110 290/862/110 289/858/98 -f 285/461/108 297/863/108 296/859/113 -f 282/455/112 294/864/112 293/860/109 -f 277/450/98 289/858/98 300/861/115 -f 279/464/114 291/865/114 290/862/110 -f 286/465/104 298/866/104 297/863/108 -f 283/463/103 295/1095/103 294/864/112 -f 280/444/99 292/856/99 291/865/114 -f 287/447/111 299/857/111 298/866/104 -f 284/453/113 296/859/113 295/867/103 -f 315/868/116 316/874/123 333/869/117 -f 317/871/119 320/876/125 315/868/116 -f 319/873/121 312/488/99 311/485/122 -f 314/872/120 313/877/126 318/875/124 -f 320/876/125 319/873/121 316/874/123 -f 313/877/126 310/882/128 309/878/104 -f 333/869/117 337/1096/130 338/879/118 -f 314/872/120 322/884/129 321/880/127 -f 313/877/126 321/888/127 324/881/128 -f 311/485/122 323/885/122 333/883/117 -f 315/868/116 334/870/118 322/884/129 -f 323/885/122 340/1097/99 337/886/130 -f 322/884/129 339/890/129 335/887/131 -f 321/888/127 335/1098/131 336/889/104 -f 334/870/118 338/879/118 339/890/129 -f 343/891/132 347/598/132 345/513/132 -f 342/893/133 346/516/133 348/509/133 -f 351/895/132 355/721/134 353/722/134 -f 350/897/133 354/522/135 356/518/135 -f 353/722/134 355/721/134 356/518/135 -f 365/899/136 374/909/136 373/900/137 -f 368/902/138 362/911/138 361/903/139 -f 378/905/100 357/1099/100 376/906/140 -f 364/908/141 375/917/141 374/909/136 -f 367/910/103 372/918/103 362/911/138 -f 371/912/142 359/916/142 358/913/102 -f 370/915/143 360/919/143 359/916/142 -f 363/907/140 376/906/140 375/917/141 -f 366/901/137 373/900/137 372/918/103 -f 369/904/139 361/903/139 360/919/143 -f 386/920/144 397/930/144 396/921/145 -f 383/923/103 388/934/103 389/924/146 -f 380/926/147 391/936/147 392/927/148 -f 387/929/149 398/932/149 397/930/144 -f 393/931/102 399/1100/102 398/932/149 -f 384/933/150 395/939/150 388/934/103 -f 381/935/151 390/940/151 391/936/147 -f 379/928/148 392/927/148 400/937/100 -f 385/922/145 396/921/145 395/939/150 -f 382/925/146 389/924/146 390/940/151 -f 427/941/152 429/953/157 430/942/153 -f 414/944/155 423/971/155 421/945/156 -f 419/947/157 425/952/161 426/948/158 -f 424/950/159 419/947/157 420/949/153 -f 425/952/161 427/941/152 428/943/154 -f 429/953/157 431/1101/165 432/954/162 -f 426/955/158 437/961/166 433/956/163 -f 429/958/157 447/974/172 448/959/164 -f 437/961/166 435/758/169 434/562/167 -f 428/962/154 430/942/153 439/963/163 -f 432/954/162 440/1052/197 439/963/163 -f 421/945/156 435/758/169 436/965/169 -f 428/962/154 438/964/168 437/961/166 -f 422/966/160 420/957/153 433/956/163 -f 441/967/170 443/978/173 445/968/171 -f 414/944/155 444/1102/173 443/970/173 -f 427/972/152 425/977/161 445/968/171 -f 427/972/152 446/973/174 447/974/172 -f 424/975/159 441/967/170 442/969/172 -f 419/976/157 442/969/172 445/968/171 -f 452/567/100 456/566/175 455/979/175 -f 449/570/102 453/569/176 454/575/176 -f 456/574/175 458/764/177 457/981/177 -f 453/569/176 459/572/178 460/573/178 -f 459/572/178 463/579/179 464/765/179 -f 458/577/177 462/576/180 461/983/180 -f 462/576/180 466/583/181 465/985/181 -f 463/579/179 467/581/182 468/582/182 -f 487/986/100 495/1002/100 502/987/183 -f 493/989/99 501/998/99 500/990/184 -f 491/992/102 499/999/102 498/993/185 -f 489/995/104 497/1103/104 496/996/186 -f 494/988/183 502/987/183 501/998/99 -f 492/991/184 500/990/184 499/999/102 -f 490/994/185 498/993/185 497/1000/104 -f 488/997/186 496/996/186 495/1002/100 -f 547/1003/121 549/1019/121 561/1004/125 -f 538/667/99 542/648/187 541/657/187 -f 535/1006/104 540/1010/188 539/650/188 -f 545/1007/189 546/1104/189 543/1008/190 -f 542/648/187 546/1104/189 545/1007/189 -f 540/1010/188 544/1105/190 543/1011/190 -f 559/1012/125 561/1106/125 557/1013/119 -f 557/1013/119 550/1017/124 548/1015/124 -f 554/1016/188 552/1025/188 548/1015/124 -f 551/1018/187 553/1020/187 549/1019/121 -f 553/1020/187 551/1018/187 560/1021/189 -f 562/1022/189 560/1021/189 556/1023/190 -f 558/1024/190 556/1023/190 552/1025/188 -f 566/1027/103 570/1033/177 567/1028/177 -f 563/1030/98 568/1034/191 569/1031/191 -f 571/672/175 574/786/175 573/675/192 -f 570/1033/177 574/786/175 571/672/175 -f 568/1034/191 572/783/192 573/675/192 -f 576/1035/100 578/1038/193 577/1036/193 -f 578/1038/193 580/1107/98 579/1039/98 -f 580/1040/98 582/1043/194 581/1041/194 -f 582/1043/194 584/1045/102 583/1044/102 -f 584/1045/102 586/1047/195 585/1046/195 -f 586/1047/195 588/1049/103 587/1048/103 -f 588/1049/103 590/1051/196 589/1050/196 -f 590/1051/196 576/1035/100 575/1037/100 -f 599/1053/136 608/1063/136 607/1054/137 -f 602/1056/138 596/1065/138 595/1057/139 -f 612/1059/100 591/1108/100 610/1060/140 -f 598/1062/141 609/1071/141 608/1063/136 -f 601/1064/103 606/1072/103 596/1065/138 -f 605/1066/142 593/1070/142 592/1067/102 -f 604/1069/143 594/1073/143 593/1070/142 -f 597/1061/140 610/1060/140 609/1071/141 -f 600/1055/137 607/1054/137 606/1072/103 -f 603/1058/139 595/1057/139 594/1073/143 -f 620/1074/144 631/1084/144 630/1075/145 -f 617/1077/103 622/1088/103 623/1078/146 -f 614/1080/147 625/1090/147 626/1081/148 -f 621/1083/149 632/1086/149 631/1084/144 -f 627/1085/102 633/1109/102 632/1086/149 -f 618/1087/150 629/1093/150 622/1088/103 -f 615/1089/151 624/1094/151 625/1090/147 -f 613/1082/148 626/1081/148 634/1091/100 -f 619/1076/145 630/1075/145 629/1093/150 -f 616/1079/146 623/1078/146 624/1094/151 +f 646/1538/204 657/1139/208 645/1539/208 +f 653/1540/209 664/1144/199 652/1541/199 +f 650/1542/210 661/1145/198 649/1543/198 +f 647/1544/211 658/1149/204 646/1538/204 +f 654/1545/212 665/1142/209 653/1540/209 +f 644/1546/213 655/1123/203 643/1547/203 +f 651/1548/214 662/1126/210 650/1542/210 +f 648/1549/215 659/1129/211 647/1544/211 +f 643/1547/203 666/1130/212 654/1545/212 +f 645/1539/208 656/1121/213 644/1546/213 +f 652/1541/199 663/1124/214 651/1548/214 +f 649/1550/198 660/1127/215 648/1549/215 +f 678/1551/212 689/1156/209 677/1552/209 +f 668/1553/213 679/1159/203 667/1554/203 +f 675/1555/214 686/1162/210 674/1556/210 +f 672/1557/215 683/1151/211 671/1558/211 +f 667/1554/203 690/1154/212 678/1551/212 +f 669/1559/208 680/1157/213 668/1553/213 +f 676/1560/199 687/1160/214 675/1555/214 +f 673/1561/198 684/1170/215 672/1557/215 +f 670/1562/204 681/1166/208 669/1559/208 +f 677/1552/209 688/1168/199 676/1560/199 +f 674/1556/210 685/1174/198 673/1563/198 +f 671/1558/211 682/1153/204 670/1562/204 +f 695/1164/209 706/1564/199 694/1152/199 +f 702/1165/215 713/1565/211 701/1155/211 +f 692/1167/210 703/1566/198 691/1158/198 +f 699/1169/208 710/1567/213 698/1161/213 +f 696/1163/212 707/1568/209 695/1164/209 +f 691/1158/198 714/1569/215 702/1165/215 +f 693/1172/214 704/1570/210 692/1167/210 +f 700/1173/204 711/1571/208 699/1169/208 +f 697/1171/203 708/1572/212 696/1163/212 +f 694/1152/199 705/1573/214 693/1172/214 +f 701/1155/211 712/1574/204 700/1173/204 +f 698/1161/213 709/1575/203 697/1175/203 +f 729/1576/216 747/1577/217 748/1578/218 +f 731/1579/219 729/1576/216 728/1580/220 +f 733/1581/221 725/1193/222 730/1582/223 +f 728/1580/220 732/1583/224 731/1579/219 +f 734/1584/225 730/1582/223 729/1576/216 +f 727/1585/226 723/1586/204 732/1583/224 +f 747/1577/217 752/1587/218 748/1578/218 +f 728/1580/220 735/1588/227 727/1585/226 +f 727/1585/226 738/1589/228 724/1590/228 +f 725/1193/222 747/1591/217 730/1582/223 +f 729/1576/216 736/1592/229 728/1580/220 +f 737/1593/222 751/1594/230 747/1591/217 +f 736/1592/229 749/1595/231 735/1588/227 +f 735/1596/227 750/1597/204 738/1589/228 +f 748/1578/218 753/1598/229 736/1592/229 +f 757/1599/232 759/1221/232 755/1600/232 +f 756/1601/233 762/1217/233 758/1602/233 +f 765/1603/232 767/1430/234 763/1604/232 +f 764/1605/233 770/1226/235 766/1606/233 +f 767/1430/234 770/1226/235 768/1230/235 +f 779/1607/236 787/1608/237 780/1609/237 +f 782/1610/238 775/1611/239 783/1612/239 +f 792/1613/200 790/1614/240 777/1615/240 +f 778/1616/241 788/1617/236 779/1607/236 +f 781/1618/203 776/1619/238 782/1610/238 +f 785/1620/242 772/1621/202 791/1622/202 +f 784/1623/243 773/1624/242 785/1620/242 +f 777/1615/240 789/1625/241 778/1616/241 +f 780/1609/237 786/1626/203 781/1618/203 +f 783/1612/239 774/1627/243 784/1623/243 +f 800/1628/244 810/1629/245 799/1630/245 +f 797/1631/203 803/1632/246 796/1633/246 +f 794/1634/247 806/1635/248 793/1636/248 +f 801/1637/249 811/1638/244 800/1628/244 +f 807/1639/202 812/1640/249 801/1637/249 +f 798/1641/250 802/1642/203 797/1631/203 +f 795/1643/251 805/1644/247 794/1634/247 +f 793/1636/248 814/1645/200 808/1646/200 +f 799/1630/245 809/1647/250 798/1641/250 +f 796/1633/246 804/1648/251 795/1643/251 +f 841/1649/252 844/1650/253 842/1651/254 +f 828/1652/255 835/1653/256 827/1654/256 +f 833/1655/257 840/1656/258 834/1657/253 +f 838/1658/259 834/1657/253 836/1659/260 +f 839/1660/261 842/1651/254 840/1656/258 +f 843/1661/257 846/1662/262 844/1650/253 +f 840/1663/258 847/1664/263 834/1665/253 +f 843/1666/257 862/1667/264 845/1668/265 +f 851/1669/266 848/1270/267 847/1664/263 +f 842/1670/254 853/1671/263 852/1672/268 +f 846/1662/262 853/1671/263 844/1650/253 +f 835/1653/256 850/1673/269 827/1654/256 +f 842/1670/254 851/1669/266 840/1663/258 +f 836/1674/260 847/1664/263 848/1270/267 +f 855/1675/270 859/1676/271 856/1677/272 +f 828/1652/255 857/1678/273 837/1679/255 +f 841/1680/252 859/1676/271 860/1681/274 +f 841/1680/252 861/1682/272 843/1666/257 +f 838/1683/259 856/1677/272 833/1684/257 +f 833/1684/257 859/1676/271 839/1685/261 +f 849/1466/269 851/1669/266 852/1672/268 +f 859/1676/271 857/1686/273 860/1681/274 +f 866/1275/200 869/1687/275 865/1688/200 +f 863/1278/202 868/1283/276 864/1273/202 +f 870/1282/275 871/1689/277 869/1690/275 +f 867/1277/276 874/1281/278 868/1283/276 +f 873/1280/278 878/1473/279 874/1281/278 +f 872/1285/277 875/1691/280 871/1692/277 +f 876/1284/280 879/1693/281 875/1691/280 +f 877/1287/279 882/1290/282 878/1473/279 +f 901/1694/200 916/1695/283 908/1696/283 +f 907/1697/199 914/1698/284 906/1699/284 +f 905/1700/202 912/1701/285 904/1702/285 +f 903/1703/204 910/1704/286 902/1705/286 +f 908/1696/283 915/1706/199 907/1697/199 +f 906/1699/284 913/1707/202 905/1700/202 +f 904/1702/285 911/1708/204 903/1709/204 +f 902/1705/286 909/1710/200 901/1694/200 +f 961/1711/221 975/1712/225 973/1713/225 +f 952/1375/199 955/1365/287 950/1369/199 +f 949/1714/204 953/1358/288 951/1373/204 +f 959/1715/289 957/1716/290 958/1717/290 +f 956/1356/287 959/1715/289 955/1365/287 +f 954/1718/288 957/1719/290 953/1358/288 +f 973/1720/225 971/1721/219 969/1722/219 +f 971/1721/219 962/1723/224 969/1722/219 +f 968/1724/288 962/1723/224 964/1725/224 +f 965/1726/287 963/1727/221 961/1711/221 +f 967/1728/287 974/1729/289 976/1730/289 +f 976/1730/289 970/1731/290 972/1732/290 +f 972/1732/290 966/1733/288 968/1724/288 +f 852/1672/268 850/1673/269 849/1466/269 +f 860/1681/274 857/1686/273 858/1734/273 +f 980/1735/203 981/1736/277 979/1737/203 +f 977/1738/198 983/1739/291 978/1740/198 +f 985/1380/275 987/1383/292 986/1491/292 +f 984/1741/277 985/1380/275 981/1736/277 +f 982/1742/291 987/1383/292 983/1739/291 +f 990/1743/200 991/1744/293 989/1745/200 +f 992/1746/293 993/1747/198 991/1744/293 +f 994/1748/198 995/1749/294 993/1750/198 +f 996/1751/294 997/1752/202 995/1749/294 +f 998/1753/202 999/1754/295 997/1752/202 +f 1000/1755/295 1001/1756/203 999/1754/295 +f 1002/1757/203 1003/1758/296 1001/1756/203 +f 1004/1759/296 989/1745/200 1003/1758/296 +f 850/1673/269 852/1672/268 854/1760/297 +f 854/1760/297 852/1672/268 853/1671/263 +f 862/1667/264 861/1682/272 860/1681/274 +f 858/1734/273 862/1667/264 860/1681/274 +f 1013/1761/236 1021/1762/237 1014/1763/237 +f 1016/1764/238 1009/1765/239 1017/1766/239 +f 1026/1767/200 1024/1768/240 1011/1769/240 +f 1012/1770/241 1022/1771/236 1013/1761/236 +f 1015/1772/203 1010/1773/238 1016/1764/238 +f 1019/1774/242 1006/1775/202 1025/1776/202 +f 1018/1777/243 1007/1778/242 1019/1774/242 +f 1011/1769/240 1023/1779/241 1012/1770/241 +f 1014/1763/237 1020/1780/203 1015/1772/203 +f 1017/1766/239 1008/1781/243 1018/1777/243 +f 1034/1782/244 1044/1783/245 1033/1784/245 +f 1031/1785/203 1037/1786/246 1030/1787/246 +f 1028/1788/247 1040/1789/248 1027/1790/248 +f 1035/1791/249 1045/1792/244 1034/1782/244 +f 1041/1793/202 1046/1794/249 1035/1791/249 +f 1032/1795/250 1036/1796/203 1031/1785/203 +f 1029/1797/251 1039/1798/247 1028/1788/247 +f 1027/1790/248 1048/1799/200 1042/1800/200 +f 1033/1784/245 1043/1801/250 1032/1795/250 +f 1030/1787/246 1038/1802/251 1029/1797/251 +f 646/1538/204 658/1149/204 657/1139/208 +f 653/1540/209 665/1142/209 664/1144/199 +f 650/1542/210 662/1126/210 661/1145/198 +f 647/1544/211 659/1129/211 658/1149/204 +f 654/1545/212 666/1130/212 665/1142/209 +f 644/1546/213 656/1121/213 655/1123/203 +f 651/1548/214 663/1124/214 662/1126/210 +f 648/1549/215 660/1127/215 659/1129/211 +f 643/1547/203 655/1123/203 666/1130/212 +f 645/1539/208 657/1139/208 656/1121/213 +f 652/1541/199 664/1144/199 663/1124/214 +f 649/1550/198 661/1405/198 660/1127/215 +f 678/1551/212 690/1154/212 689/1156/209 +f 668/1553/213 680/1157/213 679/1159/203 +f 675/1555/214 687/1160/214 686/1162/210 +f 672/1557/215 684/1170/215 683/1151/211 +f 667/1554/203 679/1159/203 690/1154/212 +f 669/1559/208 681/1166/208 680/1157/213 +f 676/1560/199 688/1168/199 687/1160/214 +f 673/1561/198 685/1409/198 684/1170/215 +f 670/1562/204 682/1153/204 681/1166/208 +f 677/1552/209 689/1156/209 688/1168/199 +f 674/1556/210 686/1162/210 685/1174/198 +f 671/1558/211 683/1151/211 682/1153/204 +f 695/1164/209 707/1568/209 706/1564/199 +f 702/1165/215 714/1569/215 713/1565/211 +f 692/1167/210 704/1570/210 703/1566/198 +f 699/1169/208 711/1571/208 710/1567/213 +f 696/1163/212 708/1572/212 707/1568/209 +f 691/1158/198 703/1566/198 714/1569/215 +f 693/1172/214 705/1573/214 704/1570/210 +f 700/1173/204 712/1574/204 711/1571/208 +f 697/1171/203 709/1803/203 708/1572/212 +f 694/1152/199 706/1564/199 705/1573/214 +f 701/1155/211 713/1565/211 712/1574/204 +f 698/1161/213 710/1567/213 709/1575/203 +f 729/1576/216 730/1582/223 747/1577/217 +f 731/1579/219 734/1584/225 729/1576/216 +f 733/1581/221 726/1196/199 725/1193/222 +f 728/1580/220 727/1585/226 732/1583/224 +f 734/1584/225 733/1581/221 730/1582/223 +f 727/1585/226 724/1590/228 723/1586/204 +f 747/1577/217 751/1804/230 752/1587/218 +f 728/1580/220 736/1592/229 735/1588/227 +f 727/1585/226 735/1596/227 738/1589/228 +f 725/1193/222 737/1593/222 747/1591/217 +f 729/1576/216 748/1578/218 736/1592/229 +f 737/1593/222 754/1805/199 751/1594/230 +f 736/1592/229 753/1598/229 749/1595/231 +f 735/1596/227 749/1806/231 750/1597/204 +f 748/1578/218 752/1587/218 753/1598/229 +f 757/1599/232 761/1306/232 759/1221/232 +f 756/1601/233 760/1224/233 762/1217/233 +f 765/1603/232 769/1429/234 767/1430/234 +f 764/1605/233 768/1230/235 770/1226/235 +f 767/1430/234 769/1429/234 770/1226/235 +f 779/1607/236 788/1617/236 787/1608/237 +f 782/1610/238 776/1619/238 775/1611/239 +f 792/1613/200 771/1807/200 790/1614/240 +f 778/1616/241 789/1625/241 788/1617/236 +f 781/1618/203 786/1626/203 776/1619/238 +f 785/1620/242 773/1624/242 772/1621/202 +f 784/1623/243 774/1627/243 773/1624/242 +f 777/1615/240 790/1614/240 789/1625/241 +f 780/1609/237 787/1608/237 786/1626/203 +f 783/1612/239 775/1611/239 774/1627/243 +f 800/1628/244 811/1638/244 810/1629/245 +f 797/1631/203 802/1642/203 803/1632/246 +f 794/1634/247 805/1644/247 806/1635/248 +f 801/1637/249 812/1640/249 811/1638/244 +f 807/1639/202 813/1808/202 812/1640/249 +f 798/1641/250 809/1647/250 802/1642/203 +f 795/1643/251 804/1648/251 805/1644/247 +f 793/1636/248 806/1635/248 814/1645/200 +f 799/1630/245 810/1629/245 809/1647/250 +f 796/1633/246 803/1632/246 804/1648/251 +f 841/1649/252 843/1661/257 844/1650/253 +f 828/1652/255 837/1679/255 835/1653/256 +f 833/1655/257 839/1660/261 840/1656/258 +f 838/1658/259 833/1655/257 834/1657/253 +f 839/1660/261 841/1649/252 842/1651/254 +f 843/1661/257 845/1809/265 846/1662/262 +f 840/1663/258 851/1669/266 847/1664/263 +f 843/1666/257 861/1682/272 862/1667/264 +f 851/1669/266 849/1466/269 848/1270/267 +f 842/1670/254 844/1650/253 853/1671/263 +f 846/1662/262 854/1760/297 853/1671/263 +f 835/1653/256 849/1466/269 850/1673/269 +f 842/1670/254 852/1672/268 851/1669/266 +f 836/1674/260 834/1665/253 847/1664/263 +f 855/1675/270 857/1686/273 859/1676/271 +f 828/1652/255 858/1810/273 857/1678/273 +f 841/1680/252 839/1685/261 859/1676/271 +f 841/1680/252 860/1681/274 861/1682/272 +f 838/1683/259 855/1675/270 856/1677/272 +f 833/1684/257 856/1677/272 859/1676/271 +f 866/1275/200 870/1274/275 869/1687/275 +f 863/1278/202 867/1277/276 868/1283/276 +f 870/1282/275 872/1472/277 871/1689/277 +f 867/1277/276 873/1280/278 874/1281/278 +f 873/1280/278 877/1287/279 878/1473/279 +f 872/1285/277 876/1284/280 875/1691/280 +f 876/1284/280 880/1291/281 879/1693/281 +f 877/1287/279 881/1289/282 882/1290/282 +f 901/1694/200 909/1710/200 916/1695/283 +f 907/1697/199 915/1706/199 914/1698/284 +f 905/1700/202 913/1707/202 912/1701/285 +f 903/1703/204 911/1811/204 910/1704/286 +f 908/1696/283 916/1695/283 915/1706/199 +f 906/1699/284 914/1698/284 913/1707/202 +f 904/1702/285 912/1701/285 911/1708/204 +f 902/1705/286 910/1704/286 909/1710/200 +f 961/1711/221 963/1727/221 975/1712/225 +f 952/1375/199 956/1356/287 955/1365/287 +f 949/1714/204 954/1718/288 953/1358/288 +f 959/1715/289 960/1812/289 957/1716/290 +f 956/1356/287 960/1812/289 959/1715/289 +f 954/1718/288 958/1813/290 957/1719/290 +f 973/1720/225 975/1814/225 971/1721/219 +f 971/1721/219 964/1725/224 962/1723/224 +f 968/1724/288 966/1733/288 962/1723/224 +f 965/1726/287 967/1728/287 963/1727/221 +f 967/1728/287 965/1726/287 974/1729/289 +f 976/1730/289 974/1729/289 970/1731/290 +f 972/1732/290 970/1731/290 966/1733/288 +f 980/1735/203 984/1741/277 981/1736/277 +f 977/1738/198 982/1742/291 983/1739/291 +f 985/1380/275 988/1494/275 987/1383/292 +f 984/1741/277 988/1494/275 985/1380/275 +f 982/1742/291 986/1491/292 987/1383/292 +f 990/1743/200 992/1746/293 991/1744/293 +f 992/1746/293 994/1815/198 993/1747/198 +f 994/1748/198 996/1751/294 995/1749/294 +f 996/1751/294 998/1753/202 997/1752/202 +f 998/1753/202 1000/1755/295 999/1754/295 +f 1000/1755/295 1002/1757/203 1001/1756/203 +f 1002/1757/203 1004/1759/296 1003/1758/296 +f 1004/1759/296 990/1743/200 989/1745/200 +f 1013/1761/236 1022/1771/236 1021/1762/237 +f 1016/1764/238 1010/1773/238 1009/1765/239 +f 1026/1767/200 1005/1816/200 1024/1768/240 +f 1012/1770/241 1023/1779/241 1022/1771/236 +f 1015/1772/203 1020/1780/203 1010/1773/238 +f 1019/1774/242 1007/1778/242 1006/1775/202 +f 1018/1777/243 1008/1781/243 1007/1778/242 +f 1011/1769/240 1024/1768/240 1023/1779/241 +f 1014/1763/237 1021/1762/237 1020/1780/203 +f 1017/1766/239 1009/1765/239 1008/1781/243 +f 1034/1782/244 1045/1792/244 1044/1783/245 +f 1031/1785/203 1036/1796/203 1037/1786/246 +f 1028/1788/247 1039/1798/247 1040/1789/248 +f 1035/1791/249 1046/1794/249 1045/1792/244 +f 1041/1793/202 1047/1817/202 1046/1794/249 +f 1032/1795/250 1043/1801/250 1036/1796/203 +f 1029/1797/251 1038/1802/251 1039/1798/247 +f 1027/1790/248 1040/1789/248 1048/1799/200 +f 1033/1784/245 1044/1783/245 1043/1801/250 +f 1030/1787/246 1037/1786/246 1038/1802/251 diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index bc5a0237e..5baf34c5b 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -233,6 +233,19 @@ "weapon.fire.tauRelease": {"category": "player", "sounds": ["weapon/fire/tauRelease1", "weapon/fire/tauRelease2", "weapon/fire/tauRelease3"]}, "weapon.fire.fatman": {"category": "player", "sounds": ["weapon/fire/fatman"]}, "weapon.fire.smack": {"category": "player", "sounds": ["weapon/fire/smack"]}, + "weapon.fire.vstar": {"category": "player", "sounds": ["weapon/fire/vstar"]}, + "weapon.fire.loudestNoiseOnEarth": {"category": "player", "sounds": ["weapon/fire/loudestNoiseOnEarth"]}, + "weapon.fire.disintegration": {"category": "player", "sounds": ["weapon/fire/disintegration"]}, + "weapon.fire.laser": {"category": "player", "sounds": ["weapon/fire/laser"]}, + "weapon.fire.laserGatling": {"category": "player", "sounds": ["weapon/fire/laserGatling"]}, + "weapon.fire.silenced": {"category": "player", "sounds": ["weapon/fire/silenced"]}, + "weapon.fire.assault": {"category": "player", "sounds": ["weapon/fire/assault"]}, + "weapon.fire.pistol": {"category": "player", "sounds": ["weapon/fire/pistol"]}, + "weapon.fire.rifle": {"category": "player", "sounds": ["weapon/fire/rifle"]}, + "weapon.fire.rifleHeavy": {"category": "player", "sounds": ["weapon/fire/rifleHeavy"]}, + "weapon.fire.shotgun": {"category": "player", "sounds": ["weapon/fire/shotgun"]}, + "weapon.fire.shotgunAlt": {"category": "player", "sounds": ["weapon/fire/shotgunAlt"]}, + "weapon.fire.shotgunAuto": {"category": "player", "sounds": ["weapon/fire/shotgunAuto"]}, "weapon.reload.boltClose": {"category": "player", "sounds": ["weapon/reload/boltClose"]}, "weapon.reload.boltOpen": {"category": "player", "sounds": ["weapon/reload/boltOpen"]}, @@ -261,6 +274,7 @@ "weapon.reload.tubeFwoomp": {"category": "player", "sounds": ["weapon/reload/tubeFwoomp"]}, "weapon.reload.impact": {"category": "player", "sounds": ["weapon/reload/impact1", "weapon/reload/impact2", "weapon/reload/impact3"]}, "weapon.reload.fatmanFull": {"category": "player", "sounds": ["weapon/reload/fatmanFull"]}, + "weapon.reload.screw": {"category": "player", "sounds": ["weapon/reload/screw"]}, "weapon.foley.gunWhack": {"category": "player", "sounds": ["weapon/foley/gunWhack", "weapon/foley/gunWhack2"]}, diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/assault.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/assault.ogg new file mode 100644 index 000000000..6a49dbc1d Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/assault.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/disintegration.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/disintegration.ogg new file mode 100644 index 000000000..944cb0fb9 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/disintegration.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/laser.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/laser.ogg new file mode 100644 index 000000000..f6f869bba Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/laser.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/laserGatling.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/laserGatling.ogg new file mode 100644 index 000000000..e24acf08e Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/laserGatling.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/pistol.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/pistol.ogg new file mode 100644 index 000000000..5670830e6 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/pistol.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/rifle.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/rifle.ogg new file mode 100644 index 000000000..eb4f2fa43 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/rifle.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/rifleHeavy.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/rifleHeavy.ogg new file mode 100644 index 000000000..48f650331 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/rifleHeavy.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/shotgun.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/shotgun.ogg new file mode 100644 index 000000000..9c15eb596 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/shotgun.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/shotgunAlt.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/shotgunAlt.ogg new file mode 100644 index 000000000..422dae1e3 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/shotgunAlt.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/shotgunAuto.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/shotgunAuto.ogg new file mode 100644 index 000000000..eb8e6a76c Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/shotgunAuto.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/silenced.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/silenced.ogg new file mode 100644 index 000000000..2e972df03 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/silenced.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/vstar.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/vstar.ogg new file mode 100644 index 000000000..346ffe2eb Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/vstar.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/screw.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/screw.ogg new file mode 100644 index 000000000..e6dd7e05c Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/screw.ogg differ diff --git a/src/main/resources/assets/hbm/textures/blocks/particle/particle_ashes.png b/src/main/resources/assets/hbm/textures/blocks/particle/particle_ashes.png new file mode 100644 index 000000000..4a60bfb70 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/particle/particle_ashes.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelGrenade.png b/src/main/resources/assets/hbm/textures/entity/ModelGrenade.png deleted file mode 100644 index 519dd733d..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelGrenade.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelGrenadeHE.png b/src/main/resources/assets/hbm/textures/entity/ModelGrenadeHE.png deleted file mode 100644 index 870b02d13..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelGrenadeHE.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelGrenadeIncendiary.png b/src/main/resources/assets/hbm/textures/entity/ModelGrenadeIncendiary.png deleted file mode 100644 index 3d175b379..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelGrenadeIncendiary.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelGrenadeSleek.png b/src/main/resources/assets/hbm/textures/entity/ModelGrenadeSleek.png deleted file mode 100644 index 581649526..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelGrenadeSleek.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelGrenadeToxic.png b/src/main/resources/assets/hbm/textures/entity/ModelGrenadeToxic.png deleted file mode 100644 index cd1064afc..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelGrenadeToxic.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelGrenadeTraining.png b/src/main/resources/assets/hbm/textures/entity/ModelGrenadeTraining.png deleted file mode 100644 index bac5fd09f..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelGrenadeTraining.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelRocket.png b/src/main/resources/assets/hbm/textures/entity/ModelRocket.png deleted file mode 100644 index 9ada99c32..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelRocket.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelRocketCanister.png b/src/main/resources/assets/hbm/textures/entity/ModelRocketCanister.png deleted file mode 100644 index 3b1507beb..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelRocketCanister.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelRocketEMP.png b/src/main/resources/assets/hbm/textures/entity/ModelRocketEMP.png deleted file mode 100644 index 5dcff98f2..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelRocketEMP.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelRocketGlare.png b/src/main/resources/assets/hbm/textures/entity/ModelRocketGlare.png deleted file mode 100644 index 0a3c2aa52..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelRocketGlare.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelRocketHE.png b/src/main/resources/assets/hbm/textures/entity/ModelRocketHE.png deleted file mode 100644 index 275146752..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelRocketHE.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelRocketIncendiary.png b/src/main/resources/assets/hbm/textures/entity/ModelRocketIncendiary.png deleted file mode 100644 index d85bb21cc..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelRocketIncendiary.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelRocketNuclear.png b/src/main/resources/assets/hbm/textures/entity/ModelRocketNuclear.png deleted file mode 100644 index 81bf7d0e5..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelRocketNuclear.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelRocketPhosphorus.png b/src/main/resources/assets/hbm/textures/entity/ModelRocketPhosphorus.png deleted file mode 100644 index 30a9c896d..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelRocketPhosphorus.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelRocketShrapnel.png b/src/main/resources/assets/hbm/textures/entity/ModelRocketShrapnel.png deleted file mode 100644 index 62fa9befd..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelRocketShrapnel.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelRocketSleek.png b/src/main/resources/assets/hbm/textures/entity/ModelRocketSleek.png deleted file mode 100644 index cd8b70153..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelRocketSleek.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/dummy.png b/src/main/resources/assets/hbm/textures/entity/dummy.png new file mode 100644 index 000000000..2bef2f04e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/dummy.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo.png b/src/main/resources/assets/hbm/textures/items/ammo.png index 815edf631..58ed1d739 100644 Binary files a/src/main/resources/assets/hbm/textures/items/ammo.png and b/src/main/resources/assets/hbm/textures/items/ammo.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.bmg50_equestrian.png b/src/main/resources/assets/hbm/textures/items/ammo_secret.bmg50_equestrian.png similarity index 100% rename from src/main/resources/assets/hbm/textures/items/ammo_standard.bmg50_equestrian.png rename to src/main/resources/assets/hbm/textures/items/ammo_secret.bmg50_equestrian.png diff --git a/src/main/resources/assets/hbm/textures/items/ammo_secret.folly_nuke.png b/src/main/resources/assets/hbm/textures/items/ammo_secret.folly_nuke.png new file mode 100644 index 000000000..29a262ca2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_secret.folly_nuke.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_secret.folly_sm.png b/src/main/resources/assets/hbm/textures/items/ammo_secret.folly_sm.png new file mode 100644 index 000000000..30efa4d03 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_secret.folly_sm.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.g12_equestrian.png b/src/main/resources/assets/hbm/textures/items/ammo_secret.g12_equestrian.png similarity index 100% rename from src/main/resources/assets/hbm/textures/items/ammo_standard.g12_equestrian.png rename to src/main/resources/assets/hbm/textures/items/ammo_secret.g12_equestrian.png diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.m44_equestrian.png b/src/main/resources/assets/hbm/textures/items/ammo_secret.m44_equestrian.png similarity index 100% rename from src/main/resources/assets/hbm/textures/items/ammo_standard.m44_equestrian.png rename to src/main/resources/assets/hbm/textures/items/ammo_secret.m44_equestrian.png diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.capacitor_ir.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.capacitor_ir.png new file mode 100644 index 000000000..0b398e264 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.capacitor_ir.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_ap.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_ap.png index 2a751e076..2f00653e3 100644 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_ap.png and b/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_ap.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_fmj.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_fmj.png index 1112b26c1..cfe452c8d 100644 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_fmj.png and b/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_fmj.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_jhp.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_jhp.png index 62179c6c3..12bee077c 100644 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_jhp.png and b/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_jhp.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_sp.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_sp.png index 40470f133..84b3d03a4 100644 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_sp.png and b/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_sp.png differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelFolly.png b/src/main/resources/assets/hbm/textures/models/ModelFolly.png deleted file mode 100644 index 065460dca..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelFolly.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelTwiGun.png b/src/main/resources/assets/hbm/textures/models/ModelTwiGun.png deleted file mode 100755 index 403da0f56..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelTwiGun.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/SteelBeam.png b/src/main/resources/assets/hbm/textures/models/SteelBeam.png deleted file mode 100644 index aca7ef40f..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/SteelBeam.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/SteelCorner.png b/src/main/resources/assets/hbm/textures/models/SteelCorner.png deleted file mode 100644 index 585b3bd3d..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/SteelCorner.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/SteelScaffold.png b/src/main/resources/assets/hbm/textures/models/SteelScaffold.png deleted file mode 100644 index 9ea7ecbea..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/SteelScaffold.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/SteelWall.png b/src/main/resources/assets/hbm/textures/models/SteelWall.png deleted file mode 100644 index 7ea292660..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/SteelWall.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/bombs/mine_ap_desert.png b/src/main/resources/assets/hbm/textures/models/bombs/mine_ap_desert.png new file mode 100644 index 000000000..e489023d6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/bombs/mine_ap_desert.png differ diff --git a/src/main/resources/assets/hbm/textures/models/bombs/mine_ap_grass.png b/src/main/resources/assets/hbm/textures/models/bombs/mine_ap_grass.png new file mode 100644 index 000000000..293089481 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/bombs/mine_ap_grass.png differ diff --git a/src/main/resources/assets/hbm/textures/models/bombs/mine_ap_snow.png b/src/main/resources/assets/hbm/textures/models/bombs/mine_ap_snow.png new file mode 100644 index 000000000..56400bed9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/bombs/mine_ap_snow.png differ diff --git a/src/main/resources/assets/hbm/textures/models/bombs/mine_ap_stone.png b/src/main/resources/assets/hbm/textures/models/bombs/mine_ap_stone.png new file mode 100644 index 000000000..fafacb3f5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/bombs/mine_ap_stone.png differ diff --git a/src/main/resources/assets/hbm/textures/models/bombs/mine_shrapnel.png b/src/main/resources/assets/hbm/textures/models/bombs/mine_shrapnel.png new file mode 100644 index 000000000..2956d1bde Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/bombs/mine_shrapnel.png differ diff --git a/src/main/resources/assets/hbm/textures/models/dornier_0.png b/src/main/resources/assets/hbm/textures/models/dornier_0.png deleted file mode 100644 index c5552e2b8..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/dornier_0.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/dornier_3.png b/src/main/resources/assets/hbm/textures/models/dornier_3.png deleted file mode 100644 index 00c8985cb..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/dornier_3.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/ammo_press.png b/src/main/resources/assets/hbm/textures/models/machines/ammo_press.png new file mode 100644 index 000000000..77c7930ae Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/ammo_press.png differ diff --git a/src/main/resources/assets/hbm/textures/models/mine_ap.png b/src/main/resources/assets/hbm/textures/models/mine_ap.png deleted file mode 100644 index 073f2a657..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/mine_ap.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/mine_shrap.png b/src/main/resources/assets/hbm/textures/models/mine_shrap.png deleted file mode 100644 index 6e89e8bc8..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/mine_shrap.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/test_container_double.png b/src/main/resources/assets/hbm/textures/models/test_container_double.png deleted file mode 100644 index 182a96c72..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/test_container_double.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/test_container_single.png b/src/main/resources/assets/hbm/textures/models/test_container_single.png deleted file mode 100644 index c00662549..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/test_container_single.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/bio_revolver.png b/src/main/resources/assets/hbm/textures/models/weapons/bio_revolver.png index 32a05672c..b8590707a 100644 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/bio_revolver.png and b/src/main/resources/assets/hbm/textures/models/weapons/bio_revolver.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/bio_revolver_atlas.png b/src/main/resources/assets/hbm/textures/models/weapons/bio_revolver_atlas.png new file mode 100644 index 000000000..32a05672c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/bio_revolver_atlas.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/c130_0.png b/src/main/resources/assets/hbm/textures/models/weapons/c130_0.png new file mode 100644 index 000000000..04729bcdf Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/c130_0.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/carbine.png b/src/main/resources/assets/hbm/textures/models/weapons/carbine.png deleted file mode 100644 index 49b5f2796..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/carbine.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/flamethrower.png b/src/main/resources/assets/hbm/textures/models/weapons/flamethrower.png index d27d13845..192380382 100644 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/flamethrower.png and b/src/main/resources/assets/hbm/textures/models/weapons/flamethrower.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/flamethrower_daybreaker.png b/src/main/resources/assets/hbm/textures/models/weapons/flamethrower_daybreaker.png new file mode 100644 index 000000000..abb9a52d9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/flamethrower_daybreaker.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/flamethrower_topaz.png b/src/main/resources/assets/hbm/textures/models/weapons/flamethrower_topaz.png new file mode 100644 index 000000000..53c100c73 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/flamethrower_topaz.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/g3.png b/src/main/resources/assets/hbm/textures/models/weapons/g3.png index 6c19d9949..7e1c48640 100644 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/g3.png and b/src/main/resources/assets/hbm/textures/models/weapons/g3.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/minigun_lacunae.png b/src/main/resources/assets/hbm/textures/models/weapons/minigun_lacunae.png new file mode 100644 index 000000000..66bfa6d81 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/minigun_lacunae.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/moonlight.png b/src/main/resources/assets/hbm/textures/models/weapons/moonlight.png index b4303c8c8..36b7c8dc7 100644 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/moonlight.png and b/src/main/resources/assets/hbm/textures/models/weapons/moonlight.png differ diff --git a/src/main/resources/assets/hbm/textures/particle/skeleton.png b/src/main/resources/assets/hbm/textures/particle/skeleton.png new file mode 100644 index 000000000..184b5853e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/particle/skeleton.png differ diff --git a/src/main/resources/assets/hbm/textures/particle/skoilet.png b/src/main/resources/assets/hbm/textures/particle/skoilet.png new file mode 100644 index 000000000..971df0043 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/particle/skoilet.png differ