bullets now determine projectile type, not the guns
@ -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());
|
||||
|
||||
@ -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<EntityBulletBeamBase, MovingObjectPosition> lambda) { this.onImpactBeam = lambda; return this; }
|
||||
public BulletConfig setOnEntityHit(BiConsumer<EntityBulletBaseMK4, MovingObjectPosition> lambda) { this.onEntityHit = lambda; return this; }
|
||||
|
||||
public static enum ProjectileType {
|
||||
BULLET,
|
||||
BEAM
|
||||
}
|
||||
|
||||
public DamageSource getDamage(Entity projectile, EntityLivingBase shooter, boolean bypass) {
|
||||
|
||||
DamageSource dmg;
|
||||
|
||||
@ -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); }
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@ -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<ItemStack, LambdaContext> 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);
|
||||
|
||||
@ -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);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -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};
|
||||
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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");
|
||||
|
||||
@ -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<ItemStack, LambdaContext> 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<ItemStack, LambdaContext, Boolean> 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<ItemStack, AnimType, BusAnimation> LAMBDA_FOLLY_ANIMS = (stack, type) -> {
|
||||
switch(type) {
|
||||
|
||||
@ -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"]},
|
||||
|
||||
|
||||
BIN
src/main/resources/assets/hbm/sounds/weapon/reload/screw.ogg
Normal file
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 325 B After Width: | Height: | Size: 325 B |
|
After Width: | Height: | Size: 400 B |
|
Before Width: | Height: | Size: 318 B After Width: | Height: | Size: 318 B |
|
Before Width: | Height: | Size: 359 B After Width: | Height: | Size: 359 B |