more stupid shit

This commit is contained in:
Boblet 2024-11-28 16:59:33 +01:00
parent dcdc2d9032
commit 38ecb23a8e
20 changed files with 125 additions and 51 deletions

View File

@ -57,6 +57,7 @@
* Logistic drones now move at 0.625 blocks/t instead of 0.6. There is no balancing reason for this, I just hate weird numbers like 0.6
* Fallout effects now remove snow layers in the same area where they would remove things like small plants and leaves
* Adjusted damage values to many swords and some tools
* Unsats and aromatics can now be filled into gas canisters
## Fixed
* The conveyor grabber should no longer skip over items when used in long lines

View File

@ -110,7 +110,7 @@ public class EntityProcessorCross implements IEntityProcessor {
for(Entry<Entity, Float> entry : damageMap.entrySet()) {
Entity entity = entry.getKey();
entity.attackEntityFrom(setExplosionSource(explosion.compat), entry.getValue());
attackEntity(entity, explosion, entry.getValue());
if(damage != null) {
double distanceScaled = entity.getDistance(x, y, z) / size;
@ -121,6 +121,10 @@ public class EntityProcessorCross implements IEntityProcessor {
return affectedPlayers;
}
public void attackEntity(Entity entity, ExplosionVNT source, float amount) {
entity.attackEntityFrom(setExplosionSource(source.compat), amount);
}
public float calculateDamage(double distanceScaled, double density, double knockback, float size) {
return (float) ((int) ((knockback * knockback + knockback) / 2.0D * 8.0D * size + 1.0D));
}

View File

@ -1,14 +1,36 @@
package com.hbm.explosion.vanillant.standard;
import com.hbm.explosion.vanillant.ExplosionVNT;
import com.hbm.items.weapon.sedna.BulletConfig;
import com.hbm.util.DamageResistanceHandler.DamageClass;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
public class EntityProcessorCrossSmooth extends EntityProcessorCross {
protected float fixedDamage;
protected float pierceDT = 0;
protected float pierceDR = 0;
protected DamageClass clazz = DamageClass.EXPLOSIVE;
public EntityProcessorCrossSmooth(double nodeDist, float fixedDamage) {
super(nodeDist);
this.fixedDamage = fixedDamage;
}
public EntityProcessorCrossSmooth setupPiercing(float pierceDT, float pierceDR) {
this.pierceDT = pierceDT;
this.pierceDR = pierceDR;
return this;
}
@Override
public void attackEntity(Entity entity, ExplosionVNT source, float amount) {
entity.attackEntityFrom(BulletConfig.getDamage(null, source.exploder instanceof EntityLivingBase ? (EntityLivingBase) source.exploder : null, clazz), amount);
}
@Override
public float calculateDamage(double distanceScaled, double density, double knockback, float size) {
return (float) (fixedDamage * (1 - distanceScaled));
}

View File

@ -307,8 +307,8 @@ public class Fluids {
NAPHTHA_CRACK = new FluidType("NAPHTHA_CRACK", 0x595744, 2, 1, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x5F6D44)).addTraits(new FT_Flammable(125_000), new FT_Combustible(FuelGrade.MEDIUM, 200_000), LIQUID, VISCOUS, P_FUEL);
LIGHTOIL_CRACK = new FluidType("LIGHTOIL_CRACK", 0x8c7451, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0xB46B52)).addTraits(new FT_Flammable(200_000), new FT_Combustible(FuelGrade.MEDIUM, 500_000), LIQUID, P_FUEL);
DIESEL_CRACK = new FluidType("DIESEL_CRACK", 0xf2eed5, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0xFF2C2C)).addTraits(new FT_Flammable(200_000), new FT_Combustible(FuelGrade.HIGH, 450_000), LIQUID, P_FUEL);
AROMATICS = new FluidType("AROMATICS", 0x68A09A, 1, 4, 1, EnumSymbol.NONE).addTraits(new FT_Flammable(25_000), LIQUID, VISCOUS, P_GAS);
UNSATURATEDS = new FluidType("UNSATURATEDS", 0x628FAE, 1, 4, 1, EnumSymbol.NONE).addTraits(new FT_Flammable(1_000_000), GASEOUS, P_GAS); //acetylene burns as hot as satan's asshole
AROMATICS = new FluidType("AROMATICS", 0x68A09A, 1, 4, 1, EnumSymbol.NONE).addContainers(new CD_Gastank(0x68A09A, 0xEDCF27)).addTraits(new FT_Flammable(25_000), LIQUID, VISCOUS, P_GAS);
UNSATURATEDS = new FluidType("UNSATURATEDS", 0x628FAE, 1, 4, 1, EnumSymbol.NONE).addContainers(new CD_Gastank(0x628FAE, 0xEDCF27)).addTraits(new FT_Flammable(1_000_000), GASEOUS, P_GAS); //acetylene burns as hot as satan's asshole
SALIENT = new FluidType("SALIENT", 0x457F2D, 0, 0, 0, EnumSymbol.NONE).addTraits(DELICIOUS, LIQUID, VISCOUS);
XPJUICE = new FluidType("XPJUICE", 0xBBFF09, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS);
ENDERJUICE = new FluidType("ENDERJUICE", 0x127766, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID);

View File

@ -1603,6 +1603,7 @@ public class ModItems {
public static Item gun_congolake;
public static Item gun_flamer;
public static Item gun_flamer_topaz;
public static Item gun_flamer_daybreaker;
public static Item gun_uzi;
public static Item gun_uzi_akimbo;
public static Item gun_spas12;
@ -6902,6 +6903,7 @@ public class ModItems {
GameRegistry.registerItem(gun_congolake, gun_congolake.getUnlocalizedName());
GameRegistry.registerItem(gun_flamer, gun_flamer.getUnlocalizedName());
GameRegistry.registerItem(gun_flamer_topaz, gun_flamer_topaz.getUnlocalizedName());
GameRegistry.registerItem(gun_flamer_daybreaker, gun_flamer_daybreaker.getUnlocalizedName());
GameRegistry.registerItem(gun_uzi, gun_uzi.getUnlocalizedName());
GameRegistry.registerItem(gun_uzi_akimbo, gun_uzi_akimbo.getUnlocalizedName());
GameRegistry.registerItem(gun_spas12, gun_spas12.getUnlocalizedName());

View File

@ -12,11 +12,11 @@ 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;
import com.hbm.util.EntityDamageUtil;
import com.hbm.util.TrackerUtil;
import com.hbm.util.DamageResistanceHandler.DamageClass;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
@ -48,14 +48,10 @@ public class BulletConfig implements Cloneable {
public float damageMult = 1.0F;
public float armorThresholdNegation = 0.0F;
public float armorPiercingPercent = 0.0F;
public float knockbackMult = 1.0F;
public float knockbackMult = 0.25F;
public float headshotMult = 1.0F;
public String damageType = ModDamageSource.s_bullet;
public boolean dmgProj = true;
public boolean dmgFire = false;
public boolean dmgExplosion = false;
public boolean dmgBypass = false;
public DamageClass dmgClass = DamageClass.PHYSICAL;
public float ricochetAngle = 5F;
public int maxRicochetCount = 2;
@ -110,8 +106,7 @@ public class BulletConfig implements Cloneable {
public BulletConfig setArmorPiercing(float armorPiercingPercent) { this.armorPiercingPercent = armorPiercingPercent; return this; }
public BulletConfig setKnockback(float knockbackMult) { this.knockbackMult = knockbackMult; return this; }
public BulletConfig setHeadshot(float headshotMult) { this.headshotMult = headshotMult; return this; }
public BulletConfig setDamageType(String type) { this.damageType = type; return this; }
public BulletConfig setupDamageClass(boolean proj, boolean fire, boolean explosion, boolean bypass) { this.dmgProj = proj; this.dmgFire = fire; this.dmgExplosion = explosion; this.dmgBypass = bypass; return this; }
public BulletConfig setupDamageClass(DamageClass clazz) { this.dmgClass = clazz; return this; }
public BulletConfig setRicochetAngle(float angle) { this.ricochetAngle = angle; return this; }
public BulletConfig setRicochetCount(int count) { this.maxRicochetCount = count; return this; }
public BulletConfig setDamageFalloutByPen(boolean falloff) { this.damageFalloffByPen = falloff; return this; }
@ -140,17 +135,21 @@ public class BulletConfig implements Cloneable {
BEAM
}
public DamageSource getDamage(Entity projectile, EntityLivingBase shooter, boolean bypass) {
public static DamageSource getDamage(Entity projectile, EntityLivingBase shooter, DamageClass dmgClass) {
DamageSource dmg;
if(shooter != null) dmg = new EntityDamageSourceIndirect(damageType, projectile, shooter);
else dmg = new DamageSource(damageType);
if(shooter != null) dmg = new EntityDamageSourceIndirect(dmgClass.name(), projectile, shooter);
else dmg = new DamageSource(dmgClass.name());
if(this.dmgProj) dmg.setProjectile();
if(this.dmgFire) dmg.setFireDamage();
if(this.dmgExplosion) dmg.setExplosion();
if(this.dmgBypass || bypass) dmg.setDamageBypassesArmor();
switch(dmgClass) {
case PHYSICAL: dmg.setProjectile(); break;
case FIRE: dmg.setFireDamage(); break;
case EXPLOSIVE: dmg.setExplosion(); break;
case ELECTRIC: break;
case LASER: break;
case SUBATOMIC: break;
}
return dmg;
}
@ -199,7 +198,7 @@ public class BulletConfig implements Cloneable {
if(entity == bullet.getThrower() && bullet.ticksExisted < bullet.selfDamageDelay()) return;
if(entity instanceof EntityLivingBase && ((EntityLivingBase) entity).getHealth() <= 0) return;
DamageSource source = bullet.config.getDamage(bullet, bullet.getThrower(), false);
DamageSource source = bullet.config.getDamage(bullet, bullet.getThrower(), bullet.config.dmgClass);
if(!(entity instanceof EntityLivingBase)) {
EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, source, bullet.damage);
@ -228,7 +227,7 @@ public class BulletConfig implements Cloneable {
if(entity instanceof EntityLivingBase && ((EntityLivingBase) entity).getHealth() <= 0) return;
DamageSource source = bullet.config.getDamage(bullet, bullet.getThrower(), false);
DamageSource source = bullet.config.getDamage(bullet, bullet.getThrower(), bullet.config.dmgClass);
if(!(entity instanceof EntityLivingBase)) {
EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, source, bullet.damage);
@ -247,7 +246,7 @@ public class BulletConfig implements Cloneable {
if(entity instanceof EntityLivingBase && ((EntityLivingBase) entity).getHealth() <= 0) return;
DamageSource source = beam.config.getDamage(beam, beam.thrower, false);
DamageSource source = beam.config.getDamage(beam, beam.thrower, beam.config.dmgClass);
if(!(entity instanceof EntityLivingBase)) {
EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, source, beam.damage);

View File

@ -84,7 +84,7 @@ public class GunFactory {
G40_HE, G40_HEAT, G40_DEMO, G40_INC, G40_PHOSPHORUS,
ROCKET_HE, ROCKET_HEAT, ROCKET_DEMO, ROCKET_INC, ROCKET_PHOSPHORUS,
FLAME_DIESEL, FLAME_GAS, FLAME_NAPALM, FLAME_BALEFIRE,
CAPACITOR, CAPACITOR_OVERCHARGE, CAPACITOR_BLACKLIGHTNING,
CAPACITOR, CAPACITOR_OVERCHARGE,
TAU_URANIUM,
COIL_TUNGSTEN, COIL_FERROURANIUM,
NUKE_STANDARD, NUKE_DEMO, NUKE_HIGH, NUKE_TOTS, NUKE_HIVE

View File

@ -52,6 +52,7 @@ public class GunFactoryClient {
MinecraftForgeClient.registerItemRenderer(ModItems.gun_congolake, new ItemRenderCongoLake());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_flamer, new ItemRenderFlamer(ResourceManager.flamethrower_tex));
MinecraftForgeClient.registerItemRenderer(ModItems.gun_flamer_topaz, new ItemRenderFlamer(ResourceManager.flamethrower_topaz_tex));
MinecraftForgeClient.registerItemRenderer(ModItems.gun_flamer_daybreaker, new ItemRenderFlamer(ResourceManager.flamethrower_daybreaker_tex));
MinecraftForgeClient.registerItemRenderer(ModItems.gun_lag, new ItemRenderLAG());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi, new ItemRenderUzi());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi_akimbo, new ItemRenderUziAkimbo());
@ -183,6 +184,7 @@ public class GunFactoryClient {
((ItemGunBaseNT) ModItems.gun_congolake) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
((ItemGunBaseNT) ModItems.gun_flamer) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO_NOCOUNTER);
((ItemGunBaseNT) ModItems.gun_flamer_topaz) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO_NOCOUNTER);
((ItemGunBaseNT) ModItems.gun_flamer_daybreaker) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO_NOCOUNTER);
((ItemGunBaseNT) ModItems.gun_uzi) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
((ItemGunBaseNT) ModItems.gun_spas12) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
((ItemGunBaseNT) ModItems.gun_panzerschreck) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);

View File

@ -230,7 +230,7 @@ public class Lego {
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.BULLET_CHUNKLOADING) {
EntityBulletBaseMK4 mk4 = new EntityBulletBaseMK4CL(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset);
EntityBulletBaseMK4CL mk4 = new EntityBulletBaseMK4CL(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset);
if(ItemGunBaseNT.getIsLockedOn(stack)) mk4.lockonTarget = entity.worldObj.getEntityByID(ItemGunBaseNT.getLockonTarget(stack));
if(i == 0 && config.blackPowder) 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);
@ -275,7 +275,7 @@ public class Lego {
public static void standardExplode(EntityBulletBaseMK4 bullet, MovingObjectPosition mop, float range) { standardExplode(bullet, mop, range, 1F); }
public static void standardExplode(EntityBulletBaseMK4 bullet, MovingObjectPosition mop, float range, float damageMod) {
ExplosionVNT vnt = new ExplosionVNT(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, range);
vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, bullet.damage * damageMod));
vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, bullet.damage * damageMod).setupPiercing(bullet.config.armorThresholdNegation, bullet.config.armorPiercingPercent));
vnt.setPlayerProcessor(new PlayerProcessorStandard());
vnt.setSFX(new ExplosionEffectWeapon(10, 2.5F, 1F));
vnt.explode();

View File

@ -21,6 +21,7 @@ import com.hbm.render.anim.BusAnimation;
import com.hbm.render.anim.BusAnimationSequence;
import com.hbm.render.anim.BusAnimationKeyframe.IType;
import com.hbm.render.anim.HbmAnimations.AnimType;
import com.hbm.util.DamageResistanceHandler.DamageClass;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
@ -79,9 +80,9 @@ public class XFactoryAccelerator {
public static void init() {
tau_uranium = new BulletConfig().setItem(EnumAmmo.TAU_URANIUM).setBeam().setLife(5).setRenderRotations(false).setDoesPenetrate(true).setDamageFalloutByPen(false)
tau_uranium = new BulletConfig().setItem(EnumAmmo.TAU_URANIUM).setupDamageClass(DamageClass.SUBATOMIC).setBeam().setLife(5).setRenderRotations(false).setDoesPenetrate(true).setDamageFalloutByPen(false)
.setOnBeamImpact(BulletConfig.LAMBDA_BEAM_HIT);
tau_uranium_charge = new BulletConfig().setItem(EnumAmmo.TAU_URANIUM).setBeam().setLife(5).setRenderRotations(false).setDoesPenetrate(true).setDamageFalloutByPen(false).setSpectral(true)
tau_uranium_charge = new BulletConfig().setItem(EnumAmmo.TAU_URANIUM).setupDamageClass(DamageClass.SUBATOMIC).setBeam().setLife(5).setRenderRotations(false).setDoesPenetrate(true).setDamageFalloutByPen(false).setSpectral(true)
.setOnBeamImpact(BulletConfig.LAMBDA_BEAM_HIT);
coil_tungsten = new BulletConfig().setItem(EnumAmmo.COIL_TUNGSTEN).setVel(7.5F).setLife(50).setDoesPenetrate(true).setDamageFalloutByPen(false).setSpectral(true)

View File

@ -25,6 +25,7 @@ import com.hbm.render.anim.BusAnimation;
import com.hbm.render.anim.BusAnimationSequence;
import com.hbm.render.anim.BusAnimationKeyframe.IType;
import com.hbm.render.anim.HbmAnimations.AnimType;
import com.hbm.util.DamageResistanceHandler.DamageClass;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import net.minecraft.entity.EntityLivingBase;
@ -88,22 +89,19 @@ public class XFactoryEnergy {
public static void init() {
energy_tesla = new BulletConfig().setItem(EnumAmmo.CAPACITOR).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true)
energy_tesla = new BulletConfig().setItem(EnumAmmo.CAPACITOR).setupDamageClass(DamageClass.ELECTRIC).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true)
.setOnBeamImpact(LAMBDA_LIGHTNING_HIT);
energy_tesla_overcharge = new BulletConfig().setItem(EnumAmmo.CAPACITOR_OVERCHARGE).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true)
energy_tesla_overcharge = new BulletConfig().setItem(EnumAmmo.CAPACITOR_OVERCHARGE).setupDamageClass(DamageClass.ELECTRIC).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true)
.setDamage(1.5F).setOnBeamImpact(LAMBDA_LIGHTNING_HIT);
energy_tesla_blacklightning = new BulletConfig().setItem(EnumAmmo.CAPACITOR_BLACKLIGHTNING).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true)
.setDamage(5F).setOnBeamImpact(LAMBDA_LIGHTNING_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);
energy_las = new BulletConfig().setItem(EnumAmmo.CAPACITOR).setupDamageClass(DamageClass.LASER).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT);
energy_las_overcharge = new BulletConfig().setItem(EnumAmmo.CAPACITOR_OVERCHARGE).setupDamageClass(DamageClass.LASER).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT);
ModItems.gun_tesla_cannon = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig()
.dura(2_000).draw(10).inspect(33).reloadSequential(true).crosshair(Crosshair.CIRCLE)
.rec(new Receiver(0)
.dmg(15F).delay(20).reload(44).jam(19).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F)
.mag(new MagazineBelt().addConfigs(energy_tesla, energy_tesla_overcharge, energy_tesla_blacklightning))
.mag(new MagazineBelt().addConfigs(energy_tesla, energy_tesla_overcharge))
.offset(0.75, 0, -0.375)
.setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardConfiguration()
@ -114,7 +112,7 @@ public class XFactoryEnergy {
.dura(2_000).draw(10).inspect(26).reloadSequential(true).crosshair(Crosshair.CIRCLE).scopeTexture(scope_luna)
.rec(new Receiver(0)
.dmg(15F).delay(8).reload(44).jam(36).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F)
.mag(new MagazineFullReload(0, 24).addConfigs(energy_las, energy_las_overcharge, energy_las_blacklightning))
.mag(new MagazineFullReload(0, 24).addConfigs(energy_las, energy_las_overcharge))
.offset(0.75, -0.0625 * 1.5, -0.1875)
.setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardConfiguration()

View File

@ -26,6 +26,7 @@ import com.hbm.render.anim.BusAnimation;
import com.hbm.render.anim.BusAnimationSequence;
import com.hbm.render.anim.BusAnimationKeyframe.IType;
import com.hbm.render.anim.HbmAnimations.AnimType;
import com.hbm.util.DamageResistanceHandler.DamageClass;
import net.minecraft.block.Block;
import net.minecraft.entity.Entity;
@ -49,6 +50,11 @@ public class XFactoryFlamer {
public static BulletConfig flame_topaz_napalm;
public static BulletConfig flame_topaz_balefire;
public static BulletConfig flame_daybreaker_diesel;
public static BulletConfig flame_daybreaker_gas;
public static BulletConfig flame_daybreaker_napalm;
public static BulletConfig flame_daybreaker_balefire;
public static Consumer<Entity> LAMBDA_FIRE = (bullet) -> {
if(bullet.worldObj.isRemote && MainRegistry.proxy.me().getDistanceToEntity(bullet) < 100) FlameCreator.composeEffectClient(bullet.worldObj, bullet.posX, bullet.posY - 0.125, bullet.posZ, FlameCreator.META_FIRE);
};
@ -102,15 +108,28 @@ public class XFactoryFlamer {
}
public static void init() {
flame_diesel = new BulletConfig().setItem(EnumAmmo.FLAME_DIESEL).setLife(100).setVel(1F).setGrav(0.02D).setReloadCount(300).setSelfDamageDelay(20).setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_DIESEL);
flame_gas = new BulletConfig().setItem(EnumAmmo.FLAME_GAS).setLife(10).setSpread(0.05F).setVel(1F).setGrav(0.0D).setReloadCount(300).setSelfDamageDelay(20).setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_GAS);
flame_napalm = new BulletConfig().setItem(EnumAmmo.FLAME_NAPALM).setLife(200).setVel(1F).setGrav(0.02D).setReloadCount(300).setSelfDamageDelay(20).setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_NAPALM);
flame_balefire = new BulletConfig().setItem(EnumAmmo.FLAME_BALEFIRE).setLife(200).setVel(1F).setGrav(0.02D).setReloadCount(300).setSelfDamageDelay(20).setOnUpdate(LAMBDA_BALEFIRE).setOnRicochet(LAMBDA_LINGER_BALEFIRE);
flame_diesel = new BulletConfig().setItem(EnumAmmo.FLAME_DIESEL).setupDamageClass(DamageClass.FIRE).setLife(100).setVel(1F).setGrav(0.02D).setReloadCount(500).setSelfDamageDelay(20)
.setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_DIESEL);
flame_gas = new BulletConfig().setItem(EnumAmmo.FLAME_GAS).setupDamageClass(DamageClass.FIRE).setLife(10).setSpread(0.05F).setVel(1F).setGrav(0.0D).setReloadCount(500).setSelfDamageDelay(20)
.setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_GAS);
flame_napalm = new BulletConfig().setItem(EnumAmmo.FLAME_NAPALM).setupDamageClass(DamageClass.FIRE).setLife(200).setVel(1F).setGrav(0.02D).setReloadCount(500).setSelfDamageDelay(20)
.setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_NAPALM);
flame_balefire = new BulletConfig().setItem(EnumAmmo.FLAME_BALEFIRE).setupDamageClass(DamageClass.FIRE).setLife(200).setVel(1F).setGrav(0.02D).setReloadCount(500).setSelfDamageDelay(20)
.setOnUpdate(LAMBDA_BALEFIRE).setOnRicochet(LAMBDA_LINGER_BALEFIRE);
flame_topaz_diesel = flame_diesel.clone().setLife(60).setGrav(0.0D).setReloadCount(500).setProjectiles(2).setSpread(0.05F);
flame_topaz_gas = flame_gas.clone().setReloadCount(500).setProjectiles(2).setSpread(0.05F);
flame_topaz_napalm = flame_napalm.clone().setLife(60).setGrav(0.0D).setReloadCount(500).setProjectiles(2).setSpread(0.05F);
flame_topaz_balefire = flame_balefire.clone().setLife(60).setGrav(0.0D).setReloadCount(500).setProjectiles(2).setSpread(0.05F);
flame_topaz_diesel = flame_diesel .clone().setProjectiles(2).setSpread(0.05F).setLife(60).setGrav(0.0D);
flame_topaz_gas = flame_gas .clone().setProjectiles(2).setSpread(0.05F);
flame_topaz_napalm = flame_napalm .clone().setProjectiles(2).setSpread(0.05F).setLife(60).setGrav(0.0D);
flame_topaz_balefire = flame_balefire .clone().setProjectiles(2).setSpread(0.05F).setLife(60).setGrav(0.0D);
flame_daybreaker_diesel = flame_diesel.clone().setLife(200).setVel(2F).setGrav(0.035D)
.setOnImpact((bullet, mop) -> { Lego.standardExplode(bullet, mop, 5F); spawnFire(bullet, mop, 6F, 2F, 200, EntityFireLingering.TYPE_DIESEL); bullet.setDead(); });
flame_daybreaker_gas = flame_gas.clone().setLife(200).setVel(2F).setGrav(0.035D)
.setOnImpact((bullet, mop) -> { Lego.standardExplode(bullet, mop, 5F); bullet.setDead(); });
flame_daybreaker_napalm = flame_napalm.clone().setLife(200).setVel(2F).setGrav(0.035D)
.setOnImpact((bullet, mop) -> { Lego.standardExplode(bullet, mop, 7.5F); spawnFire(bullet, mop, 6F, 2F, 300, EntityFireLingering.TYPE_DIESEL); bullet.setDead(); });
flame_daybreaker_balefire = flame_balefire.clone().setLife(200).setVel(2F).setGrav(0.035D)
.setOnImpact((bullet, mop) -> { Lego.standardExplode(bullet, mop, 5F); spawnFire(bullet, mop, 7.5F, 2.5F, 400, EntityFireLingering.TYPE_BALEFIRE); bullet.setDead(); });
ModItems.gun_flamer = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig()
.dura(20_000).draw(10).inspect(17).crosshair(Crosshair.L_CIRCLE)
@ -118,7 +137,7 @@ public class XFactoryFlamer {
.dmg(10F).delay(1).auto(true).reload(90).jam(17)
.mag(new MagazineFullReload(0, 300).addConfigs(flame_diesel, flame_gas, flame_napalm, flame_balefire))
.offset(0.75, -0.0625, -0.25D)
.setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardFire())
.setupStandardConfiguration()
.anim(LAMBDA_FLAMER_ANIMS).orchestra(Orchestras.ORCHESTRA_FLAMER)
).setUnlocalizedName("gun_flamer");
@ -128,10 +147,20 @@ public class XFactoryFlamer {
.dmg(10F).delay(1).auto(true).reload(90).jam(17)
.mag(new MagazineFullReload(0, 500).addConfigs(flame_topaz_diesel, flame_topaz_gas, flame_topaz_napalm, flame_topaz_balefire))
.offset(0.75, -0.0625, -0.25D)
.setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardFire())
.setupStandardConfiguration()
.anim(LAMBDA_FLAMER_ANIMS).orchestra(Orchestras.ORCHESTRA_FLAMER)
).setUnlocalizedName("gun_flamer_topaz");
ModItems.gun_flamer_daybreaker = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig()
.dura(20_000).draw(10).inspect(17).crosshair(Crosshair.L_CIRCLE)
.rec(new Receiver(0)
.dmg(10F).delay(10).auto(true).reload(90).jam(17)
.mag(new MagazineFullReload(0, 50).addConfigs(flame_daybreaker_diesel, flame_daybreaker_gas, flame_daybreaker_napalm, flame_daybreaker_balefire))
.offset(0.75, -0.0625, -0.25D)
.setupStandardFire())
.setupStandardConfiguration()
.anim(LAMBDA_FLAMER_ANIMS).orchestra(Orchestras.ORCHESTRA_FLAMER)
).setUnlocalizedName("gun_flamer_daybreaker");
ModItems.gun_chemthrower = new ItemGunChemthrower(WeaponQuality.A_SIDE, new GunConfig()
.dura(90_000).draw(10).inspect(17).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE)

