mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
more stupid shit
This commit is contained in:
parent
dcdc2d9032
commit
38ecb23a8e
@ -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
|
||||
|
||||
@ -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));
|
||||
}
|
||||
|
||||
@ -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));
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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());
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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");
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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));
|
||||
|
||||
@ -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 |
Loading…
x
Reference in New Issue
Block a user