From e3d8919df5ed4d33b9c742d6fe763097f9aa79c8 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 24 Nov 2024 15:44:40 +0100 Subject: [PATCH] bullets now determine projectile type, not the guns --- src/main/java/com/hbm/items/ModItems.java | 4 +- .../hbm/items/weapon/sedna/BulletConfig.java | 9 +++ .../com/hbm/items/weapon/sedna/Receiver.java | 1 - .../weapon/sedna/factory/GunFactory.java | 7 ++- .../hbm/items/weapon/sedna/factory/Lego.java | 53 ++++-------------- .../weapon/sedna/factory/Orchestras.java | 10 ++++ .../weapon/sedna/factory/XFactory12ga.java | 3 +- .../weapon/sedna/factory/XFactory44.java | 3 +- .../sedna/factory/XFactoryAccelerator.java | 6 +- .../weapon/sedna/factory/XFactoryEnergy.java | 16 +++--- .../weapon/sedna/factory/XFactoryFolly.java | 18 ++++-- src/main/resources/assets/hbm/sounds.json | 1 + .../assets/hbm/sounds/weapon/reload/screw.ogg | Bin 0 -> 10690 bytes .../assets/hbm/textures/items/ammo.png | Bin 16931 -> 17198 bytes ...n.png => ammo_secret.bmg50_equestrian.png} | Bin .../textures/items/ammo_secret.folly_sm.png | Bin 0 -> 400 bytes ...ian.png => ammo_secret.g12_equestrian.png} | Bin ...ian.png => ammo_secret.m44_equestrian.png} | Bin 18 files changed, 68 insertions(+), 63 deletions(-) create mode 100644 src/main/resources/assets/hbm/sounds/weapon/reload/screw.ogg rename src/main/resources/assets/hbm/textures/items/{ammo_standard.bmg50_equestrian.png => ammo_secret.bmg50_equestrian.png} (100%) create mode 100644 src/main/resources/assets/hbm/textures/items/ammo_secret.folly_sm.png rename src/main/resources/assets/hbm/textures/items/{ammo_standard.g12_equestrian.png => ammo_secret.g12_equestrian.png} (100%) rename src/main/resources/assets/hbm/textures/items/{ammo_standard.m44_equestrian.png => ammo_secret.m44_equestrian.png} (100%) diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 2a00269cb..0aa30001a 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1624,8 +1624,9 @@ public class ModItems { public static Item gun_hangman; public static Item gun_bolter; public static Item gun_folly; - + public static Item ammo_standard; + public static Item ammo_secret; public static Item crucible; @@ -6973,6 +6974,7 @@ public class ModItems { GameRegistry.registerItem(gun_folly, gun_folly.getUnlocalizedName()); GameRegistry.registerItem(ammo_standard, ammo_standard.getUnlocalizedName()); + GameRegistry.registerItem(ammo_secret, ammo_secret.getUnlocalizedName()); //Ammo GameRegistry.registerItem(gun_b92_ammo, gun_b92_ammo.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java index fadc8ee17..d280a085c 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java +++ b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java @@ -11,6 +11,7 @@ import com.hbm.interfaces.NotableComments; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret; import com.hbm.lib.ModDamageSource; import com.hbm.particle.SpentCasing; import com.hbm.util.BobMathUtil; @@ -42,6 +43,7 @@ public class BulletConfig implements Cloneable { public float wear = 1F; public int projectilesMin = 1; public int projectilesMax = 1; + public ProjectileType pType = ProjectileType.BULLET; public float damageMult = 1.0F; public float armorPiercingPercent = 0.0F; @@ -90,8 +92,10 @@ public class BulletConfig implements Cloneable { return this; } + public BulletConfig setBeam() { this.pType = ProjectileType.BEAM; return this; } public BulletConfig setItem(Item ammo) { this.ammo = new ComparableStack(ammo); return this; } public BulletConfig setItem(EnumAmmo ammo) { this.ammo = new ComparableStack(ModItems.ammo_standard, 1, ammo.ordinal()); return this; } + public BulletConfig setItem(EnumAmmoSecret ammo) { this.ammo = new ComparableStack(ModItems.ammo_secret, 1, ammo.ordinal()); return this; } public BulletConfig setReloadCount(int ammoReloadCount) { this.ammoReloadCount = ammoReloadCount; return this; } public BulletConfig setVel(float velocity) { this.velocity = velocity; return this; } public BulletConfig setSpread(float spread) { this.spread = spread; return this; } @@ -125,6 +129,11 @@ public class BulletConfig implements Cloneable { public BulletConfig setOnBeamImpact(BiConsumer lambda) { this.onImpactBeam = lambda; return this; } public BulletConfig setOnEntityHit(BiConsumer lambda) { this.onEntityHit = lambda; return this; } + public static enum ProjectileType { + BULLET, + BEAM + } + public DamageSource getDamage(Entity projectile, EntityLivingBase shooter, boolean bypass) { DamageSource dmg; diff --git a/src/main/java/com/hbm/items/weapon/sedna/Receiver.java b/src/main/java/com/hbm/items/weapon/sedna/Receiver.java index 65428c895..ee46d89ea 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/Receiver.java +++ b/src/main/java/com/hbm/items/weapon/sedna/Receiver.java @@ -138,6 +138,5 @@ public class Receiver { } public Receiver setupStandardFire() { return this.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE) .fire(Lego.LAMBDA_STANDARD_FIRE); } - public Receiver setupBeamFire() { return this.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE) .fire(Lego.LAMBDA_BEAM_FIRE); } public Receiver setupLockonFire() { return this.canFire(Lego.LAMBDA_LOCKON_CAN_FIRE) .fire(Lego.LAMBDA_STANDARD_FIRE); } } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java index 694aeea66..f75a882fd 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java @@ -28,6 +28,7 @@ public class GunFactory { /// AMMO ITEMS /// ModItems.ammo_debug = new Item().setUnlocalizedName("ammo_debug").setTextureName(RefStrings.MODID + ":ammo_45"); ModItems.ammo_standard = new ItemEnumMulti(EnumAmmo.class, true, true).setUnlocalizedName("ammo_standard").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_standard"); + ModItems.ammo_secret = new ItemEnumMulti(EnumAmmoSecret.class, true, true).setUnlocalizedName("ammo_secret").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_secret"); /// BULLLET CFGS /// ammo_debug = new BulletConfig().setItem(ModItems.ammo_debug).setSpread(0.01F).setRicochetAngle(45).setCasing(CASING44.clone().register("DEBUG0")); @@ -86,7 +87,11 @@ public class GunFactory { CAPACITOR, CAPACITOR_OVERCHARGE, CAPACITOR_BLACKLIGHTNING, TAU_URANIUM, COIL_TUNGSTEN, COIL_FERROURANIUM, - NUKE_STANDARD, NUKE_DEMO, NUKE_HIGH, NUKE_TOTS, NUKE_HIVE, + NUKE_STANDARD, NUKE_DEMO, NUKE_HIGH, NUKE_TOTS, NUKE_HIVE + } + + public static enum EnumAmmoSecret { + FOLLY_SM, M44_EQUESTRIAN, G12_EQUESTRIAN, BMG50_EQUESTRIAN } } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java index 5cabffb60..f76d707dd 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java @@ -13,6 +13,7 @@ import com.hbm.explosion.vanillant.standard.ExplosionEffectWeapon; import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; import com.hbm.interfaces.NotableComments; import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.BulletConfig.ProjectileType; import com.hbm.items.weapon.sedna.GunConfig; import com.hbm.items.weapon.sedna.ItemGunBaseNT; import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState; @@ -194,9 +195,6 @@ public class Lego { doStandardFire(stack, ctx, AnimType.CYCLE, true); ItemGunBaseNT.setIsLockedOn(stack, false); }; - public static BiConsumer LAMBDA_BEAM_FIRE = (stack, ctx) -> { - doBeamFire(stack, ctx, AnimType.CYCLE, true); - }; public static void doStandardFire(ItemStack stack, LambdaContext ctx, AnimType anim, boolean calcWear) { EntityLivingBase entity = ctx.entity; @@ -224,45 +222,16 @@ public class Lego { for(int i = 0; i < projectiles; i++) { float damage = calcDamage(ctx, stack, primary, calcWear, index); float spread = calcSpread(ctx, stack, primary, calcWear, index, aim); - EntityBulletBaseMK4 mk4 = new EntityBulletBaseMK4(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset); - if(ItemGunBaseNT.getIsLockedOn(stack)) mk4.lockonTarget = entity.worldObj.getEntityByID(ItemGunBaseNT.getLockonTarget(stack)); - if(i == 0 && config.blackPowder) BlackPowderHelper.composeEffect(entity.worldObj, mk4.posX, mk4.posY, mk4.posZ, mk4.motionX, mk4.motionY, mk4.motionZ, 10, 0.25F, 0.5F, 10, 0.25F); - entity.worldObj.spawnEntityInWorld(mk4); - } - - mag.useUpAmmo(stack, ctx.inventory, 1); - if(calcWear) ItemGunBaseNT.setWear(stack, index, Math.min(ItemGunBaseNT.getWear(stack, index) + config.wear, ctx.config.getDurability(stack))); - } - - //shittily copy pasted because god damn this sucks ass why do projectiles need this much fucking setup jesus christ have mercy - public static void doBeamFire(ItemStack stack, LambdaContext ctx, AnimType anim, boolean calcWear) { - EntityLivingBase entity = ctx.entity; - EntityPlayer player = ctx.getPlayer(); - int index = ctx.configIndex; - if(anim != null) ItemGunBaseNT.playAnimation(player, stack, anim, ctx.configIndex); - - float aim = ItemGunBaseNT.getIsAiming(stack) ? 0.25F : 1F; - Receiver primary = ctx.config.getReceivers(stack)[0]; - IMagazine mag = primary.getMagazine(stack); - BulletConfig config = (BulletConfig) mag.getType(stack, ctx.inventory); - - Vec3 offset = primary.getProjectileOffset(stack); - double forwardOffset = offset.xCoord; - double heightOffset = offset.yCoord; - double sideOffset = ItemGunBaseNT.getIsAiming(stack) ? 0 : offset.zCoord; - - /*forwardOffset = 0.75; - heightOffset = -0.0625 * 1.5; - sideOffset = -0.1875D;*/ - - int projectiles = config.projectilesMin; - if(config.projectilesMax > config.projectilesMin) projectiles += entity.getRNG().nextInt(config.projectilesMax - config.projectilesMin + 1); - - for(int i = 0; i < projectiles; i++) { - float damage = calcDamage(ctx, stack, primary, calcWear, index); - float spread = calcSpread(ctx, stack, primary, calcWear, index, aim); - EntityBulletBeamBase mk4 = new EntityBulletBeamBase(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset); - entity.worldObj.spawnEntityInWorld(mk4); + + if(config.pType == ProjectileType.BULLET) { + EntityBulletBaseMK4 mk4 = new EntityBulletBaseMK4(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset); + if(ItemGunBaseNT.getIsLockedOn(stack)) mk4.lockonTarget = entity.worldObj.getEntityByID(ItemGunBaseNT.getLockonTarget(stack)); + if(i == 0 && config.blackPowder) BlackPowderHelper.composeEffect(entity.worldObj, mk4.posX, mk4.posY, mk4.posZ, mk4.motionX, mk4.motionY, mk4.motionZ, 10, 0.25F, 0.5F, 10, 0.25F); + entity.worldObj.spawnEntityInWorld(mk4); + } else if(config.pType == ProjectileType.BEAM) { + EntityBulletBeamBase mk4 = new EntityBulletBeamBase(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset); + entity.worldObj.spawnEntityInWorld(mk4); + } } mag.useUpAmmo(stack, ctx.inventory, 1); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java index 4f0230091..9eaa6c60a 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java @@ -1157,5 +1157,15 @@ public class Orchestras { AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); boolean aiming = ItemGunBaseNT.getIsAiming(stack); + + if(type == AnimType.CYCLE_DRY) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 0.75F); + } + + if(type == AnimType.RELOAD) { + if(timer == 20) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.screw", 1F, 1F); + if(timer == 80) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.insertRocket", 1F, 1F); + if(timer == 120) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.screw", 1F, 1F); + } }; } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java index 680fc7ed7..0a1d142df 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java @@ -14,6 +14,7 @@ import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState; import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret; import com.hbm.items.weapon.sedna.mags.MagazineFullReload; import com.hbm.items.weapon.sedna.mags.MagazineSingleReload; import com.hbm.main.MainRegistry; @@ -60,7 +61,7 @@ public class XFactory12ga { g12_explosive = new BulletConfig().setItem(EnumAmmo.G12_EXPLOSIVE).setOnImpact(LAMBDA_STANDARD_EXPLODE).setSpread(0F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xDA4127, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_EXPLOSIVE")); g12_phosphorus = new BulletConfig().setItem(EnumAmmo.G12_PHOSPHORUS).setProjectiles(8).setSpread(0.015F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x910001, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_PHOSPHORUS")); g12_anthrax = new BulletConfig().setItem(EnumAmmo.G12_ANTHRAX).setProjectiles(8).setSpread(0.015F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x749300, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_ANTHRAX")); - g12_equestrian = new BulletConfig().setItem(EnumAmmo.G12_EQUESTRIAN).setDamage(0F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_EQUESTRIAN, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12gaEquestrian")); + g12_equestrian = new BulletConfig().setItem(EnumAmmoSecret.G12_EQUESTRIAN).setDamage(0F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_EQUESTRIAN, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12gaEquestrian")); BulletConfig[] all = new BulletConfig[] {g12_bp, g12_bp_magnum, g12_bp_slug, g12, g12_slug, g12_flechette, g12_magnum, g12_explosive, g12_phosphorus, g12_anthrax}; diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory44.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory44.java index 48ad36d65..6620e5fa4 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory44.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory44.java @@ -13,6 +13,7 @@ import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState; import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret; import com.hbm.items.weapon.sedna.mags.MagazineFullReload; import com.hbm.items.weapon.sedna.mags.MagazineSingleReload; import com.hbm.lib.RefStrings; @@ -52,7 +53,7 @@ public class XFactory44 { .setCasing(casing44.clone().setColor(SpentCasing.COLOR_CASE_44).register("m44ap")); m44_express = new BulletConfig().setItem(EnumAmmo.M44_EXPRESS).setDoesPenetrate(true).setDamage(1.5F).setArmorPiercing(0.1F).setWear(1.5F) .setCasing(casing44.clone().register("m44express")); - m44_equestrian = new BulletConfig().setItem(EnumAmmo.M44_EQUESTRIAN).setDamage(0F) + m44_equestrian = new BulletConfig().setItem(EnumAmmoSecret.M44_EQUESTRIAN).setDamage(0F) .setCasing(casing44.clone().setColor(SpentCasing.COLOR_CASE_EQUESTRIAN).register("m44equestrian")); ModItems.gun_henry = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryAccelerator.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryAccelerator.java index 34653bd18..616d8f651 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 @@ -79,9 +79,9 @@ public class XFactoryAccelerator { public static void init() { - tau_uranium = new BulletConfig().setItem(EnumAmmo.TAU_URANIUM).setLife(5).setRenderRotations(false).setDoesPenetrate(true).setDamageFalloutByPen(false) + tau_uranium = new BulletConfig().setItem(EnumAmmo.TAU_URANIUM).setBeam().setLife(5).setRenderRotations(false).setDoesPenetrate(true).setDamageFalloutByPen(false) .setOnBeamImpact(BulletConfig.LAMBDA_BEAM_HIT); - tau_uranium_charge = new BulletConfig().setItem(EnumAmmo.TAU_URANIUM).setLife(5).setRenderRotations(false).setDoesPenetrate(true).setDamageFalloutByPen(false).setSpectral(true) + tau_uranium_charge = new BulletConfig().setItem(EnumAmmo.TAU_URANIUM).setBeam().setLife(5).setRenderRotations(false).setDoesPenetrate(true).setDamageFalloutByPen(false).setSpectral(true) .setOnBeamImpact(BulletConfig.LAMBDA_BEAM_HIT); coil_tungsten = new BulletConfig().setItem(EnumAmmo.COIL_TUNGSTEN).setVel(7.5F).setLife(50).setDoesPenetrate(true).setDamageFalloutByPen(false).setSpectral(true) @@ -97,7 +97,7 @@ public class XFactoryAccelerator { .dmg(10F).delay(4).auto(true).spread(0F) .mag(new MagazineBelt().addConfigs(tau_uranium)) .offset(1, -0.0625 * 2.5, -0.25D) - .setupBeamFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) + .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) .pp(Lego.LAMBDA_STANDARD_CLICK_PRIMARY) .rp(LAMBDA_TAU_PRIMARY_RELEASE) .ps(LAMBDA_TAU_SECONDARY_PRESS) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java index 3b2104f0d..b0d2f3018 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java @@ -88,16 +88,16 @@ public class XFactoryEnergy { public static void init() { - energy_tesla = new BulletConfig().setItem(EnumAmmo.CAPACITOR).setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true) + energy_tesla = new BulletConfig().setItem(EnumAmmo.CAPACITOR).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true) .setOnBeamImpact(LAMBDA_LIGHTNING_HIT); - energy_tesla_overcharge = new BulletConfig().setItem(EnumAmmo.CAPACITOR_OVERCHARGE).setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true) + energy_tesla_overcharge = new BulletConfig().setItem(EnumAmmo.CAPACITOR_OVERCHARGE).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true) .setDamage(1.5F).setOnBeamImpact(LAMBDA_LIGHTNING_HIT); - energy_tesla_blacklightning = new BulletConfig().setItem(EnumAmmo.CAPACITOR_BLACKLIGHTNING).setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true) + energy_tesla_blacklightning = new BulletConfig().setItem(EnumAmmo.CAPACITOR_BLACKLIGHTNING).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true) .setDamage(5F).setOnBeamImpact(LAMBDA_LIGHTNING_HIT); - energy_las = new BulletConfig().setItem(EnumAmmo.CAPACITOR).setSpread(0.0F).setLife(5).setRenderRotations(false).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); - energy_las_overcharge = new BulletConfig().setItem(EnumAmmo.CAPACITOR_OVERCHARGE).setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); - energy_las_blacklightning = new BulletConfig().setItem(EnumAmmo.CAPACITOR_BLACKLIGHTNING).setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); + energy_las = new BulletConfig().setItem(EnumAmmo.CAPACITOR).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); + energy_las_overcharge = new BulletConfig().setItem(EnumAmmo.CAPACITOR_OVERCHARGE).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); + energy_las_blacklightning = new BulletConfig().setItem(EnumAmmo.CAPACITOR_BLACKLIGHTNING).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); ModItems.gun_tesla_cannon = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(2_000).draw(10).inspect(33).reloadSequential(true).crosshair(Crosshair.CIRCLE) @@ -105,7 +105,7 @@ public class XFactoryEnergy { .dmg(15F).delay(20).reload(44).jam(19).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineBelt().addConfigs(energy_tesla, energy_tesla_overcharge, energy_tesla_blacklightning)) .offset(0.75, 0, -0.375) - .setupBeamFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) + .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) .setupStandardConfiguration() .anim(LAMBDA_TESLA_ANIMS).orchestra(Orchestras.ORCHESTRA_TESLA) ).setUnlocalizedName("gun_tesla_cannon"); @@ -116,7 +116,7 @@ public class XFactoryEnergy { .dmg(15F).delay(8).reload(44).jam(36).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 24).addConfigs(energy_las, energy_las_overcharge, energy_las_blacklightning)) .offset(0.75, -0.0625 * 1.5, -0.1875) - .setupBeamFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) + .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) .setupStandardConfiguration() .anim(LAMBDA_LASRIFLE).orchestra(Orchestras.ORCHESTRA_LASRIFLE) ).setUnlocalizedName("gun_lasrifle"); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java index 6c7c039fd..e10b32e50 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java @@ -12,7 +12,7 @@ import com.hbm.items.weapon.sedna.Receiver; import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState; import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; -import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret; import com.hbm.items.weapon.sedna.mags.MagazineSingleReload; import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationSequence; @@ -27,15 +27,15 @@ public class XFactoryFolly { public static void init() { - folly_sm = new BulletConfig().setItem(EnumAmmo.G26_FLARE).setLife(100).setVel(2F).setGrav(0.015D).setRenderRotations(false); + folly_sm = new BulletConfig().setItem(EnumAmmoSecret.FOLLY_SM).setBeam().setLife(100).setVel(2F).setGrav(0.015D).setRenderRotations(false); ModItems.gun_folly = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(100).draw(40).crosshair(Crosshair.NONE) .rec(new Receiver(0) - .dmg(15F).delay(26).dry(5).reload(160).jam(0).sound("hbm:weapon.fire.loudestNoiseOnEarth", 100.0F, 1.0F) + .dmg(15F).delay(26).dry(10).reload(160).jam(0).sound("hbm:weapon.fire.loudestNoiseOnEarth", 100.0F, 1.0F) .mag(new MagazineSingleReload(0, 1).addConfigs(folly_sm)) .offset(0.75, -0.0625, -0.1875D) - .setupBeamFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) + .canFire(LAMBDA_CAN_FIRE).fire(Lego.LAMBDA_STANDARD_FIRE).recoil(Lego.LAMBDA_STANDARD_RECOIL)) .setupStandardConfiguration().pt(LAMBDA_TOGGLE_AIM) .anim(LAMBDA_FOLLY_ANIMS).orchestra(Orchestras.ORCHESTRA_FOLLY) ).setUnlocalizedName("gun_folly"); @@ -43,9 +43,17 @@ public class XFactoryFolly { public static BiConsumer LAMBDA_TOGGLE_AIM = (stack, ctx) -> { if(ItemGunBaseNT.getState(stack, ctx.configIndex) == GunState.IDLE) { - ItemGunBaseNT.setIsAiming(stack, !ItemGunBaseNT.getIsAiming(stack)); + boolean wasAiming = ItemGunBaseNT.getIsAiming(stack); + ItemGunBaseNT.setIsAiming(stack, !wasAiming); + if(!wasAiming) ItemGunBaseNT.playAnimation(ctx.getPlayer(), stack, AnimType.SPINUP, ctx.configIndex); } }; + + public static BiFunction LAMBDA_CAN_FIRE = (stack, ctx) -> { + if(ItemGunBaseNT.getLastAnim(stack, ctx.configIndex) != AnimType.SPINUP) return false; + if(ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex) < 100) return false; + return ItemGunBaseNT.getIsAiming(stack) && ctx.config.getReceivers(stack)[0].getMagazine(stack).getAmount(stack, ctx.inventory) > 0; + }; @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_FOLLY_ANIMS = (stack, type) -> { switch(type) { diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index 6db942cc1..3090f9d63 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -263,6 +263,7 @@ "weapon.reload.tubeFwoomp": {"category": "player", "sounds": ["weapon/reload/tubeFwoomp"]}, "weapon.reload.impact": {"category": "player", "sounds": ["weapon/reload/impact1", "weapon/reload/impact2", "weapon/reload/impact3"]}, "weapon.reload.fatmanFull": {"category": "player", "sounds": ["weapon/reload/fatmanFull"]}, + "weapon.reload.screw": {"category": "player", "sounds": ["weapon/reload/screw"]}, "weapon.foley.gunWhack": {"category": "player", "sounds": ["weapon/foley/gunWhack", "weapon/foley/gunWhack2"]}, diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/screw.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/screw.ogg new file mode 100644 index 0000000000000000000000000000000000000000..e6dd7e05c4d49623b05dd6bc00426ab1bd75be2e GIT binary patch literal 10690 zcmb_?cQ{;M*Y-g~34$OKL`FA47@ZJi^b&~?!jQrcUG$nLAqb<7644o=M;X1ODbb^h zAPAyG2_b3{?-_Z1&-1+BAK&%;@ty0;nYH)5_u6~iYwfl7oNI2_*cbxjz`rgRmA}F{ zjv75OE;6r&ZkBfLq$)BVnqTIi%`r%7hg9!8(R;kkSYwSYU^g_4pnut zu(P>p_|Vx71J!uw>1^fZ3pFHtgC#c`YpBc>aWcxkQ{+Rc8j}Gk002QU3R9M0VidYq zxv>{=vyt7f&Wp%F?mRx#2!#&mP6$S`!738@A$Ty(2q1OH=e&K>O02df#!Aa&k@IgIRLY7Khy#G^ z9HGcLAqGbFDq5fm02ozVSv2EWbSpV~KJw91)08V<6ymHcA3jl5!u(Z3dP@VJxeMNm=C^Anj=Br5p-ZYacG^~^y2m*jp zU^_a^N|x(ed;>oe2e$vu`|q$&005o{SwSfNaRD_q`vuhu6tg)k8b z1@@F5Gh|qbpyqz`U1@LH|NCDTFam%Di(Eu-Cm%I;s3nV_nri_Rlot3*x_y`VsHZ|0 zk@e~RJq=)w6DmL(UqeF~kzgC}0n5jsv|t6PmXWYdPWN7TCp3gkVmUieU*SW3g1$mG zUtSE#0Y+dk)T>-z!;}$->FyN>7zPXPfc)pddqM+fFyrY9R&n42Ls?Fgx`FyQ|C$AY zq_xJWj^fjFohZJJ+o^)Icj|;*?NlL zbccB7&Y0)_zE4aKIt2v9d<9ttZ>^YoE!q?3#E}7vKv14sj~IT_1OdBb8{gzY z-?W#{xK5gYjsaN%ub|u$xAB=K7uaPMlAK*!99d9QTx_3KVE2E&$#b|%0DuMnE_S+d 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/ammo.png b/src/main/resources/assets/hbm/textures/items/ammo.png index 815edf6312723c870e0c2a64198bc0c0147dec22..5dfb80710231a4f54f48ddd2a1df3d17002e3258 100644 GIT binary patch literal 17198 zcmXwh1y~f{|Me{0DIpzFA|;(mi-LlHbb}y`h&1d{(h@2tT}qdLbV(}R(%re_0?YCr zzQ6b7VV_}UckkS}_kQY}bBWY?@r0OwjsO4v;-_lL+TgJb03ZM!4*1u)k`FF;zYyAP5mJE{g7+*ZHg)X-2m7o;nDGLI zvCHedW<6WdUH0wGgPHf%t^2?Bzt^M&{;c`c=rr5CY2~~hXro?BsPsM6>M2GxDjtIW z74k$&UghNG#@d^CVYC0+w-Y(c{+P7QRUuLdyTOyDp|lg<7Fhb!?iqDfM>z|<{MPMn ze!LE%gjz7XAIVc(Fzo_vylN0p?1nFV{uvLuWiJ~aYSSCP`GEs1NG&CrQQ{w#Q z6-^LsiDA`;y!`wQC$SEz%BBEJ!to(djLqo%e$jFx*7!a+pLI^hI$Sso>!7@Ml#O0=(u!rJ#29i!3pz6>Izx0MK`kp!_|Wa5MV@Q2}=|`kSd;AU9DSkSxC0k0-j(39~mTrKXGX$lFA|F zn_#oGt~8S+hU|K(N<9>sY6-6d3&J4l*$1~sgoZWdOj*O(#G&yetgd| zaNry>s+&1AJ<1>-ZaJ+LR4~oD<^d&i>8(4s007Lr(Q#^O@c(x z>`y)d@I34+DbTQ3mbRaLdLHKw)W322yZ!*mOrjQ&P%&w$kCcNyt*UfP|K`8O1fPdYB89(r z!;g2-s**)OfK;#e)jcegmoLfT%LnAn90nfxdrx#X+=&d*yBWXKo1n_hN~cVWJ`9IG zFa_M`Zf9y7yZ8x#r!?GBQbwrOvN95|UtL{YTL%Z-ospDOLx0#YMxxS1?HH}z@xrTi zsT_4C0rpL0jO)FlPUeL}2Y+|WAE@eJ2bz{dL|^PbO7rKJdc{=K(b$@Dmk%5q9XUj0 zmmE;;5Ta_4>_#gn6Aa1PG?fxMS!<@Vhx2lEN+_nGLCXKA9oHL$=&5`&!luHiwYu2s zSNjH~^q~x|hAm!q6&#gLUm-L&PX&u!_cISGR?!_~MfyZEzmK=YmK^*)a<+|l7*d)4 zLGE5i-ZDoX57?6ZQqS#1ZhJ!ppJFKz`)7T}KdhN)rn}wNM3Vp#uqNBNi(6b=+>w!y zARe6`ZB~^Q7YFnFiolZgiQnTu0#P=+Z?~w|*>pYlq9Q<4w`S}|Iuh9+icDEtUOIvr z|4Ag{bJ{P*eALkvVyTg%Sv0g_fu8Y1wpVrgXUSo8J!0gpm=+^j#xHh03@wF_%8}`n z8gbC^@P>*ncq=hb7L;DDA8}$Jlsz5_t(Vmo+#X4=Z7Q#vFm{+SOuqTdvWe;D=;460 zHkG4-7GmGAm}{UGV{w9s1=pTy_c_zTBe;i_cTc6xuWD%E*pRUet9<7tr<(rq4!y?* zG2-Y9Sw9mJK5p)KO~;0Ht_KeQU?yD7W%&d2ZDp1JCZTv>pufKi0Qc|&f89=AvCAV% z5ErMX5jZ6uZndqlJCV%(M+$2j8*HMY6W5YE*b0@{Zlzt94u|I}8gsP*IzNYgW-Ag? z!QJ`Fex2jM_00oboi1i`b8~B%2CAzQ>J6ph8tW(5m5;bww8iKAuxP2GkZ3fUyV#`K zfx#Rdd0k9u=u9=fnLdv#x@^bUS(qCe3&Caf*YXI`(uwx+@KB3^ii%Q+r9St_JohB2 zHDx)OeUCgTeG&fnq)ej>S53&k%V;H|KSb8=oJCfa5kBT^7^hK_#iqSO;uBI@Oh|)+ zQ|H4rSaz{};WfQ40b33}KMujWbIk_kfj|-Q*L7{ymj#mH#tl@b^l0C|e`gw6 z)&rzGkeIm~!CPBzy54PJ43oQAs901Q$k0_V94O0U?yYYQV`sr<#ZBA7f*{prXOWqy zuJ;>{T^DZU2F>f>Ev_@2q&_und;Bbbyvp#%$npsMOB*}JL}X<*ea2SlxJ;}h1^2ZA z4(Rl{_M3$GWCgWASKrIH{KmhcHb^K|Sc{IfYSWDu@JWiO{Lp2EIJB7TvDYwvX>7bZ zCUP)=!9fnVeLL0-<{}?{r=jJ}l@5BK!|huY!^iqSpF~`2d72ljN`qm vvg>oUIt6Yx1$ZhdDyKb# z8^q0goTpvi9`(PR@Y#UE482{=!`8ap7efL>Q!c@tR2V!u#`T-Hf)qlW@n>dc>T-Xt z@j})D? zn(xN{5+|K0z4IcvmTgRTpE7xhA!)Og}rKE{4- zM@sNUQZ#c}O2_@9B06b{6h`(8 zSBoV!ZQCCCf7n5E=U^J6JQ%5bCKeu@eV5?!cnwftFMA9z2cl1}9T;fl&!FNNJ^=Tof?zhze=Iew#Q^B&=5T}Ev zSy`J=Nsz+(G~xBy1Tp2&S{X0@HMCqdY==GecW&Gx_DO2HwDv{5QM}40%!aCFH)t%G zOQ_tDfM(mL;cnct?$*FdQRDzF=GH!={LnN+=4~w;H5Kuu=@Fd(an9`?Kxc&Y=OQGT zKX-HQ=)8+C`N8bXCT^FroqHAL13nmj4v;)oz3BHW<+X{uQA;D@@zL^IE%toFHesVLF=eAday8tey|Ij|+R4A>^yq^)UqoI@I$ccu4M z)8=4wDJIp>_2zY0S2Jc_%X$k;;VS1T04FhyTbtvHWi;@AM*&IWlYiIe)<#aH z0Os&QLhtEj)OR~O-z@t5WqFa`=*Lx4LaXR=@H&_@F60*{uGb`swRK7zQ|PE}Qy(py zuC?@*fT^x>w2)g96aRhzqPDiyI$+I(KhWwVIR_!Vck{I|FRao3l3urJdQUFTJygDt zp}85ez;*x0kfGhcH@{h*%A`hb%i%6TVVAd_k{l=!=1aTF%SSjk{5iKM7Bk*`m3Qhi zVCQL|3FK3`;Im%g^8fx!E#OX**JV8xf-rDf)p*b!bL?GC4PH<%lA*9wwY;jPH^C_` zK`g>(f8T_&Rye)@$}ml?pr*XRbgjAg5_MHLV1=UgM~vmQ3f>x~^;5!%3xh@g{xy;E zs4e!(VAq2mC~BVGg!A;dtehN0Kz?*|v_j5ZT)eg5EDc`!SMA&hbA#W0dBeC=FFPv> z{&m1ssQk9c=VWUtca*}Zo;A4ol*GbqczR8|S|Zwecu-KZAnk8*A&z^_ z`y~2-`Ee*$>?OK0f5{>Tqp-tH4JzWb)Q`d#OZWQP;8m}^i}z%%hDfDgx1S61zUyDp z0&l2k__DLQHETCPw^gvP!IJQfEde7uPc=V_4;L6g9zuzhW#Qwb?_>XQ{Ny%ikoSwL zAsp&=t;;)Gx8x+;quQ z6|la9&7-R38~7y1ihVpg$pZ;}6- z3h?yYEyds)$p^z#{lCM@lQe37@a%Q87Yvk|_(XSHTN3deQ4@YJ!dY?o@`O*~ROJ&H zl}|_?%V{eq&~}8Gi=#L)yta3UOx2Y1=-#YpB_2X@Kaa%F4wC2rD34SenVXr9jUQMk zqzJF~iB3s`XP#s-w|v-fW)1b!X}S0enczwr%RU~zI1YN$Xu!75#7du-0_B*^s*@_{ z@dhUGcD*Lsns_Obh^dOErq9GPsT9DXhk$@UOG|6XGg8NVcwd4`S!G_H&M0W%UD+b3 zSzYL=bADJoPvu%#KN$z=1@omo+$?M=bpa`BhkJBWP3T?uPcrP8o&ObXnkl0f1|ooH z2`fE6S-^cuVmY1`WrFefWlXWwSh_Yp9I@5!LgIq=E z@J&5@L}JW8f_F-s{<3z4z{Bi@I`k0GtM1&nb6se0(l1Gha})B3y0Rd8 zayD9LmRz3cepE6S!4GfI@_Hd9kF$kAGkBY>la$P1N`F~GoIdHXY2QB+p&e+%k)Z?V zs?eb-%L!V_k1o#Q*v$WIJt;2zP^G@lkWOmPeT0A5AAT2n7zgzYp8sHvdCKXH9#rgYH`VRxo&GWShx0 zYh&Y?0W8qVBG#N_vf|6=9}rg|Q;Z1LJvrvJ4intDh>L1-60;u3Q2~pCE@Rhb>^2@C zW%$`2WYF?^4A9#Y#79L(cTHIR{rflTv$o1T_yNJbw1E;X9NSBDwMv$!jxV1nbN^}k z=L+?${l>|#i!JuPh;6`edi^+-%fc^Cy>cbfjGVo__j>gwo7sS^L?OBje%fZ!hGU(9CtQpk5Qxnk9Il#gUxJ^XZ)2xg{H1ePyvKV5-4j zIEkK3jno9OgL8375Q9Gk0Vb39pOzk!d3sH;^|BmZRnStc=4Z`Q5lkY3EZOsmdn!bw zu$?7=h;GeK_9JC4Jv>Cfi2;W|IioMtqMl~soo4dtW_f|QBJ9MpNgj6fnCWWbhY%$M zyYwbsFjy-zRc@qmCh*Z$ujVQD4{Qr{<(ifQBJ~K~NXzliw!w36Ovko+Amn4^oSB+R z7~K_|m`DLWWVGW)9)xZerp$$hq@YS8^w!|yi*mf|-}&r_2t3q=COH5Xb({n%Hj1Xx z{N=-`62p+h#Kdgt@C%v@S$3Hs3#UfjvX0d)T(@*}!#xSOr|k6Mdazby=V$F(b9+DC znA;#+CbC=eMo&J*Q;Hda;h9Vl_&Qkmkr`uxofse2eJj{c2c5Oj+Cl*ASj7`j5v+Y> z<>gN_HRI}hS?4$TNA~Gq+%%tY+8cRIVl%PRv5N`{$o_qPd_dHalY{Z?+qb=6i;K@I zPL4sG4Gb!iWv0C6Q`2ZDkQ}skzCX*M$ivI4q^FmZw=wkhucD#hH}6MbQ}k^OY$sQ% zxEPu5!i1rf(uNbF{5{-9`3B5K@l7#())YfG{AF=qfW$6C&K*a%JWA zZGDS4T8m$o+5X+>E}y15Kxsk~1?i1rYcD4h?bb$<@C(1>5QT^N9=d*K2$nqKTQ% z{h3}n=dJ1=jc1U5WyI2gNncolm`JluFh7`Uv#s+E%zXa*xgZKRp44;xOL-6G77D)R zX9Q@*;SOI)!9tN&j|-*Bq`V1&6KWsv4-gSYjZlzb65)2e!H_hI9h#ybuQ|)%a?Fm!>l@ z{Bfd4DKQ`s>owo-K4l6gOF_tJ5(h}rNe3r9(2!o9B&40ihugC;eb=HzF6Doy>=eg3S?-kWb)~)dP`f*uokE(CoKX#b6d%-5dhQw(b0}67x`+%3c81+gF z0E48vGAdKl=6f%H5)AamG^@Dql9ETj(H_y}Pz~hYSGa}IfA^E`w-r9PIn=F2IZ%Km z>bCb!C`S*AkY?e@*(=jF3yQCVM6l7g0?XF?De|L%Jej+^&8oFIV z2Gh_XeS_vq&?isjfyYGnL7G^yvKYR;Sjx&|FY#p9w&<=jdMe1qBbL6|Wk3W?)cf+~ zt*xv~Bo2@nP1ftB!BeMOM#^p7SZ~N7^psgDSWX&ns4{qStyiK>D3WkYDEgYhU!zLi zCum?Ytl1BGci7t6u9$8(l1>X9A&iqEQyuV>o8*@Gr2eX(2Q&?YFX<$MGug9v4GM}D zstZPG>frLj05V(e%~p{$$Io4Rez@`m3Xp#43;(OphqAJ!b6hZc6~@)^Bhgymp1Y=o z8T+ZY`2oJvBpVX3n7niWm4J75tM+He()WC1?5K(a@vqj7rzKU8^z?K9{^N&gNt2ug zmA=VCJd*L`nUSA45q(r?RPB}4thC-&hWv88!CpWf6_rnHf3E3$P1QlnOe25*M*mhY z`oFe&d)4mRj*X4QBPQ-@gC94TJ~Ie6w5rXos-m1SXa0aj%T4${42Ej_4SCtY#;S`2 zYqXE#l%rDcGFyn?*Z%Dr^)sHZcas|adr_4khOJ_D|97QzPj4_b;qbqI5$0mh;O8Ud z?Jl*L4{<^UgUa6F6o3u;*%4V7j!}t->$e-H)r)d1$5T7Ohc`W-`0O2BRMpAer|lthO($HL_?ZuUL2;o|&OCCJOmOXWY1 zLB=)A*GzKj1Zu3xr8MR~{137t22UrIYiP1sFI972YVRH$uj6sHXk(LU_;d7LHeoD9 z;R2|`G3G5HND$Esvk$K?nGdVF4 zwzucB@)Ao55FE?8^BK+;kI0%82Jpk{P=ADlh5t;J8mqVt`|->442aVbS^0V>9Z#9~ z=Z>hI?@hD&h8R7f<|jw`-n1-0%`3pf$o*p8i(N*B0T`a0jV>$Wum1JR*9G5$JO7C| z7sJYn=Opr0GDaY{>$qIiUCtre@L!)!uuV-(w{~`ZpKgz-u!3J%>7p@z0KNR9iD8D- zg46XTOc^*`M*QH+&+5(%%lwDpkg}$*R6`rRy96`4AF3DYSCGZSOaTe67Y$7)8gu`k zS=UxZ^`uAmbmYU_{E`N^zrei2!^5MFK?#pl2H#V^%tZ2(Ed~-WODEa~k1QO6^R#v? zWiyP!yiH!cJ8+c?n6?t3vlO8da$S)5oRm~_KyrC~70{le65Tsj{|*A!4W_m4*Dij< zW%33pD=Q`Zk%A-)5^#BH1xriT><`baG1jtLaU8&25DS}$Y!KU{`i!hq!5&BNCbY~VfvGn4JF)>7d zyopH~Qry4@Lq6qqJQ~MB;-SU@1~5vkOnfh7g$HFyiDRYCVl&P{x%2z_GqR`bMz()L z`_=k&aJsY?0idR;`r#{;xu&rwplMun(k=AXHggYt)tLpJW_w}~)Psy=fOKVh0hn!UMt9SQFv7Wgu7^6Qsa zb#3ixTM(wfPaAwOmpO@|DZ$Y@fP2eMgOGm+`*On>lV=E<)$TF=VaLf`L6_LnBm>Un zQ?T}ZX^na$)^TwhuzVeSH$E#XR^Y^F$laXk9Ir$RByMcjQaE)(eV2NNG@04vdr}t{ zGyV0j+P!a{Y4zo^c_X@L{^Vx{KBR-Ol#(t9$W2`V>lJ>csq8_8oBv-6z^irHa+P}x zE*6NiAU_XJ_Nj4w^Ia5t!*#AM;qH;}CU=>MTbM`%KO(C)NdG%gCN7aK zf7p9mRdvv5gxu541Pw*Hn!4pb8(IA@$XtI05wqp^1cr5Z_Pwbl^q!=oqzxF_*~}en zw`g2r*nqlK2pC^^9zE&=*BD+KGwIUq*|qPjM+}3(khZHpFIL+`^86$Wn{>{g@alE! zTyjfuGvhA1*E__t0TABI{4Tk=V583(vh}1C&%Zg){4n!lf)co-Et{X&CrNlIegz~b zSLAM|tP{hNK}0win`SN>gtNSt!)P9Kcl5QQho4ZaZZ3l$7AqIm6DyQ$mErs3-l^S- zGxRpCVTB`R-j5%@ox~br#p5+XX0FPYt|@PWs!iy|RL9il=hpFwq7Gm{v_4E=|qN#&=GMQ=5x9#r8NpKQvUcYYtAI~qAN?cf280AP1 zQAT!$Q!Qp9N%L&zm1{%H_svTiIE%sjS5Mk(qF=y47Q{Zp?Ki4;f9uqShew&eoTvED zjkO{OcKUAng@;%`jvu^15%gKj6_^Zny;=@hwxIKJ8Kp31sXrV5Yl?TW%CM957HH

1)slUSIVH7qli0*y`N84F^kvNIaSL_2(6HUoPtN`+|68OuzM{9Ig=Dj3w6}&-y*Q zUEg%9GtD+^xg6teEi37&-QLtee7UM7Ck_kkB6A4V#k1B*m}pG5k&T_*YJT6M%1yX` zG_Kh`Z6Oiq!BXL?kyS|3XXX+FAf-x%KHr>Lg?PMC03{3wFq1d}3YfPnQyZ1kqA+YA zMN}D`aB}7i7kapui2zoq92B|Eyn%FR+5d|={y|QF&yM%cx{$tD@h~#?aJZa}@lm#N9SJthAG)Ugz7{IbX-MfPZwY4*YKtQl;Y4~7ANsQhYn z%!9nn`^XR};NQMyiE%9n=ch<$feju`2xObks>>T-GAPvpMI!D#@Etsv-T=RT+p0C^ z@>-(Nk`a*NA6=(?WAA<~3ut8RNY43^yiJ&5=NQadaQ$vZ#(mqHz>Y^s8ve&-WrIr$ z7I`+6))q4zsb)@AT!;cAByFs!9J!$X^WjVOZh=RS9=O-8gG($j{9(Y*G1yV%oFx8a zTAu=;r!ucnI zG8b7&yfP@98NTY7GV!Ls%q~QMdIpeVq&s6~!UZN0o})L$bR)(&QdBXw74b;Ga^(}) zX7YQC|JA+2lam{79faMxWFLsI-bqK=;P2~pmAc-xtUnlJE>AczebG&qorF3^Z&a}@ z4PX~_KrI?Y$C1-Ba^m7NAj`Qj) zU?S2AmY|B9P`P8ELN$gM*J5%K3m* zg!QQtF}F+$K2wSG{umo6`VQ{~8t{T4V13Qa&#&s@!Vhd30Uojd;6j`kJc&e*N?)VL zmw47bXl8@u(~NbkFlu09WB2y;DS=_9+Ba;6mJzH;_jI}TF)9@fG8z<)3tv18KIw79 zdWbRQq7{$qxRz#;$CrZHTsrNW85nF)bmpuL4INL<$R1Qae*jKo=)BkboQN!weEB6N zjni!gBdw12$)Vl##a`Q2MKlG`FlfkViOpTmuwf>5W-E==Uv@vxa`g1+CnilW$oPWv zdi17%)%?fzg7c1wqoWT3d_5QxfV9hf{jU_{G(NH*byVP5^{xgB1O{v_!HkrY^ogsh zKv7Xqol$TTlD@a&e&kmnY4Y^gfdZMy!3heYfupuJB2i{pGJFaqz6^$_+%7!v(A=qo z=%Q9#L=BcyF!jn6a9xz5vI^U#`Bax!ucxbvcYSe46MMV={JjY(XY$=|W>T@}?$&KD z;X0%e0?0v}{K9hn;`}@N)=y0Y9bUyW$==tE-)TSG+%pr_S+M&@6aAfrQb#8N!%mAJ zYmhk;r>p7YO**F>an$8H;glsvgS*J3Z{)d0~x9}e?xwa&!JXTFC zXFpp0Wq47`Th(fs{a$|u0SO3zzg*eHBk}h5a8gUY%Qh@D1E%`4aSB4dS_2a##Au{P z0&Xc9gNa%_hZx_{k2ijKob#vNo*2loxng>b>ZcV3+8&oHQZ6zy5&>F) zxhj-U`)(&d-rDFBXGwz<1V@NrQXV<>YM`BJ|3wy~5EisG%<&%l0j*oXmy_E60{ zF2~rQfrIR9PIfk^!Hnarer<*w*mQw|a&x8zc}xVGytheq>ftXoAue2yepYaH=4+Fb z^?BG#EX*80rP+dbKv$GLb?B=9X7b;vbxcI2WnSu9+spOEq;KDzfOENT{i$ zrH%U=Zck#Oc;bM7B4mpk492ef58HAbBmTUFH-b17UVEL<}OxXm*ohW`D9xiW?M#9113Jl*Pt$_6eKHhG4`c=|$<7*FQ zN#o(uJ*Yv^&OfjdBQus9`BL9`%oxrC*I+k%fyd=OUsEOG4$fyNngBfG>nk+|_@C_T z96a4xta!QG^KSmi8VsPEFM*lWhq4J|S>4P%FhO;g6=?f;RJ!kcEbrV5z2fOcM%W-7DOG{!#;<+#3xDxfVDYy@!gJ z=S9)nnvST|fg11AHr^uRU>YF1w44+a@c?gJ@#Su-wVS$c5C16EtW$=yDqFVJT1V^| zln+ng(pt7qGe|g)8%dX70ZDc?>P8ro|De(i2=5G?biL&&0lu|ghba)?TCX+c$>KcL zBOf~2+$6Xe=De-)et-sB7yt??PnwC zr9y_?Sj2yF>-O?M265|!)?0gwlNBEgEEPw7Q9j!6a`8wHbH|Kb=e=K-Z*7np?v&{O zg37s_o7mDgz1J7Z%GM<#yk|G_mJd{piYvHLYc4H8HRbCajkKRzlA}9#L0I(VT5*^^ zQCqMb5leU?d7$U`iYN8ck2HX#t--x)Oh+@haJ;#ju;0H@taUpaJ>PJ!-@8H3J2u%m zo{O9Ri714&PB@&U@XhGA7^Ur06C9#S)$RpN3c*Kx3dvheYS~b0=7dKpsn~(b(XAm$ z%DHiOsICA45VoWJbBiiVTw6$g;(j>D4xV?#(X~kTr&-<`+H^%14^bz46OL)Qd>Km{ z+?xq&>csSZ>?`W;6`wi8?60RB!~%d(H4c|n2i<>Pb<{WW)!by-v`;9DTA&8mRW5F@ z(ief@!`4ip8T4N6z*Ijm8S)w(dvSf3NX5p*6@FxELHMABgi$75#2oaAp}y`#18vl5 zD2pdxrO+dVu8prCR98p|^7Qx1gOfRzM<{cpSOK#{7xPi-*Z;`L~A(`{xs=eV}eas|bSl zmH)zV2$dC00n0B8kh||%)1jm}Ty|GUI*BvA_T$&Lk~HrvP~e0oOU@gIkb`=q2kV!c z5Mb!`2|zX}&5|xs{@nLqNNbvOZ^uG(mS_gC=>GTMG79pJY1-X;N*Y0#W z*?+@z4Va+PwpI?wtni0ak9)F+{aXqOtfcBMQz41i7C7)QyT_ujPlJh%<&cpdFr#_~ zo|@$pk(yWN)VFZ|<1Sb^Nn$Q>yJlBa#KH{}%KFxNpCxr+(kxIgm~NR17hQzB8RfVr zNa^D7-gZ<8Y~P@Ng{Vn_O$1#nn8#+_jZ< zkr7rt5WV+65^?CSS*+|1FEi1h5ZiKK;Aa0z>WSs!`?hpWK4>aJkU&cFkPidI1f)E; zgQS@NJVBTT^!n2^(GB{VN`aYFaN$znFz(P5nZj(A&AdeqZRzG}VV$i#HV;}_TpaqN zA5cP~qGrPC85Wi>jT5qC67SyG)s+Aee^hVZzD+?QE`BA>qB%&wqr(bp(=xuWR_fMa zIhiiE*R)St%VEu=z#6Xw9cX?jg(O!@H8nr(APwqIlcW^38@yLLJ2NwWvg)XY`pu(e zKr2_B`=uJqVJ5m5PfQ_(TW8rDav)6_;(zi)z?9&_Edf?yngsEm$d>?I8*XFVT=H^h z`QnhIeu?td&edO?sj;|&cX9PXs>upt$uH0wc)-t30=Vsr^9z`=u#RJ(rClhI_+ing4QmWHPXR5 z4B_UpzV;+CyA@P*#aF#=MXabI2!{2{m#7?=~CF` zd=Qo>I037rrG(MP^PICSLvLq%!AHRrl7sv7qiI%K(vbgMSX0g?OQg&l9-fQ+urYRI z^hsI)Y)mW3zqxm)pfLx1L5f)97YBfi{*PS&_w#*_QX=vUm@)E!-r1$4#Q87MF|x8b z-aMx?ipx;h9jOA4#u$D)q3R_0?U*RO_AwU4+%plnlytcxIwK5A^;vN?Xzl@lt2#Go zYjH+v@gD@J6Id02sTYONCn{9%V=OAmUm6k*zRvK5-Kx{Gj*ELPWxw`(?$3zQax$8K zA3ncNvW0fzyEX*h$rf52M{_N1Atxk4QY4|?or?&bLZRB#~ThGgz zPn^%`)LTftxa|^lZiH*zSTc_urzaRP@YditJ3C_mXm3AyXshV+H(@8=|1m4BCj5$y za}@{!XLVZ|Vsc$b?t|?E=0Osz&9y0~_GHUcyY?7>CL0lUn*aGlcxY%=R+dG{rIfCG zC3coKgiIUuFZ{Dp2rc`gADsG|iH}f-bFqEYq{uR9HX`NnTpMpH&>^p|9~6S}{t(N@ zcadEN+k6^ozkx}nsHlkgGbKcER10k__y0b=u^L(4L5bQQf~xxaIGhxJDDQaUwy|kf zTeEfn;^1cQ%&7bsAn=JmH$g(aF0uwo*DZ6;4$ z`Ub*aipNawfIoR0m*d`>I!@TVge_~2W6N3JJRj>9w+Z>DepW_Kv-OBj@>3zte;?T+ zAY{LNEl5_Xpz@!668J_4C@8!Ogye{FziCo9W_twgQ3!dT4{mSSj;VRTo4(8W(MyhA zxAVT{G8W~%PD)aRb{uR(r&5fa8kRhB%W5d*F6kp>r!)xXr>AGnb=UHTP9j^sv8(Du zn*S7>=0Z1LEEGo_zSBy`3<>V$eQ?uxY!VM{1@K1ZN*cJmd-yS6A%comZ|P{cgIhr0 zVkX~X8TK+9TReZoCV)_mw|H%XKJc191Luf8%i%k%By2sqyuxFf!~bkT)WFhyW#hur zMA6KQN$zTkeQ%+8mUnS8iw%m49s8ti?w-z-%yD|?edG^>h+c_75J>k(Fpx~JkzMko z-`%>5Fg@l3lSVfheyp>2!z@G0LO1vxV>}9e%xv$_HTpf7j9g)OjJ<#wvL0?ipak9p zRP2Mw;h^!Kc7k4;PffA(@85Hc_+!KNZgWsYSsCkhM~7%Mi-^bLGQ#GM##nn-z*xIL zaAMe>2dvA+q2ZJuGv`7+=Xcl)QoNSkG55a;S>rr*I$YI;30##-G~ksz=JpNId-V#x zCyp89$w__v{FeVm2Hqj<;5Mg|nf#KX5~>#a?asC~>@;SHII#b2rdu}s&z`n9Kg3BA zfGFN)G34Q-YjY?t7IqpK!O8xC}o#YtNCNq z*Dr}}1Nqj$lx}oTfy|HiATNrtKTvd$W2E%(^jv9jOG(x2!Ez1=`06Z}HR6IhmAaBG zqyT!zx_$GNqiI-8(B^X?MoJTRiP+nIXxfUFDf$)h7c>h9{n?bG}!;rBh>9}kZtn!seM8Nza!>*d}M-#pn*;00)huO+diZ9xGbv5KrORo@}ADg zPeS-u<_!s?y?+WDP*i0tk&mCB9C_HWDpFu{nocjTkp`*KrqCTaXD2@C z3QR8Y3G_nQiMezkVyl81^iFWG6lh0CmqdIWkhyOI+xq-~S5T8l=Ov%%Fkc0W%U0BW zqlrM{8tV3|N9gYBb@9oyN44So0-mu+K;4)EHgUkhZjR}A%C>lew_ess zMp#qS{LlV!`UNaMrMv@QvzsA;c7*p!bXN9YR9CHlu4(j7wqEnpfdM;}3Pit*OW;gu zzKX!G*TO9$m?=@puw|KMf%l5Iesd9Cdh?{1gZ7I8Lx6Qkn!~+Sh(qyqgTV8y?EuHQRk&|v6LoS_*p|O3U=3Ye3=Y15YhJ}7Baz|+%FaMip$aD z*wQc=1(!LQSu{oWSE8x;`w25H$`vQ?vH1OI;51$)JNoS6Z1U;Su5I8o(e6C#c>0%% z^^h|XJAH^bE>!gzn>Or_G@(Nj`K!d^*wFBM)(#BIN@(KId4mv(AVbgN`iQK z7Z*{8k0S*)Pa0LSH#6P5^+f;j{;e23HKmP>+))t>1_9Pi3qimQXR%fEHGz-g-+L2N ztec1bDns`ERVoR?Hl*Ue?Vdu)jI>$nQ{0!}Z!@#!SKSF~6G*a*d0k}>p{RO6}rkga5 z#YORZN4HI!><{@KX|;}&$!bNY0wX{^245A`f5fVNkP_{{zy){h!!GP;`YTyh?_6~ z-(ou=;mCchL^r*kz#vhz{t$og6Y{|!uqGZSy^;;bp2<{wqRwF%EU2*z+ zdIzPx*~fefZ-O}2VBFmoarJm9gBesR0HC;b>mId~F7PU{&9*9%EerK|o7u|V5+P7)M>0B)sI|c{Zh z{nfBO-0IF#Xp!$p>ai^sJL4DNX``|5&0X=wJ7!Db{WHZgP|_J?ary5WoFN!0Sd(J; zus_e=Thj5OFVqBdOZuzG!7`Z zu>kQLi@&Zy-rTq#?ZJFDoxKSpio7PEU`y{~{y}=v%rC4nac{e7NKPHpUUp4qf%}$# z!D&`eoxBfD@lS=w@>RIHq`)a3$ydAY?GffSrI`$S(kQTJe(AH;<1LkmlK#G{O-24= zoC4(i8NhubDn18WlflPALH?e-^lR1_mwWNzy**gR)2xgK3Lz`=#Qr|E4s-h_o^qn4 z16ZQlHHPE{V!AA)S#;nwhBldr-OJ_<^~((9VUP0?{T43r0-nWBcpltJ8RUx2URZAF z1nUDt?K;$L~(tYEc@ZEJ5YbilR)eRExj zKuhxB;ZoOc0 zY{L{5^&xrKpw{SL!+YNOwW2#AjLPca{(e}yg*>>es?5kB@MGpcz#=c~u+kF(7+OBN z7YhY<>Ikl@nm8^40LH-G{{^U3Q~2mbE@%;!XA`l|Mh6{|+;SD<;EI?skHuUo9CGRT zCTw>{2ZG6Yy!q|b6vXkUouJEp_`?SrP#!%JF_95N=i=ulJ^AEda!pKO=eyQ)NWGz$5UW#Qeh7oV4$G$SYh=K?cvA-h2a204FPV0df{^V6Su!)#fEX59O^ z*Yh`rq;(>NAdmEbkMFsNmDwV*c|f@TvJO9>Jm8L=@Fn3}FE=6M^|S_^dU2sYC?R!! z_pZyR72KguPEIcIb_HuNO%k)K5)NAylNMR>5mOsz0G`oC-e;+8k-zJ&Lr<}lPXFwe zqlxHo8o70h;W-MVHd?J(SttL6%GwxjQ; z*L_I|U}{att5?$25^zn%#PktV>;i3@nXr#gbVaw$2n5s1G)o>!Uj~SyDS%#rdm=~p zTbr6pvP_xvu)xxxC)+eRy-LaYUS_E^9%y@uP0lRfVNHW``F+qiSEhTb&#XK@lg1r> zL=JAi(*^gX-9brG$&49M)sLJwgv-la0X_~4`@ubN1QGyT6C$EOLkLTT-b<-_er9!b{*kzyO}A LyihJvvfKb@vzb1&`b}l{G8>vLx#%f40cT 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 ThW~<3eE{^d9%|O8+eiL?G3cuN diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.bmg50_equestrian.png b/src/main/resources/assets/hbm/textures/items/ammo_secret.bmg50_equestrian.png similarity index 100% rename from src/main/resources/assets/hbm/textures/items/ammo_standard.bmg50_equestrian.png rename to src/main/resources/assets/hbm/textures/items/ammo_secret.bmg50_equestrian.png diff --git a/src/main/resources/assets/hbm/textures/items/ammo_secret.folly_sm.png b/src/main/resources/assets/hbm/textures/items/ammo_secret.folly_sm.png new file mode 100644 index 0000000000000000000000000000000000000000..30efa4d03e8a65f8da4b46c2b817662b255f298a GIT binary patch literal 400 zcmV;B0dM|^P)b+z(1D&n9t|M`^A307mWd>R56)MkWvC* zjNx{>H9}g?jg%7Gwy|v+DJ6r!pfa;x0b>l8%Y`&eO9WuOUe_Wekmosho@0z5O;gV2 zGoI(6wXQ|V8kJIo>$(6u9uGXv!}on0$03emq9|gqSp4Y8OF$`Abi3X1XMkR>SBtd1 zA5N!}7>z~@heMJi0U${d?)N*>>9n#O>pi77j#rN3Ec^XFS(ef1bjY#{Aq1}LVp$gB z@pySW9#@sXUy(}S6LL5l&|1@Ox0fF$EeL{QHk*|VjiLzO_t|VVgkdNe&HEF%Uax4a u+3j|OVc6*H3$opAiy#O-j(08c9{U2>0h>y)w9%vh0000