View File

@ -31,6 +31,7 @@ import com.hbm.util.EntityDamageUtil;
import com.hbm.util.Vec3NT;
import com.hbm.util.ContaminationUtil.ContaminationType;
import com.hbm.util.ContaminationUtil.HazardType;
import com.hbm.util.DamageResistanceHandler.DamageClass;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import net.minecraft.entity.Entity;
@ -78,7 +79,7 @@ public class XFactoryFolly {
for(int ix = x - 1; ix <= x + 1; ix++) for(int iy = y - 1; iy <= y + 1; iy++) for(int iz = z - 1; iz <= z + 1; iz++) {
if(iy > 0 && iy < 256) beam.worldObj.setBlock(ix, iy, iz, Blocks.air);
AxisAlignedBB aabb = AxisAlignedBB.getBoundingBox(ix - 1, iy - 1, iz - 1, ix + 2, iy + 2, iz + 2);
for(Entity e : entities) if(e != beam.thrower && e.boundingBox.intersectsWith(aabb)) EntityDamageUtil.attackEntityFromIgnoreIFrame(e, beam.config.getDamage(beam, beam.thrower, true), beam.damage);
for(Entity e : entities) if(e != beam.thrower && e.boundingBox.intersectsWith(aabb)) EntityDamageUtil.attackEntityFromIgnoreIFrame(e, beam.config.getDamage(beam, beam.thrower, beam.config.dmgClass), beam.damage);
}
}
};
@ -93,7 +94,7 @@ public class XFactoryFolly {
public static void init() {
folly_sm = new BulletConfig().setItem(EnumAmmoSecret.FOLLY_SM).setBeam().setLife(100).setVel(2F).setGrav(0.015D).setRenderRotations(false).setSpectral(true).setDoesPenetrate(true)
folly_sm = new BulletConfig().setItem(EnumAmmoSecret.FOLLY_SM).setupDamageClass(DamageClass.SUBATOMIC).setBeam().setLife(100).setVel(2F).setGrav(0.015D).setRenderRotations(false).setSpectral(true).setDoesPenetrate(true)
.setOnUpdate(LAMBDA_SM_UPDATE);
folly_nuke = new BulletConfig().setItem(EnumAmmoSecret.FOLLY_NUKE).setChunkloading().setLife(600).setVel(4F).setGrav(0.015D)
.setOnImpact(LAMBDA_NUKE_IMPACT);

View File

@ -988,6 +988,7 @@ public class ResourceManager {
public static final ResourceLocation liberator_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/liberator.png");
public static final ResourceLocation flamethrower_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flamethrower.png");
public static final ResourceLocation flamethrower_topaz_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flamethrower_topaz.png");
public static final ResourceLocation flamethrower_daybreaker_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flamethrower_daybreaker.png");
public static final ResourceLocation mike_hawk_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lag.png");
public static final ResourceLocation uzi_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/uzi.png");
public static final ResourceLocation panzerschreck_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/panzerschreck.png");

View File

@ -2,6 +2,7 @@ package com.hbm.render.item.weapon.sedna;
import org.lwjgl.opengl.GL11;
import com.hbm.items.ModItems;
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
import com.hbm.items.weapon.sedna.mags.IMagazine;
import com.hbm.main.MainRegistry;
@ -63,6 +64,7 @@ public class ItemRenderFlamer extends ItemRenderWeaponBase {
GL11.glPushMatrix();
HbmAnimations.applyRelevantTransformation("Gun");
ResourceManager.flamethrower.renderPart("Gun");
if(hasShield(stack)) ResourceManager.flamethrower.renderPart("HeatShield");
GL11.glPopMatrix();
GL11.glPushMatrix();
@ -70,7 +72,6 @@ public class ItemRenderFlamer extends ItemRenderWeaponBase {
ResourceManager.flamethrower.renderPart("Tank");
GL11.glPopMatrix();
GL11.glPushMatrix();
HbmAnimations.applyRelevantTransformation("Gauge");
GL11.glTranslated(1.25, 1.25, 0);
@ -111,6 +112,11 @@ public class ItemRenderFlamer extends ItemRenderWeaponBase {
ResourceManager.flamethrower.renderPart("Gun");
ResourceManager.flamethrower.renderPart("Tank");
ResourceManager.flamethrower.renderPart("Gauge");
if(hasShield(stack)) ResourceManager.flamethrower.renderPart("HeatShield");
GL11.glShadeModel(GL11.GL_FLAT);
}
public boolean hasShield(ItemStack stack) {
return stack.getItem() == ModItems.gun_flamer_daybreaker;
}
}

View File

@ -33,6 +33,15 @@ public class DamageResistanceHandler {
public static HashMap<Item, ResistanceStats> itemStats = new HashMap();
public static HashMap<Quartet<Item, Item, Item, Item>, ResistanceStats> setStats = new HashMap();
public static HashMap<Class<? extends Entity>, ResistanceStats> entityStats = new HashMap();
public static enum DamageClass {
PHYSICAL,
FIRE,
EXPLOSIVE,
ELECTRIC,
LASER,
SUBATOMIC
}
public static void init() {
entityStats.put(EntityCreeper.class, new ResistanceStats().add(KEY_EXPLOSION, 2F, 0.5F));

View File

@ -48,6 +48,7 @@ public class EntityDamageUtil {
if(ForgeHooks.onLivingAttack(living, source, amount) && allowSpecialCancel) return false;
if(living.isEntityInvulnerable()) return false;
if(living.worldObj.isRemote) return false;
if(living instanceof EntityPlayer && ((EntityPlayer) living).capabilities.disableDamage && !source.canHarmInCreative()) return false;
living.entityAge = 0;
if(living.getHealth() <= 0.0F) return false;
@ -151,8 +152,6 @@ public class EntityDamageUtil {
float armor = amount * (float) i;
damageArmorNT(living, amount);
amount = armor / 25.0F;
//TODO: special handling depending on armor stats
}
return amount;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB