diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index 324c67a97..5f50d8f1a 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -205,6 +205,7 @@ public class EntityMappings { addEntity(EntityFallingBlockNT.class, "entity_falling_block_nt", 1000); addEntity(EntityBoatRubber.class, "entity_rubber_boat", 250, false); addEntity(EntityMissileStealth.class, "entity_missile_stealth", 1000); + addEntity(EntityCoin.class, "entity_coin", 1000); addEntity(EntityItemWaste.class, "entity_item_waste", 100); addEntity(EntityItemBuoyant.class, "entity_item_buoyant", 100); diff --git a/src/main/java/com/hbm/entity/projectile/EntityBulletBeamBase.java b/src/main/java/com/hbm/entity/projectile/EntityBulletBeamBase.java index 036971822..b14a5f80b 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityBulletBeamBase.java +++ b/src/main/java/com/hbm/entity/projectile/EntityBulletBeamBase.java @@ -2,14 +2,19 @@ package com.hbm.entity.projectile; import java.util.List; +import com.hbm.handler.threading.PacketThreading; import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.packet.toclient.AuxParticlePacketNT; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.common.registry.IEntityAdditionalSpawnData; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.monster.EntityMob; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; @@ -144,9 +149,30 @@ public class EntityBulletBeamBase extends Entity implements IEntityAdditionalSpa if(!this.worldObj.isRemote && this.doesImpactEntities()) { Entity hitEntity = null; - List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.addCoord(this.headingX, this.headingY, this.headingZ).expand(1.0D, 1.0D, 1.0D)); + List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.addCoord(this.headingX, this.headingY, this.headingZ).expand(1.0D, 1.0D, 1.0D)); double nearest = 0.0D; MovingObjectPosition nonPenImpact = null; + MovingObjectPosition coinHit = null; + + double closestCoin = 0; + EntityCoin hitCoin = null; + + for(Entity entity : list) { + if(entity.isDead) continue; + if(entity instanceof EntityCoin) { + double hitbox = 0.3F; + AxisAlignedBB aabb = entity.boundingBox.expand(hitbox, hitbox, hitbox); + MovingObjectPosition hitMop = aabb.calculateIntercept(pos, nextPos); + if(hitMop != null) { + double dist = pos.distanceTo(hitMop.hitVec); + if(closestCoin == 0 || dist < closestCoin) { + closestCoin = dist; + hitCoin = (EntityCoin) entity; + coinHit = hitMop; + } + } + } + } for(int j = 0; j < list.size(); ++j) { Entity entity = (Entity) list.get(j); @@ -158,13 +184,14 @@ public class EntityBulletBeamBase extends Entity implements IEntityAdditionalSpa if(hitMop != null) { + double dist = pos.distanceTo(hitMop.hitVec); + // if penetration is enabled, run impact for all intersecting entities if(this.doesPenetrate()) { - this.onImpact(new MovingObjectPosition(entity, hitMop.hitVec)); + if(hitCoin == null || dist < closestCoin) { + this.onImpact(new MovingObjectPosition(entity, hitMop.hitVec)); + } } else { - - double dist = pos.distanceTo(hitMop.hitVec); - if(dist < nearest || nearest == 0.0D) { hitEntity = entity; nearest = dist; @@ -179,6 +206,86 @@ public class EntityBulletBeamBase extends Entity implements IEntityAdditionalSpa if(!this.doesPenetrate() && hitEntity != null) { mop = new MovingObjectPosition(hitEntity, nonPenImpact.hitVec); } + + if(hitCoin != null) { + Vec3 vec = Vec3.createVectorHelper(coinHit.hitVec.xCoord - posX, coinHit.hitVec.yCoord - posY, coinHit.hitVec.zCoord - posZ); + this.beamLength = vec.lengthVector(); + + double range = 50; + List targets = worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(coinHit.hitVec.xCoord, coinHit.hitVec.yCoord, coinHit.hitVec.zCoord, coinHit.hitVec.xCoord, coinHit.hitVec.yCoord, coinHit.hitVec.zCoord).expand(range, range, range)); + Entity nearestCoin = null; + Entity nearestPlayer = null; + Entity nearestMob = null; + Entity nearestOther = null; + double coinDist = 0; + double playerDist = 0; + double mobDist = 0; + double otherDist = 0; + + hitCoin.setDead(); + + // well i mean we could just uuse a single var for all variants and then overwrite stuff + // when we run into things with higher priority. however i can't be assed fuck off + for(Entity entity : targets) { + if(entity == this.getThrower()) continue; + if(entity.isDead) continue; + double dist = entity.getDistanceToEntity(hitCoin); + if(dist > range) continue; + + if(entity instanceof EntityCoin) { + if(coinDist == 0 || dist < coinDist) { + coinDist = dist; + nearestCoin = entity; + } + } else if(entity instanceof EntityPlayer) { + if(playerDist == 0 || dist < playerDist) { + playerDist = dist; + nearestPlayer = entity; + } + } else if(entity instanceof EntityMob) { + if(mobDist == 0 || dist < mobDist) { + mobDist = dist; + nearestMob = entity; + } + } else if(entity instanceof EntityLivingBase) { + if(otherDist == 0 || dist < otherDist) { + otherDist = dist; + nearestOther = entity; + } + } + } + + // ternary of shame + Entity target = nearestCoin != null ? nearestCoin : + nearestPlayer != null ? nearestPlayer : + nearestMob != null ? nearestMob : + nearestOther != null ? nearestOther : null; + + if(target != null) { + EntityBulletBeamBase newBeam = new EntityBulletBeamBase(hitCoin.getThrower() != null ? hitCoin.getThrower() : this.thrower, this.config, this.damage * 1.25F); + newBeam.setPosition(coinHit.hitVec.xCoord, coinHit.hitVec.yCoord, coinHit.hitVec.zCoord); + Vec3 delta = Vec3.createVectorHelper(target.posX - newBeam.posX, (target.posY + target.height / 2D) - newBeam.posY, target.posZ - newBeam.posZ); + newBeam.setRotationsFromVector(delta); + newBeam.performHitscanExternal(delta.lengthVector()); + worldObj.spawnEntityInWorld(newBeam); + } else { + EntityBulletBeamBase newBeam = new EntityBulletBeamBase(hitCoin.getThrower() != null ? hitCoin.getThrower() : this.thrower, this.config, this.damage * 1.25F); + newBeam.setPosition(coinHit.hitVec.xCoord, coinHit.hitVec.yCoord, coinHit.hitVec.zCoord); + newBeam.setRotationsFromVector(Vec3.createVectorHelper(rand.nextGaussian() * 0.5, -1, rand.nextGaussian() * 0.5)); + newBeam.performHitscanExternal(100); + worldObj.spawnEntityInWorld(newBeam); + } + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaExt"); + data.setString("mode", "largeexplode"); + data.setFloat("size", 1.5F); + data.setByte("count", (byte)1); + PacketThreading.createAllAroundThreadedPacket(new AuxParticlePacketNT(data, coinHit.hitVec.xCoord, coinHit.hitVec.yCoord, coinHit.hitVec.zCoord), new TargetPoint(worldObj.provider.dimensionId, coinHit.hitVec.xCoord, coinHit.hitVec.yCoord, coinHit.hitVec.zCoord, 100)); + + + return; + } } if(mop != null) { diff --git a/src/main/java/com/hbm/entity/projectile/EntityCoin.java b/src/main/java/com/hbm/entity/projectile/EntityCoin.java new file mode 100644 index 000000000..15b1c6a33 --- /dev/null +++ b/src/main/java/com/hbm/entity/projectile/EntityCoin.java @@ -0,0 +1,51 @@ +package com.hbm.entity.projectile; + +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.World; + +public class EntityCoin extends EntityThrowableInterp { + + public EntityCoin(World world) { + super(world); + this.setSize(1F, 1F); + this.yOffset = 0.5F; + } + + @Override + public void onUpdate() { + super.onUpdate(); + } + + public void setPosition(double x, double y, double z) { + this.posX = x; + this.posY = y; + this.posZ = z; + float f = this.width / 2.0F; + this.boundingBox.setBounds(x - f, y - this.yOffset + this.ySize, z - f, x + f, y - this.yOffset + this.ySize + this.height, z + f); + } + + @Override + protected void onImpact(MovingObjectPosition mop) { + if(mop.typeOfHit == mop.typeOfHit.BLOCK) this.setDead(); + } + + @Override + protected float getAirDrag() { + return 1F; + } + + @Override + public double getGravityVelocity() { + return 0.02D; + } + + @Override + public boolean canBeCollidedWith() { + return true; + } + + @Override + public boolean canAttackWithItem() { + return true; + } +} diff --git a/src/main/java/com/hbm/handler/ae2/ArcFurnaceLargeMEInventory.java b/src/main/java/com/hbm/handler/ae2/ArcFurnaceLargeMEInventory.java index 5698bebed..3245629e6 100644 --- a/src/main/java/com/hbm/handler/ae2/ArcFurnaceLargeMEInventory.java +++ b/src/main/java/com/hbm/handler/ae2/ArcFurnaceLargeMEInventory.java @@ -1,7 +1,6 @@ package com.hbm.handler.ae2; import com.hbm.tileentity.machine.TileEntityMachineArcFurnaceLarge; -import com.hbm.tileentity.TileEntityProxyCombo; import cpw.mods.fml.common.Optional; @@ -14,47 +13,47 @@ import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IItemList; import net.minecraft.item.ItemStack; -@Optional.InterfaceList({@Optional.Interface(iface = "appeng.api.storage.IMEInventory", modid = "appliedenergistics2")}) +@Optional.InterfaceList({ @Optional.Interface(iface = "appeng.api.storage.IMEInventory", modid = "appliedenergistics2") }) public class ArcFurnaceLargeMEInventory implements IMEInventory { - private TileEntityMachineArcFurnaceLarge afl; + private TileEntityMachineArcFurnaceLarge afl; - public ArcFurnaceLargeMEInventory(TileEntityMachineArcFurnaceLarge afl) { - this.afl = afl; - } + public ArcFurnaceLargeMEInventory(TileEntityMachineArcFurnaceLarge afl) { + this.afl = afl; + } - @Override - public IAEItemStack injectItems(IAEItemStack input, Actionable type, BaseActionSource src) { - ItemStack is = input.getItemStack(); - is = afl.distributeInput(is, type == Actionable.MODULATE); + @Override + public IAEItemStack injectItems(IAEItemStack input, Actionable type, BaseActionSource src) { + ItemStack is = input.getItemStack(); + is = afl.distributeInput(is, type == Actionable.MODULATE); if(is == null) return null; - return AEApi.instance().storage().createItemStack(is); - } + return AEApi.instance().storage().createItemStack(is); + } - @Override - public IAEItemStack extractItems(IAEItemStack request, Actionable mode, BaseActionSource src) { + @Override + public IAEItemStack extractItems(IAEItemStack request, Actionable mode, BaseActionSource src) { ItemStack is = request.getItemStack(); is = afl.collectRequested(is, mode == Actionable.MODULATE); if(is == null) return null; return AEApi.instance().storage().createItemStack(is); - } + } - @Override - public IItemList getAvailableItems(IItemList out) { - ItemStack is; + @Override + public IItemList getAvailableItems(IItemList out) { + ItemStack is; for(int i = 0; i < 25; i++) { is = afl.getAvailableItemFromSlot(i); - if(is != null) out.add(AEApi.instance().storage().createItemStack(is)); + if(is != null) + out.add(AEApi.instance().storage().createItemStack(is)); } - return out; - } - - @Override - public StorageChannel getChannel() { - return StorageChannel.ITEMS; - } + return out; + } + @Override + public StorageChannel getChannel() { + return StorageChannel.ITEMS; + } } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 8a8c42675..0025e1f51 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1476,7 +1476,7 @@ public class ModItems { public static Item gun_aberrator_eott; public static Item gun_double_barrel; public static Item gun_double_barrel_sacred_dragon; - public static Item gun_n_i_4_n_i; // we GET THERE when we GET THERE + public static Item gun_n_i_4_n_i; public static Item gun_charge_thrower; @@ -6400,6 +6400,7 @@ public class ModItems { GameRegistry.registerItem(gun_aberrator_eott, gun_aberrator_eott.getUnlocalizedName()); GameRegistry.registerItem(gun_double_barrel, gun_double_barrel.getUnlocalizedName()); GameRegistry.registerItem(gun_double_barrel_sacred_dragon, gun_double_barrel_sacred_dragon.getUnlocalizedName()); + GameRegistry.registerItem(gun_n_i_4_n_i, gun_n_i_4_n_i.getUnlocalizedName()); GameRegistry.registerItem(gun_fireext, gun_fireext.getUnlocalizedName()); GameRegistry.registerItem(gun_charge_thrower, gun_charge_thrower.getUnlocalizedName()); 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 c43550972..f950c9590 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java +++ b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java @@ -19,6 +19,7 @@ import com.hbm.items.IKeybindReceiver; import com.hbm.items.armor.ArmorTrenchmaster; import com.hbm.items.weapon.sedna.hud.IHUDComponent; import com.hbm.items.weapon.sedna.mags.IMagazine; +import com.hbm.items.weapon.sedna.mags.MagazineInfinite; import com.hbm.items.weapon.sedna.mods.WeaponModManager; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; @@ -173,7 +174,9 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, I GunConfig config = getConfig(stack, i); for(Receiver rec : config.getReceivers(stack)) { IMagazine mag = rec.getMagazine(stack); - list.add(I18nUtil.resolveKey("gui.weapon.ammo") + ": " + mag.getIconForHUD(stack, player).getDisplayName() + " " + mag.reportAmmoStateForHUD(stack, player)); + if(!(mag instanceof MagazineInfinite)) { + list.add(I18nUtil.resolveKey("gui.weapon.ammo") + ": " + mag.getIconForHUD(stack, player).getDisplayName() + " " + mag.reportAmmoStateForHUD(stack, player)); + } float dmg = rec.getBaseDamage(stack); list.add(I18nUtil.resolveKey("gui.weapon.baseDamage") + ": " + FORMAT_DMG.format(dmg)); if(mag.getType(stack, player.inventory) instanceof BulletConfig) { 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 dfa406299..acca45ca7 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 @@ -101,6 +101,7 @@ public class GunFactoryClient { MinecraftForgeClient.registerItemRenderer(ModItems.gun_double_barrel, new ItemRenderDoubleBarrel(ResourceManager.double_barrel_tex)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_double_barrel_sacred_dragon, new ItemRenderDoubleBarrel(ResourceManager.double_barrel_sacred_dragon_tex)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_charge_thrower, new ItemRenderChargeThrower()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_n_i_4_n_i, new ItemRenderNI4NI()); //PROJECTILES ammo_debug.setRenderer(LegoClient.RENDER_STANDARD_BULLET); @@ -226,6 +227,8 @@ public class GunFactoryClient { p35800.setRendererBeam(LegoClient.RENDER_CRACKLE); p35800_bl.setRendererBeam(LegoClient.RENDER_BLACK_LIGHTNING); + + ni4ni_arc.setRendererBeam(LegoClient.RENDER_NI4NI_BOLT); ct_hook.setRenderer(LegoClient.RENDER_CT_HOOK); ct_mortar.setRenderer(LegoClient.RENDER_CT_MORTAR); 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 0b835d173..a2bf670d2 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 @@ -397,6 +397,25 @@ public class LegoClient { GL11.glPopMatrix(); RenderArcFurnace.fullbright(false); }; + + public static BiConsumer RENDER_NI4NI_BOLT = (bullet, interp) -> { + + RenderArcFurnace.fullbright(true); + double age = MathHelper.clamp_double(1D - ((double) bullet.ticksExisted - 2 + interp) / (double) bullet.getBulletConfig().expires, 0, 1); + + GL11.glPushMatrix(); + GL11.glRotatef(180 - bullet.rotationYaw, 0, 1F, 0); + GL11.glRotatef(-bullet.rotationPitch - 90, 1F, 0, 0); + + double scale = 5D; + GL11.glScaled(age * scale, 1, age * scale); + GL11.glTranslated(0, bullet.beamLength, 0); + GL11.glRotatef(-90, 0, 0, 1); + renderBulletStandard(Tessellator.instance, 0xAAD2E5, 0xffffff, bullet.beamLength, true); + + GL11.glPopMatrix(); + RenderArcFurnace.fullbright(false); + }; public static BiConsumer RENDER_LASER_RED = (bullet, interp) -> { renderStandardLaser(bullet, interp, 0x80, 0x15, 0x15); 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 7f8bfa5a9..86905b000 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 @@ -5,6 +5,7 @@ import java.util.function.BiFunction; import java.util.function.Consumer; import com.hbm.entity.projectile.EntityBulletBeamBase; +import com.hbm.entity.projectile.EntityCoin; import com.hbm.items.ModItems; import com.hbm.items.weapon.sedna.BulletConfig; import com.hbm.items.weapon.sedna.Crosshair; @@ -14,7 +15,9 @@ import com.hbm.items.weapon.sedna.Receiver; 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.impl.ItemGunNI4NI; import com.hbm.items.weapon.sedna.mags.MagazineBelt; +import com.hbm.items.weapon.sedna.mags.MagazineInfinite; import com.hbm.items.weapon.sedna.mags.MagazineSingleReload; import com.hbm.main.MainRegistry; import com.hbm.render.anim.BusAnimation; @@ -22,11 +25,13 @@ 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 com.hbm.util.Vec3NT; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.Vec3; @@ -41,6 +46,8 @@ public class XFactoryAccelerator { public static BulletConfig coil_tungsten; public static BulletConfig coil_ferrouranium; + public static BulletConfig ni4ni_arc; + public static Consumer LAMBDA_UPDATE_TUNGSTEN = (entity) -> {breakInPath(entity, 1.25F); }; public static Consumer LAMBDA_UPDATE_FERRO = (entity) -> { breakInPath(entity, 2.5F); }; @@ -89,6 +96,9 @@ public class XFactoryAccelerator { .setOnUpdate(LAMBDA_UPDATE_TUNGSTEN); coil_ferrouranium = new BulletConfig().setItem(EnumAmmo.COIL_FERROURANIUM).setVel(7.5F).setLife(50).setDoesPenetrate(true).setDamageFalloffByPen(false).setSpectral(true) .setOnUpdate(LAMBDA_UPDATE_FERRO); + + ni4ni_arc = new BulletConfig().setupDamageClass(DamageClass.PHYSICAL).setBeam().setLife(5).setThresholdNegation(10F).setArmorPiercing(0.2F).setRenderRotations(false).setDoesPenetrate(false) + .setOnBeamImpact(BulletConfig.LAMBDA_BEAM_HIT); tauChargeMag.addConfigs(tau_uranium_charge); @@ -118,6 +128,18 @@ public class XFactoryAccelerator { .setupStandardConfiguration() .anim(LAMBDA_COILGUN_ANIMS).orchestra(Orchestras.ORCHESTRA_COILGUN) ).setUnlocalizedName("gun_coilgun"); + + ModItems.gun_n_i_4_n_i = new ItemGunNI4NI(WeaponQuality.SPECIAL, new GunConfig() + .dura(0).draw(5).inspect(39).crosshair(Crosshair.CIRCLE) + .rec(new Receiver(0) + .dmg(35F).delay(10).sound("hbm:weapon.coilgunShoot", 1.0F, 1.0F) + .mag(new MagazineInfinite(ni4ni_arc)) + .offset(0.75, -0.0625, -0.1875D) + .setupStandardFire().fire(Lego.LAMBDA_NOWEAR_FIRE)) + .setupStandardConfiguration() + .ps(LAMBDA_NI4NI_SECONDARY_PRESS) + .anim(LAMBDA_NI4NI_ANIMS).orchestra(Orchestras.ORCHESTRA_COILGUN) + ).setUnlocalizedName("gun_n_i_4_n_i"); } public static BiConsumer LAMBDA_TAU_PRIMARY_RELEASE = (stack, ctx) -> { @@ -163,6 +185,27 @@ public class XFactoryAccelerator { } }; + public static BiConsumer LAMBDA_NI4NI_SECONDARY_PRESS = (stack, ctx) -> { + if(ctx.getPlayer() == null) return; + EntityPlayer player = ctx.getPlayer(); + + if(ItemGunNI4NI.getCoinCount(stack) > 0) { + Vec3NT vec = new Vec3NT(player.getLookVec()).multiply(0.8D); + EntityCoin coin = new EntityCoin(player.worldObj); + coin.setPosition(player.posX, player.posY + player.getEyeHeight() - coin.yOffset - 0.125, player.posZ); + coin.motionX = vec.xCoord; + coin.motionY = vec.yCoord + 0.5; + coin.motionZ = vec.zCoord; + coin.rotationYaw = player.rotationYaw; + coin.setThrower(player); + player.worldObj.spawnEntityInWorld(coin); + + player.worldObj.playSoundAtEntity(player, "random.orb", 1.0F, 1F + player.getRNG().nextFloat() * 0.25F); + + ItemGunNI4NI.setCoinCount(stack, ItemGunNI4NI.getCoinCount(stack) - 1); + } + }; + public static BiConsumer LAMBDA_RECOIL_TAU = (stack, ctx) -> { }; public static BiConsumer LAMBDA_RECOIL_COILGUN = (stack, ctx) -> { @@ -196,4 +239,20 @@ public class XFactoryAccelerator { 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)); return null; }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_NI4NI_ANIMS = (stack, type) -> { + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(-360 * 2, 0, 0, 500)); + case CYCLE: + boolean aiming = ItemGunBaseNT.getIsAiming(stack); + return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(aiming ? -5 : -30, 0, 0, 100, IType.SIN_DOWN).addPos(0, 0, 0, 150, IType.SIN_FULL)) + .addBus("DRUM", new BusAnimationSequence().hold(50).addPos(0, 0, 120, 300, IType.SIN_FULL)); + case INSPECT: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(-360 * 3, 0, 0, 750).hold(100).addPos(0, 0, 0, 750)); + } + + return null; + }; } diff --git a/src/main/java/com/hbm/items/weapon/sedna/impl/ItemGunNI4NI.java b/src/main/java/com/hbm/items/weapon/sedna/impl/ItemGunNI4NI.java new file mode 100644 index 000000000..71619f721 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/impl/ItemGunNI4NI.java @@ -0,0 +1,110 @@ +package com.hbm.items.weapon.sedna.impl; + +import java.util.List; + +import com.hbm.items.ICustomizable; +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.util.ChatBuilder; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; + +public class ItemGunNI4NI extends ItemGunBaseNT implements ICustomizable { + + public ItemGunNI4NI(WeaponQuality quality, GunConfig... cfg) { + super(quality, cfg); + } + + @Override + public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean isHeld) { + super.onUpdate(stack, world, entity, slot, isHeld); + + if(!world.isRemote) { + if(this.getCoinCount(stack) < 4) { + this.setCoinCharge(stack, this.getCoinCharge(stack) + 1); + + if(this.getCoinCharge(stack) >= 80) { + this.setCoinCharge(stack, 0); + int newCount = this.getCoinCount(stack) + 1; + this.setCoinCount(stack, newCount); + + if(isHeld) { + world.playSoundAtEntity(entity, "hbm:item.techBoop", 1.0F, 1.25F + newCount * 0.125F); + } + } + } + } + } + + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + list.add("Now, don't get the wrong idea."); + list.add("I " + EnumChatFormatting.RED + "fucking hate " + EnumChatFormatting.GRAY + "this game."); + list.add("I didn't do this for you, I did it for sea."); + super.addInformation(stack, player, list, ext); + } + + @Override + public void customize(EntityPlayer player, ItemStack stack, String... args) { + + if(args.length == 0) { + resetColors(stack); + player.addChatComponentMessage(ChatBuilder.start("Colors reset!").color(EnumChatFormatting.GREEN).flush()); + return; + } + + if(args.length != 3) { + resetColors(stack); + player.addChatComponentMessage(ChatBuilder.start("Requires three hexadecimal colors!").color(EnumChatFormatting.RED).flush()); + return; + } + + try { + int dark = Integer.parseInt(args[0], 16); + int light = Integer.parseInt(args[1], 16); + int grip = Integer.parseInt(args[2], 16); + + if(dark < 0 || dark > 0xffffff || light < 0 || light > 0xffffff || grip < 0 || grip > 0xffffff) { + player.addChatComponentMessage(ChatBuilder.start("Colors must range from 0 to FFFFFF!").color(EnumChatFormatting.RED).flush()); + return; + } + + setColors(stack, dark, light, grip); + player.addChatComponentMessage(ChatBuilder.start("Colors set!").color(EnumChatFormatting.GREEN).flush()); + + } catch(Throwable ex) { + player.addChatComponentMessage(ChatBuilder.start(ex.getLocalizedMessage()).color(EnumChatFormatting.RED).flush()); + } + } + + public static void resetColors(ItemStack stack) { + if(!stack.hasTagCompound()) return; + stack.stackTagCompound.removeTag("colors"); + } + + public static void setColors(ItemStack stack, int dark, int light, int grip) { + if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); + stack.stackTagCompound.setIntArray("colors", new int[] {dark, light, grip}); + } + + public static int[] getColors(ItemStack stack) { + if(!stack.hasTagCompound() || !stack.stackTagCompound.hasKey("colors")) return null; + int[] colors = stack.stackTagCompound.getIntArray("colors"); + if(colors.length != 3) return null; + return colors; + } + + public static final String KEY_COIN_COUNT = "coincount"; + public static final String KEY_COIN_CHARGE = "coincharge"; + public static int getCoinCount(ItemStack stack) { return getValueInt(stack, KEY_COIN_COUNT); } + public static void setCoinCount(ItemStack stack, int value) { setValueInt(stack, KEY_COIN_COUNT, value); } + public static int getCoinCharge(ItemStack stack) { return getValueInt(stack, KEY_COIN_CHARGE); } + public static void setCoinCharge(ItemStack stack, int value) { setValueInt(stack, KEY_COIN_CHARGE, value); } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineInfinite.java b/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineInfinite.java new file mode 100644 index 000000000..263d4134b --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineInfinite.java @@ -0,0 +1,39 @@ +package com.hbm.items.weapon.sedna.mags; + +import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.particle.SpentCasing; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; + +public class MagazineInfinite implements IMagazine { + + public BulletConfig type; + + public MagazineInfinite(BulletConfig type) { + this.type = type; + } + + @Override + public Object getType(ItemStack stack, IInventory inventory) { + return this.type; + } + + @Override public void setType(ItemStack stack, Object type) { } + @Override public int getCapacity(ItemStack stack) { return 9999; } + @Override public int getAmount(ItemStack stack, IInventory inventory) { return 9999; } + @Override public void setAmount(ItemStack stack, int amount) { } + @Override public void useUpAmmo(ItemStack stack, IInventory inventory, int amount) { } + @Override public boolean canReload(ItemStack stack, IInventory inventory) { return false; } + @Override public void initNewType(ItemStack stack, IInventory inventory) { } + @Override public void reloadAction(ItemStack stack, IInventory inventory) { } + @Override public ItemStack getIconForHUD(ItemStack stack, EntityPlayer player) { return new ItemStack(ModItems.nothing); } + @Override public String reportAmmoStateForHUD(ItemStack stack, EntityPlayer player) { return "∞"; } + @Override public SpentCasing getCasing(ItemStack stack, IInventory inventory) { return this.type.casing; } + @Override public void setAmountBeforeReload(ItemStack stack, int amount) { } + @Override public int getAmountBeforeReload(ItemStack stack) { return 9999; } + @Override public void setAmountAfterReload(ItemStack stack, int amount) { } + @Override public int getAmountAfterReload(ItemStack stack) { return 9999; } +} diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index ef36a2084..711e5cbd6 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -619,6 +619,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityArtilleryRocket.class, new RenderArtilleryRocket()); RenderingRegistry.registerEntityRenderingHandler(EntityCog.class, new RenderCog()); RenderingRegistry.registerEntityRenderingHandler(EntitySawblade.class, new RenderSawblade()); + RenderingRegistry.registerEntityRenderingHandler(EntityCoin.class, new RenderCoin()); RenderingRegistry.registerEntityRenderingHandler(EntityChemical.class, new RenderChemical()); RenderingRegistry.registerEntityRenderingHandler(EntityMist.class, new RenderMist()); RenderingRegistry.registerEntityRenderingHandler(EntityFireLingering.class, new RenderMist()); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index bc109ad26..8f51419f4 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -907,6 +907,7 @@ public class ResourceManager { public static final IModelCustom aberrator = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/aberrator.obj")).asVBO(); public static final IModelCustom mas36 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/mas36.obj")).asVBO(); public static final IModelCustom charge_thrower = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/charge_thrower.obj")).asVBO(); + public static final IModelCustom n_i_4_n_i = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/n_i_4_n_i.obj")).asVBO(); public static final HashMap spas_12_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/spas12.json")); public static final HashMap congolake_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/congolake.json")); @@ -1044,6 +1045,8 @@ public class ResourceManager { public static final ResourceLocation charge_thrower_hook_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/charge_thrower_hook.png"); public static final ResourceLocation charge_thrower_mortar_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/charge_thrower_mortar.png"); public static final ResourceLocation charge_thrower_rocket_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/charge_thrower_rocket.png"); + public static final ResourceLocation n_i_4_n_i_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/n_i_4_n_i.png"); + public static final ResourceLocation n_i_4_n_i_greyscale_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/n_i_4_n_i_greyscale.png"); public static final ResourceLocation lance_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lance.png"); diff --git a/src/main/java/com/hbm/render/entity/projectile/RenderCoin.java b/src/main/java/com/hbm/render/entity/projectile/RenderCoin.java new file mode 100644 index 000000000..9948c3573 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/projectile/RenderCoin.java @@ -0,0 +1,39 @@ +package com.hbm.render.entity.projectile; + +import org.lwjgl.opengl.GL11; + +import com.hbm.lib.RefStrings; +import com.hbm.render.loader.HFRWavefrontObject; + +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.model.IModelCustom; + +public class RenderCoin extends Render { + + public static final IModelCustom coin = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/trinkets/chip.obj")).asVBO(); + public static final ResourceLocation coin_tex = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/chip_gold.png"); + + @Override + public void doRender(Entity coin, double x, double y, double z, float f0, float f1) { + + GL11.glPushMatrix(); + GL11.glTranslated(x, y, z); + GL11.glRotatef(coin.prevRotationYaw + (coin.rotationYaw - coin.prevRotationYaw) * f1 - 90.0F, 0.0F, -1.0F, 0.0F); + GL11.glRotated((coin.ticksExisted + f1) * 45, 0, 0, 1); + + double scale = 0.125D; + GL11.glScaled(scale, scale, scale); + + this.bindEntityTexture(coin); + this.coin.renderAll(); + + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return coin_tex; + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderNI4NI.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderNI4NI.java new file mode 100644 index 000000000..ce4f8a846 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderNI4NI.java @@ -0,0 +1,189 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.impl.ItemGunNI4NI; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; +import com.hbm.render.tileentity.RenderArcFurnace; +import com.hbm.util.ColorUtil; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderNI4NI extends ItemRenderWeaponBase { + + @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, 1); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.0F * offset, -1F * offset, 1F * offset, + 0, -5 / 8D, 0.125); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + + int[] color = ItemGunNI4NI.getColors(stack); + int dark = 0xffffff; + int light = 0xffffff; + int grip = 0xffffff; + if(color != null) { + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.n_i_4_n_i_greyscale_tex); + dark = color[0]; + light = color[1]; + grip = color[2]; + } else { + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.n_i_4_n_i_tex); + } + + double scale = 0.3125D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] drum = HbmAnimations.getRelevantTransformation("DRUM"); + + GL11.glTranslated(0, 0, -2.25); + GL11.glRotated(equip[0], 1, 0, 0); + GL11.glTranslated(0, 0, 2.25); + + GL11.glTranslated(0, -1, -6); + GL11.glRotated(recoil[0], 1, 0, 0); + GL11.glTranslated(0, 1, 6); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + GL11.glPushMatrix(); + + GL11.glColor3f(ColorUtil.fr(dark), ColorUtil.fg(dark), ColorUtil.fb(dark)); + ResourceManager.n_i_4_n_i.renderPart("FrameDark"); + + GL11.glColor3f(ColorUtil.fr(grip), ColorUtil.fg(grip), ColorUtil.fb(grip)); + ResourceManager.n_i_4_n_i.renderPart("Grip"); + + GL11.glColor3f(ColorUtil.fr(light), ColorUtil.fg(light), ColorUtil.fb(light)); + ResourceManager.n_i_4_n_i.renderPart("FrameLight"); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.1875D, 0); + GL11.glRotated(drum[2], 0, 0, 1); + GL11.glTranslated(0, -1.1875D, 0); + ResourceManager.n_i_4_n_i.renderPart("Cylinder"); + RenderArcFurnace.fullbright(true); + GL11.glColor3f(1F, 1F, 1F); + ResourceManager.n_i_4_n_i.renderPart("CylinderHighlights"); + RenderArcFurnace.fullbright(false); + GL11.glPopMatrix(); + + RenderArcFurnace.fullbright(true); + ResourceManager.n_i_4_n_i.renderPart("Barrel"); + + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glColor3f(0F, 1F, 0F); + int coinCount = ItemGunNI4NI.getCoinCount(stack); + if(coinCount > 3) ResourceManager.n_i_4_n_i.renderPart("Coin1"); + if(coinCount > 2) ResourceManager.n_i_4_n_i.renderPart("Coin2"); + if(coinCount > 1) ResourceManager.n_i_4_n_i.renderPart("Coin3"); + if(coinCount > 0) ResourceManager.n_i_4_n_i.renderPart("Coin4"); + GL11.glEnable(GL11.GL_TEXTURE_2D); + + RenderArcFurnace.fullbright(false); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.75, 4); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(90 * gun.shotRand, 1, 0, 0); + GL11.glScaled(0.125, 0.125, 0.125); + this.renderLaserFlash(gun.lastShot[0], 75, 7.5, 0xFFFFFF); + GL11.glPopMatrix(); + + GL11.glPopMatrix(); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + GL11.glTranslated(0, 0.25, 3); + double scale = 1.5D; + GL11.glScaled(scale, scale, scale); + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 2.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(0, 0, 0); + } + + @Override + public void setupModTable(ItemStack stack) { + double scale = -15D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + GL11.glTranslated(0, -0.5, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glAlphaFunc(GL11.GL_GREATER, 0F); + GL11.glEnable(GL11.GL_ALPHA_TEST); + + int[] color = ItemGunNI4NI.getColors(stack); + int dark = 0xffffff; + int light = 0xffffff; + int grip = 0xffffff; + if(color != null) { + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.n_i_4_n_i_greyscale_tex); + dark = color[0]; + light = color[1]; + grip = color[2]; + } else { + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.n_i_4_n_i_tex); + } + + GL11.glShadeModel(GL11.GL_SMOOTH); + GL11.glColor3f(ColorUtil.fr(light), ColorUtil.fg(light), ColorUtil.fb(light)); + ResourceManager.n_i_4_n_i.renderPart("FrameLight"); + ResourceManager.n_i_4_n_i.renderPart("Cylinder"); + GL11.glColor3f(ColorUtil.fr(grip), ColorUtil.fg(grip), ColorUtil.fb(grip)); + ResourceManager.n_i_4_n_i.renderPart("Grip"); + GL11.glColor3f(ColorUtil.fr(dark), ColorUtil.fg(dark), ColorUtil.fb(dark)); + ResourceManager.n_i_4_n_i.renderPart("FrameDark"); + GL11.glColor3f(1F, 1F, 1F); + RenderArcFurnace.fullbright(true); + ResourceManager.n_i_4_n_i.renderPart("CylinderHighlights"); + ResourceManager.n_i_4_n_i.renderPart("Barrel"); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glColor3f(0F, 1F, 0F); + ResourceManager.n_i_4_n_i.renderPart("Coin1"); + ResourceManager.n_i_4_n_i.renderPart("Coin2"); + ResourceManager.n_i_4_n_i.renderPart("Coin3"); + ResourceManager.n_i_4_n_i.renderPart("Coin4"); + GL11.glColor3f(1F, 1F, 1F); + GL11.glEnable(GL11.GL_TEXTURE_2D); + RenderArcFurnace.fullbright(false); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/util/ColorUtil.java b/src/main/java/com/hbm/util/ColorUtil.java index c863c5d02..28b76c6ab 100644 --- a/src/main/java/com/hbm/util/ColorUtil.java +++ b/src/main/java/com/hbm/util/ColorUtil.java @@ -70,6 +70,30 @@ public class ColorUtil { return 0xFFFFFF; } } + + public static int ir(int color) { + return (color & 0xff0000) >> 16; + } + + public static int ig(int color) { + return (color & 0x00ff00) >> 8; + } + + public static int ib(int color) { + return (color & 0x0000ff) >> 0; + } + + public static float fr(int color) { + return ir(color) / 255F; + } + + public static float fg(int color) { + return ig(color) / 255F; + } + + public static float fb(int color) { + return ib(color) / 255F; + } @SideOnly(Side.CLIENT) public static int getMedianBrightnessColorFromStack(ItemStack stack) { diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 037898b56..b59ad8b12 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -2167,6 +2167,7 @@ item.gun_minigun.name=Minigun item.gun_minigun_dual.name=Doppelete Miniguns item.gun_minigun_lacunae.name=Lacunae item.gun_missile_launcher.name=Raketenwerfer +item.gun_n_i_4_n_i.name=N I 4 N I item.gun_pepperbox.name=Bündelrevolver item.gun_panzerschreck.name=Panzerschreck item.gun_quadro.name=Vierfachraketenwerfer diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index c84185573..a5f161efb 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -3009,6 +3009,7 @@ item.gun_minigun.name=Minigun item.gun_minigun_dual.name=Dual Miniguns item.gun_minigun_lacunae.name=Lacunae item.gun_missile_launcher.name=Missile Launcher +item.gun_n_i_4_n_i.name=N I 4 N I item.gun_pepperbox.name=Pepperbox item.gun_panzerschreck.name=Panzerschreck item.gun_quadro.name=Quad Rocket Launcher diff --git a/src/main/resources/assets/hbm/models/weapons/n_i_4_n_i.obj b/src/main/resources/assets/hbm/models/weapons/n_i_4_n_i.obj new file mode 100644 index 000000000..3970858be --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/n_i_4_n_i.obj @@ -0,0 +1,2082 @@ +# Blender v2.79 (sub 0) OBJ File: 'n_i_4_n_i.blend' +# www.blender.org +o Barrel +v -0.187500 0.051777 3.937500 +v 0.187500 0.051777 3.937500 +v -0.187500 1.448223 3.937500 +v 0.187500 1.448223 3.937500 +v -0.135723 0.000000 3.937500 +v 0.135723 0.000000 3.937500 +v -0.135723 1.500000 3.937500 +v 0.135723 1.500000 3.937500 +vt 0.000000 0.283342 +vt 0.003261 0.276923 +vt 0.029348 0.276923 +vt 0.032609 0.283342 +vt 0.032609 0.455120 +vt 0.029348 0.461538 +vt 0.003261 0.461538 +vt 0.000000 0.455120 +vn 0.0000 0.0000 1.0000 +s off +f 1/1/1 5/2/1 6/3/1 +f 6/3/1 2/4/1 1/1/1 +f 2/4/1 4/5/1 1/1/1 +f 4/5/1 8/6/1 7/7/1 +f 7/7/1 3/8/1 4/5/1 +f 3/8/1 1/1/1 4/5/1 +o Coin4 +v -0.093750 1.637782 -2.619801 +v -0.143468 1.652344 -2.605239 +v -0.164062 1.687500 -2.570082 +v -0.143468 1.722656 -2.534926 +v -0.093750 1.737218 -2.520364 +v -0.044032 1.722656 -2.534926 +v -0.023438 1.687500 -2.570082 +v -0.044032 1.652344 -2.605239 +vt 0.603153 0.499831 +vt 0.456926 0.499831 +vt 0.603153 0.000168 +vt 0.353527 0.353482 +vt 0.353528 0.146514 +vt 0.456926 0.000168 +vt 0.706551 0.146516 +vt 0.706551 0.353483 +vn -0.0000 0.7071 -0.7071 +s off +f 16/9/2 9/10/2 13/11/2 +f 9/10/2 10/12/2 13/11/2 +f 10/12/2 11/13/2 13/11/2 +f 11/13/2 12/14/2 13/11/2 +f 13/11/2 14/15/2 15/16/2 +f 15/16/2 16/9/2 13/11/2 +o Coin3 +v 0.093750 1.637782 -2.619801 +v 0.044032 1.652344 -2.605239 +v 0.023438 1.687500 -2.570082 +v 0.044032 1.722656 -2.534926 +v 0.093750 1.737218 -2.520364 +v 0.143468 1.722656 -2.534926 +v 0.164062 1.687500 -2.570082 +v 0.143468 1.652344 -2.605239 +vt 0.249793 0.999831 +vt 0.103566 0.999831 +vt 0.249793 0.500168 +vt 0.000168 0.853484 +vt 0.000168 0.646516 +vt 0.103566 0.500168 +vt 0.353191 0.646516 +vt 0.353191 0.853484 +vn -0.0000 0.7071 -0.7071 +s off +f 24/17/3 17/18/3 21/19/3 +f 17/18/3 18/20/3 21/19/3 +f 18/20/3 19/21/3 21/19/3 +f 19/21/3 20/22/3 21/19/3 +f 21/19/3 22/23/3 23/24/3 +f 23/24/3 24/17/3 21/19/3 +o Coin2 +v -0.093750 1.770364 -2.487219 +v -0.143468 1.784926 -2.472656 +v -0.164062 1.820082 -2.437500 +v -0.143468 1.855239 -2.402344 +v -0.093750 1.869801 -2.387782 +v -0.044032 1.855239 -2.402344 +v -0.023438 1.820082 -2.437500 +v -0.044032 1.784926 -2.472656 +vt 0.353191 0.353483 +vt 0.249794 0.499832 +vt 0.103566 0.000168 +vt 0.103566 0.499832 +vt 0.000168 0.353484 +vt 0.000168 0.146517 +vt 0.249794 0.000168 +vt 0.353191 0.146516 +vn 0.0000 0.7071 -0.7071 +s off +f 32/25/4 25/26/4 29/27/4 +f 25/26/4 26/28/4 27/29/4 +f 27/29/4 28/30/4 25/26/4 +f 28/30/4 29/27/4 25/26/4 +f 29/27/4 30/31/4 31/32/4 +f 31/32/4 32/25/4 29/27/4 +o Coin1 +v 0.093750 1.770364 -2.487219 +v 0.044032 1.784926 -2.472656 +v 0.023438 1.820082 -2.437500 +v 0.044032 1.855239 -2.402344 +v 0.093750 1.869801 -2.387782 +v 0.143468 1.855239 -2.402344 +v 0.164062 1.820082 -2.437500 +v 0.143468 1.784926 -2.472656 +vt 0.706549 0.853483 +vt 0.603152 0.999832 +vt 0.456925 0.500169 +vt 0.456925 0.999831 +vt 0.353527 0.853484 +vt 0.353527 0.646516 +vt 0.603152 0.500168 +vt 0.706550 0.646517 +vn 0.0000 0.7071 -0.7071 +s off +f 40/33/5 33/34/5 37/35/5 +f 33/34/5 34/36/5 37/35/5 +f 34/36/5 35/37/5 37/35/5 +f 35/37/5 36/38/5 37/35/5 +f 37/35/5 38/39/5 39/40/5 +f 39/40/5 40/33/5 37/35/5 +o Grip +v -0.312500 0.500000 -2.000000 +v 0.312500 0.500000 -2.000000 +v -0.312500 1.250000 -3.125000 +v 0.312500 1.250000 -3.125000 +v -0.156250 1.250000 -3.375000 +v 0.156250 1.250000 -3.375000 +v -0.156250 1.000000 -3.375000 +v 0.156250 1.000000 -3.375000 +v -0.187500 0.625000 -3.000000 +v 0.187500 0.625000 -3.000000 +v -0.187500 0.250000 -1.750000 +v 0.187500 0.250000 -1.750000 +v -0.187500 -1.250000 -2.500000 +v 0.187500 -1.250000 -2.500000 +v -0.187500 -2.000000 -2.500000 +v 0.187500 -2.000000 -2.500000 +v -0.187500 -1.687500 -4.000000 +v 0.187500 -1.687500 -4.000000 +v 0.312500 -1.125000 -2.875000 +v 0.312500 -1.625000 -2.875000 +v 0.312500 -1.500000 -3.625000 +v 0.312500 0.375000 -2.750000 +v -0.312500 -1.125000 -2.875000 +v -0.312500 -1.625000 -2.875000 +v -0.312500 -1.500000 -3.625000 +v -0.312500 0.375000 -2.750000 +vt 0.788043 0.446154 +vt 0.885870 0.523077 +vt 0.788043 0.523077 +vt 0.885870 0.446154 +vt 0.907609 0.503846 +vt 0.964674 0.446154 +vt 0.991848 0.415385 +vt 0.991848 0.446154 +vt 0.964674 0.415385 +vt 0.994565 0.369231 +vt 0.766304 0.461538 +vt 0.733696 0.323077 +vt 0.766304 0.138462 +vt 0.766304 0.323077 +vt 0.733696 0.138462 +vt 0.766304 0.046154 +vt 0.831522 0.000000 +vt 0.961957 0.046154 +vt 0.831522 0.046154 +vt 0.961957 0.369231 +vt 0.994565 0.084615 +vt 0.961957 0.084615 +vt 0.864130 0.092308 +vt 0.929348 0.107692 +vt 0.864130 0.146154 +vt 0.788043 0.353846 +vt 0.864130 0.092308 +vt 0.831522 0.138462 +vt 0.961957 0.084615 +vt 0.929348 0.107692 +vt 0.875000 0.369231 +vt 0.853261 0.338462 +vt 0.956522 0.338462 +vt 0.875000 0.369231 +vt 0.853261 0.338462 +vt 1.000000 0.338462 +vt 0.831522 0.138462 +vt 0.864130 0.146154 +vt 0.766304 0.323077 +vt 0.788043 0.353846 +vt 0.885870 0.446154 +vt 0.907609 0.415385 +vt 0.907609 0.446154 +vt 0.907609 0.415385 +vt 0.907609 0.446154 +vt 0.907609 0.465385 +vt 0.766304 0.507692 +vt 0.733696 0.046154 +vt 0.961957 0.000000 +vt 0.831522 0.046154 +vn 0.0000 0.8321 0.5547 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.0000 -0.4472 0.8944 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -0.9790 -0.2040 +vn 0.0000 0.3969 -0.9179 +vn -0.8920 -0.4460 -0.0743 +vn 0.9381 -0.1642 0.3049 +vn 0.9487 0.0000 0.3162 +vn 0.9186 -0.3868 -0.0806 +vn 0.9360 0.1489 -0.3191 +vn 1.0000 0.0000 0.0000 +vn -0.9360 0.1489 -0.3191 +vn -0.9487 0.0000 0.3162 +vn -0.9381 -0.1642 0.3049 +vn -1.0000 0.0000 0.0000 +vn 0.8480 0.0000 -0.5300 +vn 0.9029 -0.1693 -0.3950 +vn -0.9029 -0.1693 -0.3950 +vn -0.8480 0.0000 -0.5300 +vn -0.9186 -0.3868 -0.0806 +vn 0.9526 -0.1361 0.2722 +vn 0.8920 -0.4460 -0.0743 +vn 0.9073 0.1669 -0.3859 +vn -0.9073 0.1669 -0.3859 +vn -0.9526 -0.1361 0.2722 +s off +f 42/41/6 43/42/6 41/43/6 +f 44/44/7 45/45/7 43/42/7 +f 46/46/8 47/47/8 45/48/8 +f 48/49/9 49/50/9 47/47/9 +f 41/43/10 52/51/10 42/41/10 +f 51/52/11 54/53/11 52/54/11 +f 53/55/12 56/56/12 54/53/12 +f 55/57/13 58/58/13 56/59/13 +f 50/60/14 57/61/14 49/50/14 +f 57/62/15 64/63/15 65/64/15 +f 52/54/16 59/65/16 42/66/16 +f 60/67/17 54/68/17 56/59/17 +f 58/69/18 60/67/18 56/59/18 +f 61/70/19 50/71/19 62/72/19 +f 60/67/20 61/70/20 59/65/20 +f 59/65/20 62/72/20 42/66/20 +f 50/60/9 48/49/9 62/73/9 +f 42/66/20 62/72/20 44/44/20 +f 49/74/21 65/64/21 66/75/21 +f 47/47/9 49/50/9 66/76/9 +f 64/63/22 53/77/22 63/78/22 +f 63/78/23 51/79/23 41/80/23 +f 64/63/24 63/78/24 65/64/24 +f 63/78/24 66/75/24 65/64/24 +f 41/80/24 43/81/24 66/75/24 +f 44/44/25 48/82/25 46/83/25 +f 44/44/26 62/72/26 48/82/26 +f 66/75/27 43/81/27 47/84/27 +f 47/84/28 43/81/28 45/85/28 +f 42/41/6 44/44/6 43/42/6 +f 44/44/7 46/86/7 45/45/7 +f 46/46/8 48/49/8 47/47/8 +f 48/49/9 50/60/9 49/50/9 +f 41/43/10 51/87/10 52/51/10 +f 51/52/11 53/55/11 54/53/11 +f 53/55/12 55/88/12 56/56/12 +f 55/57/13 57/89/13 58/58/13 +f 50/60/14 58/69/14 57/61/14 +f 57/62/29 55/90/29 64/63/29 +f 52/54/30 54/68/30 59/65/30 +f 60/67/17 59/65/17 54/68/17 +f 58/69/31 61/70/31 60/67/31 +f 61/70/32 58/69/32 50/71/32 +f 59/65/20 61/70/20 62/72/20 +f 49/74/33 57/62/33 65/64/33 +f 64/63/22 55/90/22 53/77/22 +f 63/78/34 53/77/34 51/79/34 +f 63/78/24 41/80/24 66/75/24 +o FrameLight +v -0.437500 0.500000 -0.250000 +v -0.375000 1.000000 -0.250000 +v 0.437500 0.875000 -0.250000 +v 0.437500 0.500000 -0.250000 +v 0.375000 1.000000 -0.250000 +v -0.437500 0.875000 2.500000 +v -0.437500 0.500000 2.500000 +v -0.375000 1.500000 -0.250000 +v 0.375000 1.500000 -0.250000 +v -0.187500 1.687500 -0.250000 +v 0.187500 1.687500 -0.250000 +v -0.375000 1.500000 3.250000 +v -0.375000 1.375000 3.250000 +v -0.375000 1.375000 2.875000 +v -0.375000 1.000000 2.500000 +v 0.187500 1.625000 3.250000 +v -0.187500 1.625000 3.250000 +v 0.312500 1.500000 3.250000 +v -0.312500 1.500000 3.250000 +v 0.437500 0.875000 2.500000 +v 0.437500 0.500000 2.500000 +v 0.375000 1.500000 3.250000 +v 0.375000 1.375000 3.250000 +v 0.375000 1.375000 2.875000 +v 0.375000 1.000000 2.500000 +v -0.187500 1.687500 3.250000 +v 0.187500 1.687500 3.250000 +v 0.312500 1.375000 3.250000 +v -0.312500 1.375000 3.250000 +v 0.312500 1.375000 2.875000 +v -0.312500 1.375000 2.875000 +v 0.312500 1.000000 2.500000 +v -0.312500 1.000000 2.500000 +v 0.312500 0.375000 2.500000 +v -0.312500 0.375000 2.500000 +v 0.312500 0.375000 -0.250000 +v 0.125000 0.125000 -0.750000 +v -0.125000 0.125000 -0.750000 +v 0.125000 -0.375000 -0.750000 +v -0.125000 -0.375000 -0.750000 +v 0.125000 -0.375000 -2.125000 +v -0.125000 -0.375000 -2.125000 +v 0.125000 -0.250000 -2.125000 +v -0.125000 -0.250000 -2.125000 +v 0.125000 -0.250000 -1.000000 +v -0.125000 -0.250000 -1.000000 +v 0.125000 0.125000 -0.875000 +v -0.125000 0.125000 -0.875000 +v 0.000000 1.500000 -2.625000 +v -0.132583 1.445083 -2.625000 +v -0.187500 1.312500 -2.625000 +v -0.132583 1.179917 -2.625000 +v 0.000000 1.125000 -2.625000 +v 0.132583 1.179917 -2.625000 +v 0.187500 1.312500 -2.625000 +v 0.132583 1.445083 -2.625000 +v 0.000000 1.500000 -3.125000 +v -0.132583 1.445083 -3.125000 +v -0.187500 1.312500 -3.125000 +v -0.132583 1.179917 -3.125000 +v 0.000000 1.125000 -3.125000 +v 0.132583 1.179917 -3.125000 +v 0.187500 1.312500 -3.125000 +v 0.132583 1.445083 -3.125000 +v 0.000000 1.453125 -3.125000 +v -0.099437 1.411937 -3.125000 +v -0.140625 1.312500 -3.125000 +v -0.099437 1.213063 -3.125000 +v 0.000000 1.171875 -3.125000 +v 0.099437 1.213063 -3.125000 +v 0.140625 1.312500 -3.125000 +v 0.099437 1.411937 -3.125000 +v -0.099437 1.411937 -3.250000 +v 0.000000 1.453125 -3.250000 +v -0.140625 1.312500 -3.250000 +v -0.099437 1.213063 -3.250000 +v 0.000000 1.171875 -3.250000 +v 0.099437 1.213063 -3.250000 +v 0.140625 1.312500 -3.250000 +v 0.099437 1.411937 -3.250000 +v -0.250000 1.864277 -2.260723 +v 0.250000 1.864277 -2.260723 +v -0.250000 1.510723 -2.614277 +v 0.250000 1.510723 -2.614277 +v -0.250000 1.554917 -2.658471 +v -0.250000 1.908471 -2.304918 +v 0.250000 1.908471 -2.304918 +v 0.250000 1.554917 -2.658471 +v 0.125000 -0.187500 -1.625000 +v -0.125000 -0.187500 -1.625000 +v 0.125000 -0.187500 -1.750000 +v -0.125000 -0.187500 -1.750000 +v 0.125000 -0.062500 -1.687500 +v -0.125000 -0.062500 -1.687500 +v 0.125000 -0.062500 -1.812500 +v -0.125000 -0.062500 -1.812500 +v 0.125000 0.125000 -1.687500 +v -0.125000 0.125000 -1.687500 +v 0.125000 0.125000 -1.812500 +v -0.125000 0.125000 -1.812500 +v 0.062500 -0.062500 -1.812500 +v -0.062500 -0.062500 -1.812500 +v 0.062500 -0.062500 -1.937500 +v -0.062500 -0.062500 -1.937500 +v 0.062500 0.125000 -1.812500 +v -0.062500 0.125000 -1.812500 +v -0.312500 0.375000 -0.250000 +v -0.437500 0.875000 -0.250000 +vt 0.516304 0.346154 +vt 0.277174 0.323077 +vt 0.516304 0.323077 +vt 0.277174 0.392308 +vt 0.271739 0.407692 +vt 0.266304 0.407692 +vt 0.277174 0.653846 +vt 0.516304 0.700000 +vt 0.277174 0.700000 +vt 0.277174 0.638462 +vt 0.516304 0.653846 +vt 0.277174 0.346154 +vt 0.516304 0.392308 +vt 0.195652 0.569231 +vt 0.206522 0.546154 +vt 0.211957 0.546154 +vt 0.184783 0.569231 +vt 0.195652 0.561538 +vt 0.152174 0.561538 +vt 0.184783 0.561538 +vt 0.152174 0.569231 +vt 0.119565 0.561538 +vt 0.516304 0.576923 +vt 0.244565 0.592308 +vt 0.195652 0.484615 +vt 0.184783 0.476923 +vt 0.195652 0.476923 +vt 0.586957 0.469231 +vt 0.630435 0.484615 +vt 0.630435 0.561538 +vt 0.119565 0.476923 +vt 0.152174 0.484615 +vt 0.119565 0.484615 +vt 0.206522 0.500000 +vt 0.266304 0.638462 +vt 0.271739 0.638462 +vt 0.152174 0.476923 +vt 0.184783 0.484615 +vt 0.516304 0.723077 +vt 0.277174 0.723077 +vt 0.211957 0.500000 +vt 0.043478 0.876923 +vt 0.000000 0.907692 +vt 0.000000 0.876923 +vt 0.163043 0.876923 +vt 0.043478 0.907692 +vt 0.032609 1.000000 +vt 0.130435 0.969231 +vt 0.130435 1.000000 +vt -0.000000 1.000000 +vt 0.032609 0.969231 +vt 0.065217 0.861538 +vt 0.163043 0.861538 +vt 0.043478 0.815385 +vt 0.163043 0.907692 +vt 0.065217 0.923077 +vt 0.043478 0.969231 +vt 0.054348 0.969231 +vt 0.951314 0.546154 +vt 0.967391 0.523398 +vt 0.983469 0.546154 +vt 0.980467 0.573800 +vt 0.983633 0.584615 +vt 0.962020 0.584615 +vt 0.913043 0.515385 +vt 0.956522 0.453846 +vt 0.956522 0.515385 +vt 0.956522 0.446154 +vt 0.913043 0.453846 +vt 0.913043 0.446154 +vt 0.913043 0.523077 +vt 0.956522 0.523077 +vt 0.907609 0.453846 +vt 0.907609 0.515385 +vt 0.961957 0.453846 +vt 0.711957 0.630769 +vt 0.733696 0.646154 +vt 0.711957 0.646154 +vt 0.744565 0.669231 +vt 0.733696 0.692308 +vt 0.733696 0.669231 +vt 0.744565 0.646154 +vt 0.766304 0.646154 +vt 0.777174 0.669231 +vt 0.766304 0.669231 +vt 0.722826 0.715385 +vt 0.711957 0.730769 +vt 0.711957 0.715385 +vt 0.766304 0.692308 +vt 0.722826 0.730769 +vt 0.711957 0.753846 +vt 0.711957 0.692308 +vt 0.516304 0.546154 +vt 0.211957 0.469231 +vt 0.516304 0.500000 +vt 0.244565 0.453846 +vt 0.277174 0.407692 +vt 0.516304 0.469231 +vt 0.516304 0.407692 +vt 0.211957 0.576923 +vt 0.266304 0.330769 +vt 0.516304 0.638462 +vt 0.119565 0.569231 +vt 0.211957 0.592308 +vt 0.576087 0.569231 +vt 0.532609 0.569231 +vt 0.576087 0.476923 +vt 0.532609 0.476923 +vt 0.586957 0.576923 +vt 0.619565 0.469231 +vt 0.619565 0.576923 +vt 0.266304 0.715385 +vt -0.000000 0.969231 +vt 0.054348 0.815385 +vt 0.163043 0.923077 +vt 0.978760 0.562245 +vt 0.967391 0.568910 +vt 0.956023 0.562245 +vt 0.956023 0.530063 +vt 0.978760 0.530063 +vt 0.980467 0.595431 +vt 0.972826 0.599910 +vt 0.965185 0.595431 +vt 0.965185 0.573800 +vt 0.972826 0.569320 +vt 0.961957 0.515385 +vt 0.733696 0.630769 +vt 0.744565 0.692308 +vt 0.777174 0.646154 +vt 0.777174 0.692308 +vt 0.211957 0.453846 +vt 0.951087 0.584615 +vt 0.907609 0.600000 +vt 0.907609 0.584615 +vt 0.951087 0.569231 +vt 0.907609 0.569231 +vt 0.951087 0.538462 +vt 0.907609 0.553846 +vt 0.907609 0.538462 +vt 0.951087 0.630769 +vt 0.907609 0.646154 +vt 0.907609 0.630769 +vt 0.951087 0.600000 +vt 0.907609 0.615385 +vt 0.951087 0.553846 +vt 0.951087 0.523077 +vt 0.907609 0.523077 +vt 0.951087 0.615385 +vt 0.983696 0.569231 +vt 0.994565 0.584615 +vt 0.983696 0.584615 +vt 0.983696 0.538462 +vt 0.994565 0.553846 +vt 0.983696 0.553846 +vt 0.983696 0.630769 +vt 0.994565 0.646154 +vt 0.983696 0.646154 +vt 0.983696 0.600000 +vt 0.994565 0.615385 +vt 0.983696 0.615385 +vt 0.994565 0.569231 +vt 0.983696 0.523077 +vt 0.994565 0.538462 +vt 0.994565 0.630769 +vt 0.994565 0.600000 +vt 0.711957 0.669231 +vt 0.711957 0.692308 +vt 0.951087 0.646154 +vt 0.994565 0.523077 +vn 0.7071 -0.7071 0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn -0.8944 0.4472 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.0000 -1.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.3162 -0.9487 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.7071 0.7071 0.0000 +vn 0.8944 0.4472 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.0000 -0.4472 -0.8944 +vn 0.0000 -0.2298 -0.9732 +vn 0.0000 0.4472 0.8944 +vn 0.0000 0.2298 0.9732 +s off +f 70/91/35 100/92/35 102/93/35 +f 86/94/36 91/95/36 98/96/36 +f 72/97/37 67/98/37 73/99/37 +f 81/100/38 174/101/38 72/97/38 +f 87/102/39 69/103/39 86/94/39 +f 78/104/36 83/105/36 92/106/36 +f 79/107/36 85/108/36 78/104/36 +f 79/107/40 97/109/40 95/110/40 +f 80/111/41 99/112/41 97/109/41 +f 74/113/37 81/100/37 80/114/37 +f 84/115/36 89/116/36 88/117/36 +f 69/118/42 102/119/42 173/120/42 +f 91/121/41 96/122/41 98/123/41 +f 82/124/36 92/106/36 83/105/36 +f 99/125/36 81/126/36 72/97/36 +f 90/127/40 94/128/40 96/122/40 +f 73/99/43 173/129/43 101/130/43 +f 82/124/36 88/117/36 93/131/36 +f 106/132/36 103/133/36 104/134/36 +f 108/135/40 105/136/40 106/132/40 +f 112/137/44 109/138/44 110/139/44 +f 114/140/45 111/141/45 112/137/45 +f 108/135/37 112/142/37 110/143/37 +f 104/144/37 112/142/37 106/132/37 +f 107/145/39 111/146/39 105/136/39 +f 103/147/39 111/146/39 113/148/39 +f 129/149/42 127/150/42 125/151/42 +f 142/152/42 141/153/42 145/154/42 +f 153/155/46 151/156/46 152/157/46 +f 149/158/47 154/159/47 150/160/47 +f 148/161/48 152/157/48 147/162/48 +f 150/163/39 153/155/39 148/164/39 +f 149/165/37 152/157/37 151/156/37 +f 158/166/40 155/167/40 156/168/40 +f 161/169/39 163/170/39 159/171/39 +f 157/172/39 159/171/39 155/167/39 +f 158/173/37 160/174/37 162/175/37 +f 170/176/40 167/177/40 168/178/40 +f 160/174/37 166/179/37 162/175/37 +f 169/180/39 171/181/39 167/177/39 +f 170/176/37 168/178/37 172/182/37 +f 93/131/44 76/183/44 92/106/44 +f 88/184/49 77/185/49 93/131/49 +f 90/186/39 91/187/39 75/188/39 +f 86/94/50 71/189/50 91/187/50 +f 92/106/51 74/113/51 78/190/51 +f 70/91/35 87/102/35 100/92/35 +f 98/96/36 100/191/36 87/102/36 +f 87/102/36 86/94/36 98/96/36 +f 72/97/37 174/101/37 67/98/37 +f 81/100/38 68/192/38 174/101/38 +f 87/102/39 70/91/39 69/103/39 +f 78/104/36 85/108/36 83/105/36 +f 79/107/36 95/110/36 85/108/36 +f 79/107/40 80/111/40 97/109/40 +f 80/111/41 81/193/41 99/112/41 +f 79/194/37 78/190/37 80/114/37 +f 78/190/37 74/113/37 80/114/37 +f 74/113/37 68/192/37 81/100/37 +f 84/115/36 94/128/36 89/116/36 +f 68/195/42 74/196/42 71/197/42 +f 74/196/42 76/183/42 75/198/42 +f 71/197/42 74/196/42 75/198/42 +f 76/183/42 77/185/42 75/198/42 +f 71/197/42 69/118/42 174/199/42 +f 69/118/42 70/200/42 102/119/42 +f 67/201/42 174/199/42 173/120/42 +f 174/199/42 68/195/42 71/197/42 +f 173/120/42 174/199/42 69/118/42 +f 91/121/41 90/127/41 96/122/41 +f 82/124/36 93/131/36 92/106/36 +f 72/97/36 73/99/36 101/202/36 +f 101/202/36 99/125/36 72/97/36 +f 90/127/40 89/116/40 94/128/40 +f 73/99/43 67/98/43 173/129/43 +f 82/124/36 84/115/36 88/117/36 +f 106/132/36 105/136/36 103/133/36 +f 108/135/40 107/145/40 105/136/40 +f 112/137/44 111/141/44 109/138/44 +f 114/140/45 113/203/45 111/141/45 +f 108/135/37 106/132/37 112/142/37 +f 104/144/37 114/204/37 112/142/37 +f 107/145/39 109/205/39 111/146/39 +f 103/147/39 105/136/39 111/146/39 +f 125/151/42 124/206/42 123/207/42 +f 123/207/42 130/208/42 129/149/42 +f 129/149/42 128/209/42 127/150/42 +f 127/150/42 126/210/42 125/151/42 +f 125/151/42 123/207/42 129/149/42 +f 141/153/42 139/211/42 145/154/42 +f 139/211/42 140/212/42 145/154/42 +f 140/212/42 146/213/42 145/154/42 +f 145/154/42 144/214/42 143/215/42 +f 143/215/42 142/152/42 145/154/42 +f 153/155/46 154/159/46 151/156/46 +f 149/158/47 151/156/47 154/159/47 +f 148/161/48 153/155/48 152/157/48 +f 150/163/39 154/159/39 153/155/39 +f 149/165/37 147/216/37 152/157/37 +f 158/166/40 157/217/40 155/167/40 +f 161/169/39 165/218/39 163/170/39 +f 157/172/39 161/169/39 159/171/39 +f 158/173/37 156/219/37 160/174/37 +f 170/176/40 169/180/40 167/177/40 +f 160/174/37 164/220/37 166/179/37 +f 93/131/44 77/185/44 76/183/44 +f 88/184/49 75/188/49 77/185/49 +f 71/189/39 75/188/39 91/187/39 +f 75/188/39 88/184/39 90/186/39 +f 88/184/39 89/221/39 90/186/39 +f 86/94/50 69/103/50 71/189/50 +f 92/106/51 76/183/51 74/113/51 +s 1 +f 123/222/44 116/223/51 115/224/44 +f 130/225/49 115/224/44 122/226/49 +f 128/227/35 121/228/39 120/229/35 +f 126/230/43 119/231/40 118/232/43 +f 124/233/51 117/234/37 116/223/51 +f 129/235/39 122/226/49 121/228/39 +f 127/236/40 120/229/35 119/237/40 +f 125/238/37 118/232/43 117/234/37 +f 138/239/49 140/240/44 131/241/44 +f 136/242/35 145/243/39 137/244/39 +f 134/245/43 143/246/40 135/247/40 +f 132/248/51 141/249/37 133/250/37 +f 137/244/39 146/251/49 138/239/49 +f 135/252/40 144/253/35 136/242/35 +f 133/250/37 142/254/43 134/245/43 +f 131/241/44 139/255/51 132/248/51 +f 158/173/52 161/169/53 157/172/52 +f 155/167/54 160/256/55 156/168/54 +f 162/175/53 165/218/42 161/169/53 +f 159/171/55 164/257/36 160/256/55 +f 123/222/44 124/233/51 116/223/51 +f 130/225/49 123/222/44 115/224/44 +f 128/227/35 129/235/39 121/228/39 +f 126/230/43 127/258/40 119/231/40 +f 124/233/51 125/238/37 117/234/37 +f 129/235/39 130/225/49 122/226/49 +f 127/236/40 128/227/35 120/229/35 +f 125/238/37 126/230/43 118/232/43 +f 138/239/49 146/251/49 140/240/44 +f 136/242/35 144/253/35 145/243/39 +f 134/245/43 142/254/43 143/246/40 +f 132/248/51 139/255/51 141/249/37 +f 137/244/39 145/243/39 146/251/49 +f 135/252/40 143/259/40 144/253/35 +f 133/250/37 141/249/37 142/254/43 +f 131/241/44 140/240/44 139/255/51 +f 158/173/52 162/175/53 161/169/53 +f 155/167/54 159/171/55 160/256/55 +f 162/175/53 166/179/42 165/218/42 +f 159/171/55 163/170/36 164/257/36 +o Cylinder +v 0.000000 1.750000 -0.500000 +v -0.281250 1.674639 -0.500000 +v -0.487139 1.468750 -0.500000 +v -0.562500 1.187500 -0.500000 +v -0.487139 0.906250 -0.500000 +v -0.281250 0.700361 -0.500000 +v 0.000000 0.625000 -0.500000 +v 0.281250 0.700361 -0.500000 +v 0.487139 0.906250 -0.500000 +v 0.562500 1.187500 -0.500000 +v 0.487139 1.468750 -0.500000 +v 0.281250 1.674639 -0.500000 +v 0.000000 1.750000 -2.000000 +v -0.281250 1.674639 -2.000000 +v -0.487139 1.468750 -2.000000 +v -0.562500 1.187500 -2.000000 +v -0.487139 0.906250 -2.000000 +v -0.281250 0.700361 -2.000000 +v 0.000000 0.625000 -2.000000 +v 0.281250 0.700361 -2.000000 +v 0.487139 0.906250 -2.000000 +v 0.562500 1.187500 -2.000000 +v 0.487139 1.468750 -2.000000 +v 0.281250 1.674639 -2.000000 +v 0.000000 1.625000 -0.375000 +v -0.218750 1.566386 -0.375000 +v -0.378886 1.406250 -0.375000 +v -0.437500 1.187500 -0.375000 +v -0.378886 0.968750 -0.375000 +v -0.218750 0.808614 -0.375000 +v 0.000000 0.750000 -0.375000 +v 0.218750 0.808614 -0.375000 +v 0.378886 0.968750 -0.375000 +v 0.437500 1.187500 -0.375000 +v 0.378886 1.406250 -0.375000 +v 0.218750 1.566386 -0.375000 +v 0.000000 1.187500 -2.000000 +vt 0.663043 0.269231 +vt 0.711957 0.269231 +vt 0.663043 0.307692 +vt 0.663043 0.192308 +vt 0.711957 0.192308 +vt 0.663043 0.230769 +vt 0.663043 0.115385 +vt 0.711957 0.115385 +vt 0.663043 0.153846 +vt 0.663043 0.038462 +vt 0.711957 0.038462 +vt 0.663043 0.076923 +vt 0.663043 0.423077 +vt 0.711957 0.423077 +vt 0.663043 0.461538 +vt 0.663043 0.346154 +vt 0.711957 0.346154 +vt 0.663043 0.384615 +vt 0.663043 -0.000000 +vt 0.532609 0.230769 +vt 0.532609 0.192308 +vt 0.532609 0.307692 +vt 0.532609 0.269231 +vt 0.532609 0.115385 +vt 0.532609 0.076923 +vt 0.532609 0.461538 +vt 0.532609 0.423077 +vt 0.532609 0.346154 +vt 0.532609 0.153846 +vt 0.532609 0.038462 +vt 0.532609 0.000000 +vt 0.532609 0.384615 +vt 0.516304 0.146154 +vt 0.516304 0.115385 +vt 0.516304 0.161538 +vt 0.516304 0.192308 +vt 0.516304 0.238462 +vt 0.516304 0.269231 +vt 0.516304 0.315385 +vt 0.516304 0.346154 +vt 0.516304 0.392308 +vt 0.516304 0.423077 +vt 0.516304 0.007692 +vt 0.516304 0.038462 +vt 0.516304 0.084615 +vt 0.516304 0.223077 +vt 0.516304 0.300000 +vt 0.516304 0.376923 +vt 0.516304 0.453846 +vt 0.516304 0.069231 +vn 0.0000 -0.0000 -1.0000 +vn 0.5000 0.8660 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.5000 0.8660 0.0000 +vn -0.8660 0.5000 0.0000 +vn 0.8660 -0.5000 0.0000 +vn 1.0000 -0.0000 0.0000 +vn -0.5000 -0.8660 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 -0.0000 0.0000 +vn 0.8660 0.5000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn -0.8660 -0.5000 0.0000 +vn 0.7071 -0.0000 0.7071 +vn 0.6124 0.3536 0.7071 +vn 0.3536 0.6124 0.7071 +vn 0.0000 0.7071 0.7071 +vn -0.3536 0.6124 0.7071 +vn -0.6124 0.3536 0.7071 +vn -0.7071 -0.0000 0.7071 +vn -0.6124 -0.3536 0.7071 +vn -0.3536 -0.6124 0.7071 +vn -0.0000 -0.7071 0.7071 +vn 0.3536 -0.6124 0.7071 +vn 0.6124 -0.3536 0.7071 +s off +f 188/260/56 211/261/56 189/262/56 +f 198/263/56 211/264/56 187/265/56 +f 196/266/56 211/267/56 197/268/56 +f 194/269/56 211/270/56 195/271/56 +f 192/272/56 211/273/56 193/274/56 +f 190/275/56 211/276/56 191/277/56 +f 188/260/56 187/265/56 211/261/56 +f 198/263/56 197/268/56 211/264/56 +f 196/266/56 195/271/56 211/267/56 +f 194/269/56 193/278/56 211/270/56 +f 192/272/56 191/277/56 211/273/56 +f 190/275/56 189/262/56 211/276/56 +s 1 +f 198/263/57 175/279/58 186/280/57 +f 188/260/59 177/281/60 176/282/59 +f 195/271/61 184/283/62 183/284/61 +f 192/272/63 181/285/64 180/286/63 +f 189/262/60 178/287/65 177/281/60 +f 196/266/62 185/288/66 184/283/62 +f 193/278/64 182/289/67 181/290/64 +f 190/275/65 179/291/68 178/287/65 +f 197/268/66 186/280/57 185/288/66 +f 187/265/58 176/282/59 175/279/58 +f 194/269/67 183/284/61 182/289/67 +f 191/277/68 180/286/63 179/291/68 +f 184/283/69 209/292/70 208/293/69 +f 186/280/71 209/294/70 185/288/70 +f 175/279/72 210/295/71 186/280/71 +f 176/282/73 199/296/72 175/279/72 +f 177/281/74 200/297/73 176/282/73 +f 178/287/75 201/298/74 177/281/74 +f 179/291/76 202/299/75 178/287/75 +f 180/286/77 203/300/76 179/291/76 +f 181/285/78 204/301/77 180/286/77 +f 182/289/79 205/302/78 181/290/78 +f 183/284/80 206/303/79 182/289/79 +f 183/284/80 208/293/69 207/304/80 +f 198/263/57 187/265/58 175/279/58 +f 188/260/59 189/262/60 177/281/60 +f 195/271/61 196/266/62 184/283/62 +f 192/272/63 193/274/64 181/285/64 +f 189/262/60 190/275/65 178/287/65 +f 196/266/62 197/268/66 185/288/66 +f 193/278/64 194/269/67 182/289/67 +f 190/275/65 191/277/68 179/291/68 +f 197/268/66 198/263/57 186/280/57 +f 187/265/58 188/260/59 176/282/59 +f 194/269/67 195/271/61 183/284/61 +f 191/277/68 192/272/63 180/286/63 +f 184/283/69 185/288/70 209/292/70 +f 186/280/71 210/295/71 209/294/70 +f 175/279/72 199/305/72 210/295/71 +f 176/282/73 200/297/73 199/296/72 +f 177/281/74 201/306/74 200/297/73 +f 178/287/75 202/299/75 201/298/74 +f 179/291/76 203/307/76 202/299/75 +f 180/286/77 204/301/77 203/300/76 +f 181/285/78 205/308/78 204/301/77 +f 182/289/79 206/303/79 205/302/78 +f 183/284/80 207/309/80 206/303/79 +f 183/284/80 184/283/69 208/293/69 +o CylinderHighlights +v 0.375000 1.281250 -2.031250 +v 0.308709 1.253791 -2.031250 +v 0.281250 1.187500 -2.031250 +v 0.308709 1.121209 -2.031250 +v 0.375000 1.093750 -2.031250 +v 0.441291 1.121209 -2.031250 +v 0.468750 1.187500 -2.031250 +v 0.441291 1.253791 -2.031250 +v 0.278055 0.838476 -2.031250 +v 0.234375 0.781550 -2.031250 +v 0.163236 0.772185 -2.031250 +v 0.106310 0.815865 -2.031250 +v 0.096944 0.887005 -2.031250 +v 0.140625 0.943930 -2.031250 +v 0.211764 0.953296 -2.031250 +v 0.268690 0.909615 -2.031250 +v -0.441291 1.121209 -2.031250 +v -0.468750 1.187500 -2.031250 +v -0.441291 1.253791 -2.031250 +v -0.375000 1.281250 -2.031250 +v -0.308709 1.253791 -2.031250 +v -0.281250 1.187500 -2.031250 +v -0.308709 1.121209 -2.031250 +v -0.375000 1.093750 -2.031250 +v -0.278055 1.536524 -2.031250 +v -0.234375 1.593450 -2.031250 +v -0.163236 1.602815 -2.031250 +v -0.106310 1.559135 -2.031250 +v -0.096944 1.487995 -2.031250 +v -0.140625 1.431070 -2.031250 +v -0.211764 1.421704 -2.031250 +v -0.268690 1.465385 -2.031250 +v -0.163236 0.772185 -2.031250 +v -0.234375 0.781551 -2.031250 +v -0.278056 0.838476 -2.031250 +v -0.268690 0.909616 -2.031250 +v -0.211764 0.953296 -2.031250 +v -0.140625 0.943931 -2.031250 +v -0.096945 0.887005 -2.031250 +v -0.106310 0.815866 -2.031250 +v 0.163236 1.602815 -2.031250 +v 0.234375 1.593449 -2.031250 +v 0.278056 1.536524 -2.031250 +v 0.268690 1.465384 -2.031250 +v 0.211764 1.421704 -2.031250 +v 0.140625 1.431069 -2.031250 +v 0.096945 1.487995 -2.031250 +v 0.106310 1.559134 -2.031250 +vt 0.212036 0.603846 +vt 0.220109 0.592421 +vt 0.228181 0.603846 +vt 0.212036 0.603846 +vt 0.220109 0.592421 +vt 0.228181 0.603846 +vt 0.212036 0.603846 +vt 0.220109 0.592421 +vt 0.228181 0.603846 +vt 0.220109 0.615272 +vt 0.212036 0.603846 +vt 0.220109 0.592421 +vt 0.228181 0.603846 +vt 0.220109 0.615272 +vt 0.212036 0.603846 +vt 0.220109 0.615272 +vt 0.212036 0.603846 +vt 0.220109 0.592421 +vt 0.225817 0.611925 +vt 0.220109 0.615272 +vt 0.214401 0.611925 +vt 0.214401 0.595767 +vt 0.225817 0.595767 +vt 0.225817 0.611925 +vt 0.220109 0.615272 +vt 0.214401 0.611925 +vt 0.214401 0.595767 +vt 0.225817 0.595767 +vt 0.225817 0.611925 +vt 0.220109 0.615272 +vt 0.214401 0.611925 +vt 0.214401 0.595767 +vt 0.225817 0.595767 +vt 0.228181 0.603846 +vt 0.225817 0.611925 +vt 0.214401 0.611925 +vt 0.214401 0.595767 +vt 0.225817 0.595767 +vt 0.225817 0.611925 +vt 0.214401 0.611925 +vt 0.214401 0.595767 +vt 0.220109 0.592421 +vt 0.225817 0.595767 +vt 0.228181 0.603846 +vt 0.225817 0.611925 +vt 0.214401 0.611925 +vt 0.214401 0.595767 +vt 0.225817 0.595767 +vn 0.0000 0.0000 -1.0000 +s off +f 218/310/81 216/311/81 214/312/81 +f 221/313/81 223/314/81 225/315/81 +f 229/316/81 231/317/81 233/318/81 +f 243/319/81 237/320/81 239/321/81 +f 249/322/81 251/323/81 245/324/81 +f 259/325/81 253/326/81 255/327/81 +f 214/312/81 213/328/81 212/329/81 +f 212/329/81 219/330/81 218/310/81 +f 218/310/81 217/331/81 216/311/81 +f 216/311/81 215/332/81 214/312/81 +f 214/312/81 212/329/81 218/310/81 +f 225/315/81 226/333/81 227/334/81 +f 227/334/81 220/335/81 221/313/81 +f 221/313/81 222/336/81 223/314/81 +f 223/314/81 224/337/81 225/315/81 +f 225/315/81 227/334/81 221/313/81 +f 233/318/81 234/338/81 235/339/81 +f 235/339/81 228/340/81 229/316/81 +f 229/316/81 230/341/81 231/317/81 +f 231/317/81 232/342/81 233/318/81 +f 233/318/81 235/339/81 229/316/81 +f 241/343/81 242/344/81 243/319/81 +f 243/319/81 236/345/81 237/320/81 +f 237/320/81 238/346/81 239/321/81 +f 239/321/81 240/347/81 241/343/81 +f 241/343/81 243/319/81 239/321/81 +f 249/322/81 250/348/81 251/323/81 +f 251/323/81 244/349/81 245/324/81 +f 245/324/81 246/350/81 247/351/81 +f 247/351/81 248/352/81 245/324/81 +f 248/352/81 249/322/81 245/324/81 +f 257/353/81 258/354/81 259/325/81 +f 259/325/81 252/355/81 253/326/81 +f 253/326/81 254/356/81 255/327/81 +f 255/327/81 256/357/81 257/353/81 +f 257/353/81 259/325/81 255/327/81 +o FrameDark +v -0.187500 0.051777 3.937500 +v 0.187500 0.051777 3.937500 +v -0.312500 0.000000 -0.500000 +v 0.312500 0.000000 -0.500000 +v -0.187500 1.448223 3.937500 +v 0.187500 1.448223 3.937500 +v -0.187500 -0.125000 -0.500000 +v -0.135723 0.000000 3.937500 +v 0.135723 0.000000 3.937500 +v 0.187500 -0.125000 -0.500000 +v -0.312500 0.375000 -0.250000 +v 0.312500 0.375000 -0.250000 +v -0.312500 0.375000 2.500000 +v 0.312500 0.375000 2.500000 +v -0.312500 1.000000 2.500000 +v 0.312500 1.000000 2.500000 +v -0.312500 1.375000 2.875000 +v 0.312500 1.375000 2.875000 +v -0.312500 1.375000 3.250000 +v 0.312500 1.375000 3.250000 +v -0.135723 1.500000 3.937500 +v 0.135723 1.500000 3.937500 +v 0.437500 0.875000 0.562500 +v 0.437500 0.875000 0.437500 +v -0.312500 1.500000 3.250000 +v 0.312500 1.500000 3.250000 +v -0.187500 1.625000 3.250000 +v 0.187500 1.625000 3.250000 +v 0.437500 0.500000 0.437500 +v 0.437500 0.500000 0.562500 +v -0.312500 0.375000 -0.500000 +v 0.312500 0.375000 -0.500000 +v -0.187500 1.625000 4.000000 +v 0.187500 1.625000 4.000000 +v -0.187500 2.000000 4.000000 +v 0.187500 2.000000 4.000000 +v -0.187500 1.625000 3.250000 +v 0.187500 1.625000 3.250000 +v -0.187500 2.000000 3.500000 +v 0.187500 2.000000 3.500000 +v 0.312500 1.500000 4.000000 +v 0.312500 0.000000 4.000000 +v -0.312500 0.000000 4.000000 +v -0.312500 1.500000 4.000000 +v -0.187500 -0.125000 4.000000 +v 0.187500 -0.125000 4.000000 +v -0.187500 1.625000 4.000000 +v 0.187500 1.625000 4.000000 +v 0.250000 1.474112 4.062500 +v 0.250000 0.025888 4.062500 +v -0.250000 0.025888 4.062500 +v -0.250000 1.474112 4.062500 +v -0.161612 -0.062500 4.062500 +v 0.161612 -0.062500 4.062500 +v -0.161612 1.562500 4.062500 +v 0.161612 1.562500 4.062500 +v 0.312500 0.000000 3.125000 +v 0.312500 0.375000 3.125000 +v 0.312500 0.000000 2.812500 +v 0.312500 0.375000 2.750000 +v -0.312500 0.000000 2.812500 +v 0.312500 0.187500 2.375000 +v -0.375000 0.000000 3.062500 +v 0.312500 0.187500 0.750000 +v 0.312500 0.000000 0.625000 +v 0.312500 0.187500 0.625000 +v 0.312500 0.375000 0.562500 +v 0.312500 0.375000 0.437500 +v 0.375000 1.000000 0.562500 +v 0.375000 1.000000 0.437500 +v 0.375000 1.500000 0.562500 +v 0.375000 1.500000 0.437500 +v 0.187500 1.687500 0.562500 +v 0.187500 1.687500 0.437500 +v -0.437500 0.875000 0.562500 +v -0.437500 0.875000 0.437500 +v -0.437500 0.500000 0.437500 +v -0.437500 0.500000 0.562500 +v -0.312500 0.000000 3.125000 +v -0.312500 0.375000 3.125000 +v -0.187500 -0.125000 2.812500 +v -0.312500 0.375000 2.750000 +v 0.187500 -0.125000 2.812500 +v -0.312500 0.187500 2.375000 +v -0.375000 0.000000 2.812500 +v -0.312500 0.187500 0.750000 +v -0.312500 0.000000 0.625000 +v -0.312500 0.187500 0.625000 +v -0.312500 0.375000 0.562500 +v -0.312500 0.375000 0.437500 +v -0.375000 1.000000 0.562500 +v -0.375000 1.000000 0.437500 +v -0.375000 1.500000 0.562500 +v -0.375000 1.500000 0.437500 +v -0.187500 1.687500 0.562500 +v -0.187500 1.687500 0.437500 +v 0.187500 1.750000 0.562500 +v 0.187500 1.750000 0.437500 +v -0.187500 1.750000 0.562500 +v -0.187500 1.750000 0.437500 +v 0.500000 0.875000 0.562500 +v 0.500000 0.875000 0.437500 +v 0.500000 0.500000 0.437500 +v 0.500000 0.500000 0.562500 +v 0.375000 0.000000 3.125000 +v 0.375000 0.375000 3.125000 +v 0.187500 -0.125000 3.062500 +v 0.375000 0.375000 2.750000 +v -0.187500 -0.125000 3.062500 +v 0.375000 0.187500 2.375000 +v 0.375000 0.000000 3.062500 +v 0.375000 0.187500 0.750000 +v 0.375000 0.000000 0.625000 +v 0.375000 0.187500 0.625000 +v 0.375000 0.375000 0.562500 +v 0.375000 0.375000 0.437500 +v 0.437500 1.000000 0.562500 +v 0.437500 1.000000 0.437500 +v 0.437500 1.500000 0.562500 +v 0.437500 1.500000 0.437500 +v -0.500000 0.875000 0.562500 +v -0.500000 0.875000 0.437500 +v -0.500000 0.500000 0.437500 +v -0.500000 0.500000 0.562500 +v -0.375000 0.000000 3.125000 +v -0.375000 0.375000 3.125000 +v -0.312500 0.000000 3.062500 +v -0.375000 0.375000 2.750000 +v 0.312500 0.000000 3.062500 +v -0.375000 0.187500 2.375000 +v 0.375000 0.000000 2.812500 +v -0.375000 0.187500 0.750000 +v -0.375000 0.000000 0.625000 +v -0.375000 0.187500 0.625000 +v -0.375000 0.375000 0.562500 +v -0.375000 0.375000 0.437500 +v -0.437500 1.000000 0.562500 +v -0.437500 1.000000 0.437500 +v -0.437500 1.500000 0.562500 +v -0.437500 1.500000 0.437500 +v -0.187500 -0.187500 2.812500 +v 0.187500 -0.187500 2.812500 +v 0.187500 -0.187500 3.062500 +v -0.187500 -0.187500 3.062500 +v -0.187500 -0.250000 2.812500 +v -0.187500 -0.250000 3.062500 +v 0.187500 -0.250000 3.062500 +v 0.187500 -0.250000 2.812500 +v -0.250000 1.750000 -0.250000 +v 0.250000 1.750000 -0.250000 +v -0.437500 1.375000 -0.250000 +v 0.437500 1.375000 -0.250000 +v -0.437500 0.750000 -0.250000 +v 0.437500 0.750000 -0.250000 +v -0.250000 0.375000 -0.250000 +v 0.250000 0.375000 -0.250000 +v 0.250000 1.750000 -0.375000 +v -0.250000 1.750000 -0.375000 +v 0.437500 1.375000 -0.375000 +v -0.437500 1.375000 -0.375000 +v 0.437500 0.750000 -0.375000 +v -0.437500 0.750000 -0.375000 +v -0.250000 0.375000 -0.375000 +v 0.250000 0.375000 -0.375000 +v -0.250000 0.375000 -0.375000 +v 0.250000 0.375000 -0.375000 +v -0.250000 0.625000 -0.375000 +v 0.250000 0.625000 -0.375000 +v 0.250000 0.375000 -2.000000 +v -0.250000 0.375000 -2.000000 +v 0.250000 0.625000 -2.000000 +v -0.250000 0.625000 -2.000000 +v 0.125000 0.125000 -0.375000 +v -0.125000 0.125000 -0.375000 +v 0.125000 0.125000 -2.000000 +v -0.125000 0.125000 -2.000000 +v 0.187500 -0.125000 -0.500000 +v -0.187500 -0.125000 -0.500000 +v 0.187500 -0.125000 1.500000 +v -0.187500 -0.125000 1.500000 +v 0.187500 -0.312500 -0.750000 +v -0.187500 -0.312500 -0.750000 +v 0.187500 -0.312500 1.125000 +v -0.187500 -0.312500 1.125000 +v 0.187500 0.250000 -0.500000 +v -0.187500 0.250000 -0.500000 +v 0.187500 0.250000 -0.750000 +v -0.187500 0.250000 -0.750000 +v -0.250000 1.875000 -2.000000 +v 0.250000 1.875000 -2.000000 +v -0.437500 1.500000 -2.000000 +v 0.437500 1.500000 -2.000000 +v -0.437500 0.875000 -2.000000 +v 0.437500 0.875000 -2.000000 +v -0.250000 0.500000 -2.000000 +v 0.250000 0.500000 -2.000000 +v 0.250000 1.875000 -2.125000 +v -0.250000 1.875000 -2.125000 +v 0.437500 1.500000 -2.125000 +v -0.437500 1.500000 -2.125000 +v 0.437500 0.875000 -2.125000 +v -0.437500 0.875000 -2.125000 +v -0.250000 0.500000 -2.125000 +v 0.250000 0.500000 -2.125000 +v -0.187500 1.750000 0.562500 +v 0.187500 1.750000 0.562500 +v -0.187500 1.750000 -2.000000 +v 0.187500 1.750000 -2.000000 +v -0.187500 1.875000 -2.000000 +v -0.187500 1.875000 0.312500 +v 0.187500 1.875000 0.312500 +v 0.187500 1.875000 -2.000000 +v 0.250000 1.875000 -2.125000 +v 0.250000 1.875000 -2.250000 +v 0.187500 2.000000 -2.125000 +v 0.187500 2.000000 -2.250000 +v 0.125000 2.000000 -2.125000 +v 0.125000 2.000000 -2.250000 +v 0.125000 1.875000 -2.125000 +v 0.125000 1.875000 -2.250000 +v -0.250000 1.875000 -2.125000 +v -0.250000 1.875000 -2.250000 +v -0.187500 2.000000 -2.125000 +v -0.187500 2.000000 -2.250000 +v -0.125000 2.000000 -2.125000 +v -0.125000 2.000000 -2.250000 +v -0.125000 1.875000 -2.125000 +v -0.125000 1.875000 -2.250000 +v -0.250000 1.875000 -2.125000 +v 0.250000 1.875000 -2.125000 +v 0.250000 1.875000 -2.250000 +v -0.250000 1.875000 -2.250000 +v 0.250000 1.500000 -2.625000 +v -0.250000 1.500000 -2.625000 +v 0.250000 1.375000 -3.125000 +v -0.250000 1.375000 -3.125000 +v 0.250000 1.250000 -3.125000 +v -0.250000 1.250000 -3.125000 +v 0.187500 1.500000 -2.625000 +v 0.187500 1.375000 -3.125000 +v 0.187500 1.250000 -3.125000 +v -0.187500 1.500000 -2.625000 +v -0.187500 1.375000 -3.125000 +v -0.187500 1.250000 -3.125000 +v 0.187500 1.250000 -2.625000 +v -0.187500 1.250000 -2.625000 +v 0.250000 0.562500 -2.125000 +v -0.250000 0.562500 -2.125000 +v 0.437500 1.375000 -2.000000 +v 0.312500 1.250000 -2.000000 +v 0.312500 1.125000 -2.000000 +v 0.437500 1.000000 -2.000000 +v 0.437500 1.375000 -2.125000 +v 0.312500 1.250000 -2.125000 +v 0.312500 1.125000 -2.125000 +v 0.437500 1.000000 -2.125000 +vt 0.445652 0.207692 +vt 0.054348 0.253846 +vt 0.054348 0.207692 +vt 0.054348 0.276923 +vt 0.445652 0.253846 +vt 0.445652 0.276923 +vt 0.445652 0.184615 +vt 0.054348 0.184615 +vt 0.054348 0.461538 +vt 0.119565 0.484615 +vt 0.054348 0.484615 +vt 0.054348 0.530769 +vt 0.119565 0.553846 +vt 0.054348 0.553846 +vt 0.119565 0.530769 +vt 0.510870 0.269231 +vt 0.489130 0.192308 +vt 0.510870 0.192308 +vt 0.184783 0.323077 +vt 0.119565 0.446154 +vt 0.119565 0.015385 +vt 0.184783 0.061538 +vt 0.184783 0.138462 +vt 0.032609 0.600000 +vt 0.000000 0.646154 +vt -0.000000 0.600000 +vt 0.076087 0.646154 +vt 0.032609 0.692308 +vt 0.032609 0.646154 +vt 0.032609 0.553846 +vt 0.076087 0.600000 +vt 0.108696 0.646154 +vt 0.728261 0.261538 +vt 0.733696 0.215385 +vt 0.733696 0.261538 +vt 0.717391 0.215385 +vt 0.711957 0.261538 +vt 0.711957 0.215385 +vt 0.293478 0.007692 +vt 0.288043 0.053846 +vt 0.288043 0.007692 +vt 0.717391 -0.000000 +vt 0.711957 0.023077 +vt 0.711957 0.000000 +vt 0.728261 0.169231 +vt 0.733696 0.107692 +vt 0.733696 0.169231 +vt 0.717391 0.023077 +vt 0.711957 0.046154 +vt 0.358696 0.030769 +vt 0.500000 0.038462 +vt 0.358696 0.038462 +vt 0.717391 0.107692 +vt 0.711957 0.169231 +vt 0.711957 0.107692 +vt 0.293478 0.053846 +vt 0.326087 0.061538 +vt 0.293478 0.061538 +vt 0.728261 -0.000000 +vt 0.717391 0.046154 +vt 0.711957 0.092308 +vt 0.510870 0.030769 +vt 0.516304 0.007692 +vt 0.516304 0.030769 +vt 0.733696 0.046154 +vt 0.728261 0.023077 +vt 0.733696 0.023077 +vt 0.293478 0.115385 +vt 0.326087 0.069231 +vt 0.358696 0.092308 +vt 0.728261 0.092308 +vt 0.733696 0.092308 +vt 0.326087 0.053846 +vt 0.358696 0.061538 +vt 0.728261 0.107692 +vt 0.728261 0.476923 +vt 0.733696 0.453846 +vt 0.733696 0.476923 +vt 0.717391 0.169231 +vt 0.711957 0.207692 +vt 0.711957 0.176923 +vt 0.733696 0.207692 +vt 0.733696 0.176923 +vt 0.510870 0.007692 +vt 0.293478 0.000000 +vt 0.510870 -0.000000 +vt 0.717391 0.453846 +vt 0.711957 0.476923 +vt 0.711957 0.453846 +vt 0.711957 0.430769 +vt 0.728261 0.430769 +vt 0.733696 0.384615 +vt 0.733696 0.430769 +vt 0.358696 0.069231 +vt 0.326087 0.061538 +vt 0.358696 0.061538 +vt 0.728261 0.369231 +vt 0.733696 0.369231 +vt 0.293478 0.123077 +vt 0.510870 0.115385 +vt 0.510870 0.123077 +vt 0.717391 0.369231 +vt 0.711957 0.384615 +vt 0.711957 0.369231 +vt 0.728261 0.453846 +vt 0.293478 0.069231 +vt 0.288043 0.115385 +vt 0.288043 0.069231 +vt 0.733696 0.307692 +vt 0.717391 0.384615 +vt 0.500000 0.092308 +vt 0.358696 0.084615 +vt 0.500000 0.084615 +vt 0.717391 0.307692 +vt 0.711957 0.307692 +vt 0.293478 0.061538 +vt 0.516304 0.092308 +vt 0.516304 0.115385 +vt 0.711957 0.269231 +vt 0.711957 0.300000 +vt 0.728261 0.307692 +vt 0.733696 0.269231 +vt 0.733696 0.300000 +vt 0.728261 0.384615 +vt 0.717391 0.261538 +vt 0.728261 0.215385 +vt 0.717391 0.092308 +vt 0.728261 0.046154 +vt 0.679348 0.523077 +vt 0.701087 0.492308 +vt 0.701087 0.523077 +vt 0.706522 0.484615 +vt 0.706522 0.476923 +vt 0.739130 0.476923 +vt 0.684783 0.484615 +vt 0.695652 0.484615 +vt 0.684783 0.530769 +vt 0.695652 0.530769 +vt 0.760870 0.484615 +vt 0.744565 0.492308 +vt 0.750000 0.484615 +vt 0.744565 0.523077 +vt 0.760870 0.530769 +vt 0.750000 0.530769 +vt 0.766304 0.492308 +vt 0.739130 0.492308 +vt 0.706522 0.523077 +vt 0.706522 0.492308 +vt 0.739130 0.530769 +vt 0.739130 0.538462 +vt 0.706522 0.538462 +vt 0.222826 0.861538 +vt 0.282609 0.907692 +vt 0.239130 0.907692 +vt 0.239130 0.738462 +vt 0.298913 0.784615 +vt 0.222826 0.784615 +vt 0.298913 0.861538 +vt 0.326087 0.907692 +vt 0.385870 0.861538 +vt 0.369565 0.907692 +vt 0.309783 0.784615 +vt 0.369565 0.738462 +vt 0.385870 0.784615 +vt 0.309783 0.861538 +vt 0.326087 0.923077 +vt 0.369565 0.923077 +vt 0.396739 0.907692 +vt 0.396739 0.861538 +vt 0.396739 0.784615 +vt 0.298913 0.738462 +vt 0.309783 0.907692 +vt 0.298913 0.907692 +vt 0.369565 0.723077 +vt 0.326087 0.738462 +vt 0.326087 0.723077 +vt 0.385870 0.738462 +vt 0.396739 0.738462 +vt 0.570652 0.730769 +vt 0.711957 0.761538 +vt 0.570652 0.761538 +vt 0.570652 0.638462 +vt 0.711957 0.607692 +vt 0.711957 0.638462 +vt 0.711957 0.669231 +vt 0.570652 0.669231 +vt 0.711957 0.730769 +vt 0.570652 0.576923 +vt 0.570652 0.607692 +vt 0.570652 0.792308 +vt 0.766304 0.861538 +vt 0.603261 0.815385 +vt 0.766304 0.815385 +vt 0.570652 0.815385 +vt 0.603261 0.861538 +vt 0.570652 0.861538 +vt 0.744565 0.792308 +vt 0.570652 0.792308 +vt 0.815217 0.861538 +vt 0.744565 0.884615 +vt 0.766304 0.746154 +vt 0.766304 0.930769 +vt 0.744565 0.930769 +vt 0.396739 0.861538 +vt 0.456522 0.907692 +vt 0.413043 0.907692 +vt 0.413043 0.738462 +vt 0.472826 0.784615 +vt 0.396739 0.784615 +vt 0.461957 0.815385 +vt 0.461957 0.830769 +vt 0.500000 0.907692 +vt 0.559783 0.861538 +vt 0.543478 0.907692 +vt 0.483696 0.784615 +vt 0.543478 0.738462 +vt 0.559783 0.784615 +vt 0.494565 0.830769 +vt 0.494565 0.815385 +vt 0.500000 0.923077 +vt 0.543478 0.923077 +vt 0.570652 0.907692 +vt 0.570652 0.861538 +vt 0.570652 0.784615 +vt 0.472826 0.738462 +vt 0.472826 0.861538 +vt 0.483696 0.907692 +vt 0.472826 0.907692 +vt 0.543478 0.723077 +vt 0.500000 0.738462 +vt 0.500000 0.723077 +vt 0.483696 0.800000 +vt 0.472826 0.800000 +vt 0.559783 0.738462 +vt 0.570652 0.738462 +vt 0.222826 0.692308 +vt -0.000000 0.738462 +vt -0.000000 0.692308 +vt 0.021739 0.753846 +vt 0.222826 0.800000 +vt 0.021739 0.800000 +vt 0.222826 0.738462 +vt 0.222826 0.815385 +vt 0.000000 0.753846 +vt 0.000000 0.800000 +vt 0.804348 0.646154 +vt 0.793478 0.630769 +vt 0.804348 0.630769 +vt 0.804348 0.653846 +vt 0.793478 0.646154 +vt 0.804348 0.669231 +vt 0.793478 0.653846 +vt 0.782609 0.653846 +vt 0.782609 0.638462 +vt 0.815217 0.653846 +vt 0.793478 0.707692 +vt 0.804348 0.692308 +vt 0.804348 0.707692 +vt 0.793478 0.692308 +vt 0.804348 0.684615 +vt 0.793478 0.684615 +vt 0.804348 0.669231 +vt 0.782609 0.684615 +vt 0.782609 0.700000 +vt 0.815217 0.684615 +vt 0.815217 0.700000 +vt 0.815110 0.687200 +vt 0.826087 0.746154 +vt 0.815217 0.746154 +vt 0.858696 0.692308 +vt 0.902174 0.684615 +vt 0.902174 0.692308 +vt 0.907609 0.607692 +vt 0.902174 0.623077 +vt 0.902174 0.607692 +vt 0.902174 0.738462 +vt 0.858696 0.746154 +vt 0.858696 0.738462 +vt 0.902174 0.807692 +vt 0.907609 0.823077 +vt 0.902174 0.823077 +vt 0.826087 0.684615 +vt 0.815217 0.600000 +vt 0.771739 0.553846 +vt 0.815217 0.553846 +vt 0.771739 0.600000 +vt 0.815217 0.615385 +vt 0.771739 0.630769 +vt 0.750000 0.553846 +vt 0.750000 0.600000 +vt 0.815217 0.538462 +vt 0.771739 0.523077 +vt 0.858696 0.638462 +vt 0.858696 0.792308 +vt 0.815217 0.907692 +vt 0.472826 0.846154 +vt 0.483696 0.861538 +vt 0.472826 0.830769 +vt 0.483696 0.846154 +vt 0.472826 0.815385 +vt 0.483696 0.830769 +vt 0.483696 0.815385 +vt 0.456522 0.269231 +vt 0.733696 -0.000000 +vt 0.119565 0.461538 +vt 0.489130 0.269231 +vt 0.445652 0.323077 +vt 0.423913 0.323077 +vt 0.184783 0.400000 +vt 0.152174 0.446154 +vt 0.054348 0.000000 +vt 0.119565 -0.000000 +vt 0.152174 0.015385 +vt 0.445652 0.138462 +vt 0.423913 0.138462 +vt 0.097826 0.692308 +vt 0.097826 0.553846 +vt 0.108696 0.600000 +vt 0.500000 0.030769 +vt 0.510870 0.092308 +vt 0.358696 0.053846 +vt 0.717391 0.476923 +vt 0.717391 0.430769 +vt 0.679348 0.492308 +vt 0.739130 0.484615 +vt 0.766304 0.523077 +vt 0.739130 0.523077 +vt 0.706522 0.530769 +vt 0.282609 0.738462 +vt 0.385870 0.907692 +vt 0.309783 0.738462 +vt 0.711957 0.576923 +vt 0.711957 0.792308 +vt 0.815217 0.815385 +vt 0.570652 0.884615 +vt 0.744565 0.746154 +vt 0.456522 0.738462 +vt 0.559783 0.907692 +vt 0.483696 0.738462 +vt 0.222826 0.753846 +vt -0.000000 0.815385 +vt 0.793478 0.669231 +vt 0.815217 0.638462 +vt 0.793478 0.669231 +vt 0.858696 0.684615 +vt 0.907609 0.623077 +vt 0.902174 0.746154 +vt 0.907609 0.807692 +vt 0.815217 0.523077 +vt 0.456522 0.192308 +vt 0.043478 0.276923 +vt 0.043478 0.461538 +vt 0.043478 -0.000000 +vt 0.043478 0.184615 +vt 0.043478 0.253846 +vt 0.043478 0.207692 +vt 0.043478 0.484615 +vt 0.043478 0.530769 +vt 0.043478 0.553846 +vt 0.032609 0.276923 +vt 0.032609 0.461538 +vt 0.032609 0.000000 +vt 0.032609 0.184615 +vt 0.032609 0.207692 +vt 0.032609 0.253846 +vt 0.032609 0.530769 +vt 0.032609 0.553846 +vt 0.032609 0.484615 +vn 0.0000 -1.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 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.5547 -0.8321 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.8944 -0.4472 +vn 0.0000 -0.7071 -0.7071 +vn -0.8944 0.4472 0.0000 +vn 0.8944 0.4472 0.0000 +vn 0.8944 -0.4472 0.0000 +vn -0.8944 -0.4472 0.0000 +vn 0.0000 -0.8944 0.4472 +vn 0.0000 0.8944 0.4472 +vn 0.0000 0.9701 -0.2425 +vn 0.0000 0.7071 -0.7071 +vn 0.6269 -0.2597 0.7345 +vn 0.6269 0.2597 0.7345 +vn -0.6269 0.2597 0.7345 +vn -0.6269 -0.2597 0.7345 +vn 0.2597 -0.6269 0.7345 +vn -0.2597 -0.6269 0.7345 +vn 0.2597 0.6269 0.7345 +vn -0.2597 0.6269 0.7345 +vn -0.8125 0.3366 0.4760 +vn -0.8125 -0.3366 0.4760 +vn 0.8125 -0.3366 0.4760 +vn 0.8125 0.3366 0.4760 +vn 0.3366 0.8125 0.4760 +vn -0.3366 0.8125 0.4760 +vn 0.3366 -0.8125 0.4760 +vn -0.3366 -0.8125 0.4760 +s off +f 266/358/82 305/359/82 304/360/82 +f 301/361/83 269/362/83 263/363/83 +f 262/364/84 304/360/84 302/365/84 +f 300/366/85 287/367/85 307/368/85 +f 306/369/86 284/370/86 303/371/86 +f 307/368/87 286/372/87 306/369/87 +f 271/373/87 290/374/87 270/375/87 +f 273/376/88 279/377/88 301/361/88 +f 278/378/89 274/379/89 272/380/89 +f 295/381/90 292/382/90 293/383/90 +f 298/384/89 292/385/89 294/386/89 +f 293/387/88 299/388/88 295/381/88 +f 299/388/87 294/386/87 295/381/87 +f 299/388/91 296/389/91 298/384/91 +f 359/390/92 333/391/92 355/392/92 +f 356/393/90 354/394/90 332/395/90 +f 364/396/90 317/397/90 316/398/90 +f 371/399/93 326/400/93 323/401/93 +f 379/402/92 329/403/92 331/404/92 +f 374/405/90 289/406/90 326/400/90 +f 369/407/87 323/408/87 321/409/87 +f 376/410/90 330/411/90 328/412/90 +f 365/413/87 319/414/87 317/415/87 +f 373/416/88 374/405/88 371/399/88 +f 363/417/90 282/418/90 289/406/90 +f 373/419/92 324/420/92 325/421/92 +f 288/422/92 375/423/92 327/424/92 +f 384/425/89 387/426/89 389/427/89 +f 361/428/92 288/422/92 283/429/92 +f 367/430/94 321/431/94 319/414/94 +f 377/432/92 283/429/92 329/403/92 +f 364/396/88 369/407/88 367/430/88 +f 282/418/90 376/410/90 328/412/90 +f 393/433/95 349/434/95 347/435/95 +f 378/436/90 332/437/90 330/438/90 +f 333/439/92 379/402/92 331/440/92 +f 372/441/82 316/442/82 324/443/82 +f 394/444/93 345/445/93 348/446/93 +f 337/447/90 394/444/90 348/446/90 +f 382/448/92 335/449/92 336/450/92 +f 389/451/94 341/452/94 343/453/94 +f 335/449/92 397/454/92 351/455/92 +f 338/456/82 392/457/82 346/458/82 +f 396/459/90 334/460/90 350/461/90 +f 395/462/92 336/450/92 349/434/92 +f 385/463/90 338/464/90 339/465/90 +f 397/454/92 353/466/92 351/455/92 +f 380/467/90 337/447/90 334/460/90 +f 391/468/87 343/469/87 345/470/87 +f 398/471/90 350/461/90 352/472/90 +f 387/426/87 339/473/87 341/452/87 +f 392/457/92 347/474/92 346/475/92 +f 354/476/90 398/471/90 352/477/90 +f 399/478/92 355/479/92 353/480/92 +f 394/444/84 382/448/84 395/462/84 +f 382/448/89 380/467/89 381/481/89 +f 381/481/96 396/459/96 397/454/96 +f 399/478/89 396/459/89 398/471/89 +f 398/471/86 359/390/86 399/478/86 +f 356/393/87 359/390/87 358/482/87 +f 356/393/85 379/402/85 357/483/85 +f 379/402/88 376/410/88 377/432/88 +f 360/484/97 377/432/97 376/410/97 +f 362/485/88 360/484/88 363/417/88 +f 363/417/83 375/423/83 362/485/83 +f 393/433/89 394/444/89 395/462/89 +f 322/486/84 400/487/84 403/488/84 +f 400/489/92 340/490/92 342/491/92 +f 400/487/92 320/492/92 340/493/92 +f 386/494/90 403/488/90 368/495/90 +f 318/496/92 401/497/92 342/498/92 +f 402/499/90 388/500/90 366/501/90 +f 390/502/83 402/499/83 401/497/83 +f 407/503/82 405/504/82 404/505/82 +f 400/487/89 405/504/89 403/488/89 +f 402/499/88 407/503/88 401/497/88 +f 402/506/90 366/507/90 368/508/90 +f 410/509/90 409/510/90 408/511/90 +f 414/512/90 413/513/90 412/514/90 +f 412/514/90 411/515/90 410/509/90 +f 416/516/92 419/517/92 417/518/92 +f 420/519/92 422/520/92 421/521/92 +f 418/522/92 421/521/92 419/517/92 +f 409/523/87 417/518/87 408/524/87 +f 408/525/96 419/517/96 410/526/96 +f 410/526/89 421/521/89 412/527/89 +f 415/528/98 420/519/98 413/513/98 +f 411/515/97 416/529/97 409/530/97 +f 414/531/82 423/532/82 415/533/82 +f 413/513/88 418/522/88 411/515/88 +f 412/527/99 422/534/99 414/535/99 +f 426/536/89 429/537/89 424/538/89 +f 425/539/98 434/540/98 428/541/98 +f 425/539/88 430/542/88 427/543/88 +f 427/543/87 431/544/87 426/536/87 +f 433/545/82 434/540/82 432/546/82 +f 429/537/99 433/547/99 424/538/99 +f 440/548/82 443/549/82 441/550/82 +f 439/551/100 442/552/100 438/553/100 +f 437/554/89 443/549/89 439/555/89 +f 441/550/92 446/556/92 440/548/92 +f 436/557/88 442/552/88 440/548/88 +f 437/554/89 447/558/89 441/550/89 +f 436/557/88 446/559/88 444/560/88 +f 450/561/90 449/562/90 448/563/90 +f 454/564/90 453/565/90 452/566/90 +f 452/566/90 510/567/90 509/568/90 +f 456/569/92 459/570/92 457/571/92 +f 460/572/92 462/573/92 461/574/92 +f 513/575/92 514/576/92 461/574/92 +f 449/577/87 457/571/87 448/578/87 +f 448/579/96 459/570/96 450/580/96 +f 450/580/89 461/574/89 452/581/89 +f 455/582/98 460/572/98 453/565/98 +f 451/583/97 456/584/97 449/585/97 +f 454/586/82 463/587/82 455/588/82 +f 453/565/88 515/589/88 511/590/88 +f 452/581/99 462/591/99 454/592/99 +f 466/593/82 465/594/82 464/595/82 +f 470/596/87 468/597/87 469/598/87 +f 467/599/88 470/596/88 465/594/88 +f 466/600/89 469/598/89 468/597/89 +f 465/601/101 469/598/101 464/602/101 +f 475/603/97 472/604/97 473/605/97 +f 477/606/87 474/607/87 475/603/87 +f 479/608/89 476/609/89 477/606/89 +f 474/607/90 478/610/90 472/611/90 +f 475/603/92 479/612/92 477/606/92 +f 480/613/96 483/614/96 481/615/96 +f 482/616/87 485/617/87 483/614/87 +f 484/618/88 487/619/88 485/617/88 +f 486/620/90 482/616/90 480/621/90 +f 483/614/92 487/622/92 481/623/92 +f 489/624/87 491/625/87 488/626/87 +f 498/627/102 494/628/102 499/629/102 +f 500/630/92 494/631/92 496/632/92 +f 502/633/102 493/634/102 501/635/102 +f 495/636/92 503/637/92 497/638/92 +f 490/639/103 498/627/103 501/635/103 +f 503/640/87 504/641/87 500/642/87 +f 505/643/88 502/644/88 501/645/88 +f 498/646/92 505/643/92 501/647/92 +f 499/648/89 504/641/89 498/649/89 +f 496/632/88 494/631/88 492/650/88 +f 493/651/89 497/638/89 507/652/89 +f 508/653/88 458/654/88 451/583/88 +f 509/655/83 512/656/83 508/653/83 +f 510/657/88 513/658/88 509/655/88 +f 511/590/85 514/659/85 510/657/85 +f 290/374/92 263/660/92 266/358/92 +f 375/423/95 325/661/95 327/424/95 +f 266/358/82 269/362/82 305/359/82 +f 301/361/83 305/359/83 269/362/83 +f 262/364/84 266/358/84 304/360/84 +f 300/366/85 285/662/85 287/367/85 +f 306/369/86 286/372/86 284/370/86 +f 307/368/87 287/367/87 286/372/87 +f 271/373/87 291/663/87 290/374/87 +f 301/361/88 263/363/88 273/376/88 +f 263/363/88 291/664/88 271/665/88 +f 271/665/88 273/376/88 263/363/88 +f 285/662/88 300/366/88 279/377/88 +f 300/366/88 301/361/88 279/377/88 +f 275/666/88 277/667/88 279/377/88 +f 273/376/88 275/666/88 279/377/88 +f 302/365/89 303/668/89 278/378/89 +f 303/668/89 284/669/89 278/378/89 +f 278/378/89 276/670/89 274/379/89 +f 290/671/89 262/364/89 270/672/89 +f 262/364/89 302/365/89 272/380/89 +f 270/672/89 262/364/89 272/380/89 +f 302/365/89 278/378/89 272/380/89 +f 295/381/90 294/386/90 292/382/90 +f 298/384/89 296/673/89 292/385/89 +f 293/387/88 297/674/88 299/388/88 +f 299/388/87 298/384/87 294/386/87 +f 299/388/91 297/675/91 296/389/91 +f 359/390/92 357/483/92 333/391/92 +f 356/393/90 358/482/90 354/394/90 +f 364/396/90 365/413/90 317/397/90 +f 371/399/93 374/405/93 326/400/93 +f 379/402/92 377/432/92 329/403/92 +f 374/405/90 363/417/90 289/406/90 +f 369/407/87 371/676/87 323/408/87 +f 376/410/90 378/436/90 330/411/90 +f 365/413/87 367/430/87 319/414/87 +f 373/416/88 375/423/88 374/405/88 +f 363/417/90 360/484/90 282/418/90 +f 373/419/92 372/441/92 324/420/92 +f 288/422/92 362/485/92 375/423/92 +f 384/425/89 385/463/89 387/426/89 +f 389/427/89 391/468/89 392/457/89 +f 391/468/89 393/677/89 392/457/89 +f 389/427/89 392/457/89 384/425/89 +f 361/428/92 362/485/92 288/422/92 +f 367/430/94 369/678/94 321/431/94 +f 377/432/92 361/428/92 283/429/92 +f 364/396/88 372/441/88 369/407/88 +f 372/441/88 373/419/88 371/676/88 +f 371/676/88 369/407/88 372/441/88 +f 367/430/88 365/413/88 364/396/88 +f 282/418/90 360/484/90 376/410/90 +f 393/433/95 395/462/95 349/434/95 +f 378/436/90 356/393/90 332/437/90 +f 333/439/92 357/483/92 379/402/92 +f 372/441/82 364/396/82 316/442/82 +f 394/444/93 391/679/93 345/445/93 +f 337/447/90 383/680/90 394/444/90 +f 382/448/92 381/481/92 335/449/92 +f 389/451/94 387/426/94 341/452/94 +f 335/449/92 381/481/92 397/454/92 +f 338/456/82 384/425/82 392/457/82 +f 396/459/90 380/467/90 334/460/90 +f 395/462/92 382/448/92 336/450/92 +f 385/463/90 384/425/90 338/464/90 +f 397/454/92 399/478/92 353/466/92 +f 380/467/90 383/680/90 337/447/90 +f 391/468/87 389/427/87 343/469/87 +f 398/471/90 396/459/90 350/461/90 +f 387/426/87 385/463/87 339/473/87 +f 392/457/92 393/677/92 347/474/92 +f 354/476/90 358/482/90 398/471/90 +f 399/478/92 359/390/92 355/479/92 +f 394/444/84 383/680/84 382/448/84 +f 382/448/89 383/680/89 380/467/89 +f 381/481/96 380/467/96 396/459/96 +f 399/478/89 397/454/89 396/459/89 +f 398/471/86 358/482/86 359/390/86 +f 356/393/87 357/483/87 359/390/87 +f 356/393/85 378/436/85 379/402/85 +f 379/402/88 378/436/88 376/410/88 +f 360/484/97 361/428/97 377/432/97 +f 362/485/88 361/428/88 360/484/88 +f 363/417/83 374/405/83 375/423/83 +f 393/433/89 391/679/89 394/444/89 +f 322/486/84 344/681/84 400/487/84 +f 342/491/92 401/682/92 400/489/92 +f 401/682/92 407/503/92 400/489/92 +f 407/503/92 404/505/92 400/489/92 +f 400/487/92 344/681/92 320/492/92 +f 386/494/90 322/486/90 403/488/90 +f 318/496/92 390/502/92 401/497/92 +f 402/499/90 370/683/90 388/500/90 +f 390/502/83 370/683/83 402/499/83 +f 407/503/82 406/684/82 405/504/82 +f 400/487/89 404/505/89 405/504/89 +f 402/499/88 406/684/88 407/503/88 +f 368/508/90 403/685/90 402/506/90 +f 403/685/90 405/504/90 402/506/90 +f 405/504/90 406/684/90 402/506/90 +f 410/509/90 411/515/90 409/510/90 +f 414/512/90 415/686/90 413/513/90 +f 412/514/90 413/513/90 411/515/90 +f 416/516/92 418/522/92 419/517/92 +f 420/519/92 423/532/92 422/520/92 +f 418/522/92 420/519/92 421/521/92 +f 409/523/87 416/516/87 417/518/87 +f 408/525/96 417/687/96 419/517/96 +f 410/526/89 419/517/89 421/521/89 +f 415/528/98 423/688/98 420/519/98 +f 411/515/97 418/522/97 416/529/97 +f 414/531/82 422/520/82 423/532/82 +f 413/513/88 420/519/88 418/522/88 +f 412/527/99 421/521/99 422/534/99 +f 426/536/89 431/544/89 429/537/89 +f 425/539/98 432/546/98 434/540/98 +f 425/539/88 428/541/88 430/542/88 +f 427/543/87 430/542/87 431/544/87 +f 433/545/82 435/689/82 434/540/82 +f 429/537/99 435/690/99 433/547/99 +f 440/548/82 442/552/82 443/549/82 +f 439/551/100 443/549/100 442/552/100 +f 437/554/89 441/550/89 443/549/89 +f 441/550/92 447/691/92 446/556/92 +f 436/557/88 438/692/88 442/552/88 +f 437/554/89 445/693/89 447/558/89 +f 436/557/88 440/548/88 446/559/88 +f 450/561/90 451/583/90 449/562/90 +f 454/564/90 455/694/90 453/565/90 +f 451/583/90 450/561/90 509/568/90 +f 450/561/90 452/566/90 509/568/90 +f 452/566/90 453/565/90 510/567/90 +f 453/565/90 511/590/90 510/567/90 +f 508/653/90 451/583/90 509/568/90 +f 456/569/92 458/654/92 459/570/92 +f 460/572/92 463/587/92 462/573/92 +f 461/574/92 459/570/92 513/575/92 +f 459/570/92 458/654/92 513/575/92 +f 458/654/92 512/656/92 513/575/92 +f 514/576/92 515/589/92 460/572/92 +f 514/576/92 460/572/92 461/574/92 +f 449/577/87 456/569/87 457/571/87 +f 448/579/96 457/695/96 459/570/96 +f 450/580/89 459/570/89 461/574/89 +f 455/582/98 463/696/98 460/572/98 +f 451/583/97 458/654/97 456/584/97 +f 454/586/82 462/573/82 463/587/82 +f 453/565/88 460/572/88 515/589/88 +f 452/581/99 461/574/99 462/591/99 +f 466/593/82 467/599/82 465/594/82 +f 470/596/87 471/697/87 468/597/87 +f 467/599/88 471/697/88 470/596/88 +f 466/600/89 464/698/89 469/598/89 +f 465/601/101 470/596/101 469/598/101 +f 475/603/97 474/607/97 472/604/97 +f 477/606/87 476/609/87 474/607/87 +f 479/608/89 478/699/89 476/609/89 +f 474/607/90 476/609/90 478/610/90 +f 475/603/92 473/700/92 479/612/92 +f 480/613/96 482/616/96 483/614/96 +f 482/616/87 484/618/87 485/617/87 +f 484/618/88 486/701/88 487/619/88 +f 486/620/90 484/618/90 482/616/90 +f 483/614/92 485/617/92 487/622/92 +f 489/624/87 490/639/87 491/625/87 +f 498/627/102 492/702/102 494/628/102 +f 500/630/92 499/703/92 494/631/92 +f 502/633/102 495/704/102 493/634/102 +f 495/636/92 502/705/92 503/637/92 +f 493/634/103 491/625/103 501/635/103 +f 491/625/103 490/639/103 501/635/103 +f 490/639/103 492/702/103 498/627/103 +f 503/640/87 505/643/87 504/641/87 +f 505/643/88 503/640/88 502/644/88 +f 498/646/92 504/641/92 505/643/92 +f 499/648/89 500/642/89 504/641/89 +f 490/639/88 489/624/88 492/650/88 +f 489/624/88 506/706/88 492/650/88 +f 506/706/88 496/632/88 492/650/88 +f 488/626/89 491/625/89 493/651/89 +f 493/651/89 495/636/89 497/638/89 +f 507/652/89 488/626/89 493/651/89 +f 508/653/88 512/656/88 458/654/88 +f 509/655/83 513/658/83 512/656/83 +f 510/657/88 514/659/88 513/658/88 +f 511/590/85 515/589/85 514/659/85 +f 266/358/92 262/707/92 290/374/92 +f 290/374/92 291/663/92 263/660/92 +f 263/660/92 269/362/92 266/358/92 +f 375/423/95 373/416/95 325/661/95 +s 1 +f 309/708/104 300/366/105 308/709/105 +f 311/710/106 302/365/107 310/711/107 +f 313/712/108 304/360/109 305/359/108 +f 312/713/109 302/365/107 304/360/109 +f 309/708/104 305/359/108 301/361/104 +f 315/714/110 306/369/111 314/715/111 +f 314/715/111 303/371/106 311/716/106 +f 308/709/105 307/368/110 315/714/110 +f 261/717/112 308/709/113 265/718/113 +f 264/719/114 310/711/115 260/720/115 +f 267/721/116 313/712/117 268/722/117 +f 260/720/115 312/713/116 267/721/116 +f 268/722/117 309/708/112 261/717/112 +f 280/723/118 315/714/119 314/715/118 +f 264/724/114 314/715/118 311/716/114 +f 265/718/113 315/714/119 281/725/119 +f 309/708/104 301/361/104 300/366/105 +f 311/710/106 303/668/106 302/365/107 +f 313/712/108 312/713/109 304/360/109 +f 312/713/109 310/711/107 302/365/107 +f 309/708/104 313/712/108 305/359/108 +f 315/714/110 307/368/110 306/369/111 +f 314/715/111 306/369/111 303/371/106 +f 308/709/105 300/366/105 307/368/110 +f 261/717/112 309/708/112 308/709/113 +f 264/719/114 311/710/114 310/711/115 +f 267/721/116 312/713/116 313/712/117 +f 260/720/115 310/711/115 312/713/116 +f 268/722/117 313/712/117 309/708/112 +f 280/723/118 281/725/119 315/714/119 +f 264/724/114 280/723/118 314/715/118 +f 265/718/113 308/709/113 315/714/119 diff --git a/src/main/resources/assets/hbm/textures/models/trinkets/chip_gold.png b/src/main/resources/assets/hbm/textures/models/trinkets/chip_gold.png new file mode 100644 index 000000000..d70ec8952 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/trinkets/chip_gold.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/n_i_4_n_i.png b/src/main/resources/assets/hbm/textures/models/weapons/n_i_4_n_i.png new file mode 100644 index 000000000..0c2844eee Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/n_i_4_n_i.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/n_i_4_n_i_greyscale.png b/src/main/resources/assets/hbm/textures/models/weapons/n_i_4_n_i_greyscale.png new file mode 100644 index 000000000..5d544cf1e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/n_i_4_n_i_greyscale.png differ