diff --git a/core/src/io/anuke/mindustry/content/AmmoTypes.java b/core/src/io/anuke/mindustry/content/AmmoTypes.java index c4f6302682..b889cc8963 100644 --- a/core/src/io/anuke/mindustry/content/AmmoTypes.java +++ b/core/src/io/anuke/mindustry/content/AmmoTypes.java @@ -1,5 +1,7 @@ package io.anuke.mindustry.content; +import io.anuke.mindustry.content.bullets.ShellBullets; +import io.anuke.mindustry.content.bullets.StandardBullets; import io.anuke.mindustry.content.bullets.TurretBullets; import io.anuke.mindustry.content.fx.ShootFx; import io.anuke.mindustry.type.AmmoType; @@ -8,91 +10,91 @@ public class AmmoTypes { //TODO add definitions for all ammo types public static final AmmoType - basicIron = new AmmoType(Items.iron, TurretBullets.basicIron, 5){{ + basicIron = new AmmoType(Items.iron, StandardBullets.basicIron, 5){{ shootEffect = ShootFx.shootSmall; smokeEffect = ShootFx.shootSmallSmoke; }}, - basicLead = new AmmoType(Items.lead, TurretBullets.basicIron, 5){{ + basicLead = new AmmoType(Items.lead, StandardBullets.basicLead, 5){{ shootEffect = ShootFx.shootSmall; smokeEffect = ShootFx.shootSmallSmoke; }}, - basicLeadFlak = new AmmoType(Items.lead, TurretBullets.basicIron, 5){{ + standardLead = new AmmoType(AmmoItems.leadBullet, StandardBullets.standardLead, 5){{ shootEffect = ShootFx.shootSmall; smokeEffect = ShootFx.shootSmallSmoke; }}, - standardLead = new AmmoType(AmmoItems.leadBullet, TurretBullets.basicIron, 5){{ - shootEffect = ShootFx.shootSmall; - smokeEffect = ShootFx.shootSmallSmoke; - }}, - - standardLeadFlak = new AmmoType(AmmoItems.leadBullet, TurretBullets.basicIron, 5){{ - shootEffect = ShootFx.shootSmall; - smokeEffect = ShootFx.shootSmallSmoke; - }}, - - compositeFlak = new AmmoType(AmmoItems.compositeFlak, TurretBullets.basicIron, 5){{ - shootEffect = ShootFx.shootSmall; - smokeEffect = ShootFx.shootSmallSmoke; - }}, - - standardArmorPiercing = new AmmoType(AmmoItems.armorPiercingBullet, TurretBullets.basicSteel, 5){{ + standardArmorPiercing = new AmmoType(AmmoItems.armorPiercingBullet, StandardBullets.standardArmorPiercing, 5){{ shootEffect = ShootFx.shootBig; smokeEffect = ShootFx.shootBigSmoke; }}, - homing = new AmmoType(AmmoItems.homingBullet, TurretBullets.basicSteel, 5){{ + standardHoming = new AmmoType(AmmoItems.homingBullet, StandardBullets.standardHoming, 5){{ shootEffect = ShootFx.shootBig; smokeEffect = ShootFx.shootBigSmoke; }}, - tracer = new AmmoType(AmmoItems.tracerBullet, TurretBullets.basicSteel, 5){{ + standardTracer = new AmmoType(AmmoItems.tracerBullet, StandardBullets.standardTracer, 5){{ shootEffect = ShootFx.shootBig; smokeEffect = ShootFx.shootBigSmoke; }}, + basicLeadFlak = new AmmoType(Items.lead, StandardBullets.basicLeadFlak, 5){{ + shootEffect = ShootFx.shootSmall; + smokeEffect = ShootFx.shootSmallSmoke; + }}, + + standardLeadFlak = new AmmoType(AmmoItems.leadBullet, StandardBullets.standardLeadFlak, 5){{ + shootEffect = ShootFx.shootSmall; + smokeEffect = ShootFx.shootSmallSmoke; + }}, + + compositeFlak = new AmmoType(AmmoItems.compositeFlak, StandardBullets.compositeFlak, 5){{ + shootEffect = ShootFx.shootSmall; + smokeEffect = ShootFx.shootSmallSmoke; + }}, + basicFlame = new AmmoType(Liquids.oil, TurretBullets.basicFlame, 0.3f){{ shootEffect = ShootFx.shootSmallFlame; }}, - basicLeadShell = new AmmoType(Items.lead, TurretBullets.basicLeadFragShell, 1){{ + basicLeadShell = new AmmoType(Items.lead, ShellBullets.basicLeadShell, 1){{ shootEffect = ShootFx.shootBig2; smokeEffect = ShootFx.shootBigSmoke2; }}, - explosiveFragShell = new AmmoType(AmmoItems.explosiveShell, TurretBullets.basicLeadFragShell, 1){{ + explosiveFragShell = new AmmoType(AmmoItems.explosiveShell, ShellBullets.explosiveShell, 1){{ shootEffect = ShootFx.shootBig2; smokeEffect = ShootFx.shootBigSmoke2; }}, - fragShell = new AmmoType(AmmoItems.fragShell, TurretBullets.basicLeadFragShell, 1){{ + fragShell = new AmmoType(AmmoItems.fragShell, ShellBullets.fragShell, 1){{ shootEffect = ShootFx.shootBig2; smokeEffect = ShootFx.shootBigSmoke2; }}, - standardThoriumShell = new AmmoType(AmmoItems.thoriumShell, TurretBullets.basicLeadFragShell, 1){{ + standardThoriumShell = new AmmoType(AmmoItems.thoriumShell, ShellBullets.thoriumShell, 1){{ shootEffect = ShootFx.shootBig2; smokeEffect = ShootFx.shootBigSmoke2; }}, - swarmMissile = new AmmoType(AmmoItems.swarmMissile, TurretBullets.basicLeadFragShell, 1){{ + swarmMissile = new AmmoType(AmmoItems.swarmMissile, ShellBullets.swarmMissile, 1){{ shootEffect = ShootFx.shootBig2; smokeEffect = ShootFx.shootBigSmoke2; }}, - scytheMissile = new AmmoType(AmmoItems.scytheMissile, TurretBullets.basicLeadFragShell, 1){{ + scytheMissile = new AmmoType(AmmoItems.scytheMissile, ShellBullets.scytheMissile, 1){{ shootEffect = ShootFx.shootBig2; smokeEffect = ShootFx.shootBigSmoke2; }}, - incendiaryMortar = new AmmoType(AmmoItems.incendiaryMortarShell, TurretBullets.basicLeadFragShell, 1){{ + incendiaryMortar = new AmmoType(AmmoItems.incendiaryMortarShell, ShellBullets.incendiaryMortar, 1){{ shootEffect = ShootFx.shootBig2; smokeEffect = ShootFx.shootBigSmoke2; }}, - surgeMortar = new AmmoType(AmmoItems.surgeMortarShell, TurretBullets.basicLeadFragShell, 1){{ + surgeMortar = new AmmoType(AmmoItems.surgeMortarShell, ShellBullets.surgeMortar, 1){{ shootEffect = ShootFx.shootBig2; smokeEffect = ShootFx.shootBigSmoke2; }}, diff --git a/core/src/io/anuke/mindustry/content/blocks/WeaponBlocks.java b/core/src/io/anuke/mindustry/content/blocks/WeaponBlocks.java index 6a8ad70aa9..53ba3d4c54 100644 --- a/core/src/io/anuke/mindustry/content/blocks/WeaponBlocks.java +++ b/core/src/io/anuke/mindustry/content/blocks/WeaponBlocks.java @@ -15,7 +15,7 @@ public class WeaponBlocks{ public static Block duo = new DoubleTurret("duo"){{ - ammoTypes = new AmmoType[]{AmmoTypes.basicIron, AmmoTypes.basicLead, AmmoTypes.standardLead, AmmoTypes.tracer}; + ammoTypes = new AmmoType[]{AmmoTypes.basicIron, AmmoTypes.basicLead, AmmoTypes.standardLead, AmmoTypes.standardTracer}; reload = 25f; restitution = 0.03f; ammoUseEffect = ShootFx.shellEjectSmall; diff --git a/core/src/io/anuke/mindustry/content/bullets/ShellBullets.java b/core/src/io/anuke/mindustry/content/bullets/ShellBullets.java new file mode 100644 index 0000000000..926912d6cf --- /dev/null +++ b/core/src/io/anuke/mindustry/content/bullets/ShellBullets.java @@ -0,0 +1,166 @@ +package io.anuke.mindustry.content.bullets; + +import io.anuke.mindustry.content.fx.BulletFx; +import io.anuke.mindustry.content.fx.Fx; +import io.anuke.mindustry.entities.bullet.BasicBulletType; +import io.anuke.mindustry.entities.bullet.BulletType; + +public class ShellBullets { + public static final BulletType + + basicLeadShell = new BasicBulletType(3f, 0) { + { + hiteffect = BulletFx.flakExplosion; + knockback = 0.8f; + lifetime = 90f; + drag = 0.01f; + bulletWidth = bulletHeight = 9f; + fragBullet = basicLeadShard; + bulletSprite = "frag"; + bulletShrink = 0.1f; + } + }, + + basicLeadShard = new BasicBulletType(3f, 0) { + { + drag = 0.1f; + hiteffect = Fx.none; + despawneffect = Fx.none; + hitsize = 4; + lifetime = 20f; + bulletWidth = 9f; + bulletHeight = 11f; + bulletShrink = 1f; + } + }, + + explosiveShell = new BasicBulletType(3f, 0) { + { + hiteffect = BulletFx.flakExplosion; + knockback = 0.8f; + lifetime = 90f; + drag = 0.01f; + bulletWidth = bulletHeight = 9f; + fragBullet = basicLeadShard; + bulletSprite = "frag"; + bulletShrink = 0.1f; + } + }, + + explosiveShard = new BasicBulletType(3f, 0) { + { + drag = 0.1f; + hiteffect = Fx.none; + despawneffect = Fx.none; + hitsize = 4; + lifetime = 20f; + bulletWidth = 9f; + bulletHeight = 11f; + bulletShrink = 1f; + } + }, + + fragShell = new BasicBulletType(3f, 0) { + { + hiteffect = BulletFx.flakExplosion; + knockback = 0.8f; + lifetime = 90f; + drag = 0.01f; + bulletWidth = bulletHeight = 9f; + fragBullet = basicLeadShard; + bulletSprite = "frag"; + bulletShrink = 0.1f; + } + }, + + fragShard = new BasicBulletType(3f, 0) { + { + drag = 0.1f; + hiteffect = Fx.none; + despawneffect = Fx.none; + hitsize = 4; + lifetime = 20f; + bulletWidth = 9f; + bulletHeight = 11f; + bulletShrink = 1f; + } + }, + + thoriumShell = new BasicBulletType(3f, 0) { + { + hiteffect = BulletFx.flakExplosion; + knockback = 0.8f; + lifetime = 90f; + drag = 0.01f; + bulletWidth = bulletHeight = 9f; + fragBullet = basicLeadShard; + bulletSprite = "frag"; + bulletShrink = 0.1f; + } + }, + + thoriumShard = new BasicBulletType(3f, 0) { + { + drag = 0.1f; + hiteffect = Fx.none; + despawneffect = Fx.none; + hitsize = 4; + lifetime = 20f; + bulletWidth = 9f; + bulletHeight = 11f; + bulletShrink = 1f; + } + }, + + swarmMissile = new BasicBulletType(3f, 0) { + { + hiteffect = BulletFx.flakExplosion; + knockback = 0.8f; + lifetime = 90f; + drag = 0.01f; + bulletWidth = bulletHeight = 9f; + fragBullet = basicLeadShard; + bulletSprite = "frag"; + bulletShrink = 0.1f; + } + }, + + scytheMissile = new BasicBulletType(3f, 0) { + { + hiteffect = BulletFx.flakExplosion; + knockback = 0.8f; + lifetime = 90f; + drag = 0.01f; + bulletWidth = bulletHeight = 9f; + fragBullet = basicLeadShard; + bulletSprite = "frag"; + bulletShrink = 0.1f; + } + }, + + incendiaryMortar = new BasicBulletType(3f, 0) { + { + hiteffect = BulletFx.flakExplosion; + knockback = 0.8f; + lifetime = 90f; + drag = 0.01f; + bulletWidth = bulletHeight = 9f; + fragBullet = basicLeadShard; + bulletSprite = "frag"; + bulletShrink = 0.1f; + } + }, + + surgeMortar = new BasicBulletType(3f, 0) { + { + hiteffect = BulletFx.flakExplosion; + knockback = 0.8f; + lifetime = 90f; + drag = 0.01f; + bulletWidth = bulletHeight = 9f; + fragBullet = basicLeadShard; + bulletSprite = "frag"; + bulletShrink = 0.1f; + } + }; +} diff --git a/core/src/io/anuke/mindustry/content/bullets/StandardBullets.java b/core/src/io/anuke/mindustry/content/bullets/StandardBullets.java new file mode 100644 index 0000000000..29ed855d4f --- /dev/null +++ b/core/src/io/anuke/mindustry/content/bullets/StandardBullets.java @@ -0,0 +1,71 @@ +package io.anuke.mindustry.content.bullets; + +import io.anuke.mindustry.entities.bullet.BasicBulletType; +import io.anuke.mindustry.entities.bullet.BulletType; + +public class StandardBullets { + public static final BulletType + + basicIron = new BasicBulletType(3f, 5) { + { + bulletWidth = 7f; + bulletHeight = 9f; + } + }, + + basicLead = new BasicBulletType(3f, 5) { + { + bulletWidth = 7f; + bulletHeight = 9f; + } + }, + + standardLead = new BasicBulletType(3f, 5) { + { + bulletWidth = 7f; + bulletHeight = 9f; + } + }, + + standardArmorPiercing = new BasicBulletType(3f, 5) { + { + bulletWidth = 7f; + bulletHeight = 9f; + } + }, + + standardHoming = new BasicBulletType(3f, 5) { + { + bulletWidth = 7f; + bulletHeight = 9f; + } + }, + + standardTracer = new BasicBulletType(3f, 5) { + { + bulletWidth = 7f; + bulletHeight = 9f; + } + }, + + basicLeadFlak = new BasicBulletType(3f, 5) { + { + bulletWidth = 7f; + bulletHeight = 9f; + } + }, + + standardLeadFlak = new BasicBulletType(3f, 5) { + { + bulletWidth = 7f; + bulletHeight = 9f; + } + }, + + compositeFlak = new BasicBulletType(3f, 5) { + { + bulletWidth = 7f; + bulletHeight = 9f; + } + }; +} diff --git a/core/src/io/anuke/mindustry/content/bullets/TurretBullets.java b/core/src/io/anuke/mindustry/content/bullets/TurretBullets.java index 4d184ab9e4..280655fdc9 100644 --- a/core/src/io/anuke/mindustry/content/bullets/TurretBullets.java +++ b/core/src/io/anuke/mindustry/content/bullets/TurretBullets.java @@ -1,31 +1,26 @@ package io.anuke.mindustry.content.bullets; import com.badlogic.gdx.graphics.Color; -import com.badlogic.gdx.math.GridPoint2; import io.anuke.mindustry.content.Liquids; import io.anuke.mindustry.content.StatusEffects; import io.anuke.mindustry.content.fx.BulletFx; import io.anuke.mindustry.content.fx.EnvironmentFx; import io.anuke.mindustry.content.fx.Fx; -import io.anuke.mindustry.entities.bullet.BasicBulletType; import io.anuke.mindustry.entities.bullet.Bullet; import io.anuke.mindustry.entities.bullet.BulletType; +import io.anuke.mindustry.entities.bullet.LiquidBulletType; import io.anuke.mindustry.entities.effect.DamageArea; import io.anuke.mindustry.entities.effect.Fire; import io.anuke.mindustry.entities.effect.Lightning; -import io.anuke.mindustry.entities.effect.Puddle; import io.anuke.mindustry.graphics.Palette; -import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.Tile; import io.anuke.ucore.core.Effects; import io.anuke.ucore.core.Timers; import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.graphics.Fill; import io.anuke.ucore.graphics.Lines; -import io.anuke.ucore.util.Geometry; import io.anuke.ucore.util.Mathf; -import static io.anuke.mindustry.Vars.tilesize; import static io.anuke.mindustry.Vars.world; public class TurretBullets { @@ -71,49 +66,6 @@ public class TurretBullets { } }, - basicIron = new BasicBulletType(3f, 5) { - { - bulletWidth = 7f; - bulletHeight = 9f; - } - }, - - basicSteel = new BasicBulletType(6f, 0) { - { - hiteffect = BulletFx.hitBulletBig; - knockback = 0.5f; - bulletWidth = 9f; - bulletHeight = 11f; - } - }, - - basicLeadFragShell = new BasicBulletType(3f, 0) { - { - hiteffect = BulletFx.flakExplosion; - knockback = 0.8f; - lifetime = 90f; - drag = 0.01f; - bulletWidth = bulletHeight = 9f; - fragBullet = basicLeadFrag; - bulletSprite = "frag"; - bulletShrink = 0.1f; - } - }, - - basicLeadFrag = new BasicBulletType(3f, 0) { - { - drag = 0.1f; - hiteffect = Fx.none; - despawneffect = Fx.none; - hitsize = 4; - lifetime = 20f; - bulletWidth = 9f; - bulletHeight = 11f; - bulletShrink = 1f; - //todo scaling - } - }, - basicFlame = new BulletType(2f, 0) { { hitsize = 7f; @@ -165,20 +117,20 @@ public class TurretBullets { } }, - waterShot = new LiquidShot(Liquids.water) { + waterShot = new LiquidBulletType(Liquids.water) { { status = StatusEffects.wet; statusIntensity = 0.5f; knockback = 0.65f; } }, - cryoShot = new LiquidShot(Liquids.cryofluid) { + cryoShot = new LiquidBulletType(Liquids.cryofluid) { { status = StatusEffects.freezing; statusIntensity = 0.5f; } }, - lavaShot = new LiquidShot(Liquids.lava) { + lavaShot = new LiquidBulletType(Liquids.lava) { { damage = 4; speed = 1.9f; @@ -187,7 +139,7 @@ public class TurretBullets { statusIntensity = 0.5f; } }, - oilShot = new LiquidShot(Liquids.oil) { + oilShot = new LiquidBulletType(Liquids.oil) { { speed = 2f; drag = 0.03f; @@ -203,49 +155,11 @@ public class TurretBullets { } @Override - public void draw(Bullet b) { - - } + public void draw(Bullet b) {} @Override public void init(Bullet b) { Lightning.create(b.team, hiteffect, Palette.lancerLaser, damage, b.x, b.y, b.angle(), 30); } }; - - private abstract static class LiquidShot extends BulletType{ - Liquid liquid; - - public LiquidShot(Liquid liquid) { - super(2.5f, 0); - this.liquid = liquid; - - lifetime = 70f; - despawneffect = Fx.none; - hiteffect = BulletFx.hitLiquid; - drag = 0.01f; - knockback = 0.5f; - } - - @Override - public void draw(Bullet b) { - Draw.color(liquid.color, Color.WHITE, b.fout() / 100f + Mathf.randomSeedRange(b.id, 0.1f)); - - Fill.circle(b.x, b.y, 0.5f + b.fout()*2.5f); - } - - @Override - public void hit(Bullet b, float hitx, float hity) { - Effects.effect(hiteffect, liquid.color, hitx, hity); - Puddle.deposit(world.tileWorld(hitx, hity), liquid, 5f); - - if(liquid.temperature <= 0.5f && liquid.flammability < 0.3f){ - float intensity = 400f; - Fire.extinguish(world.tileWorld(hitx, hity), intensity); - for(GridPoint2 p : Geometry.d4){ - Fire.extinguish(world.tileWorld(hitx + p.x*tilesize, hity + p.y*tilesize), intensity); - } - } - } - } } diff --git a/core/src/io/anuke/mindustry/content/bullets/UnitBullets.java b/core/src/io/anuke/mindustry/content/bullets/UnitBullets.java deleted file mode 100644 index 888d4e50b9..0000000000 --- a/core/src/io/anuke/mindustry/content/bullets/UnitBullets.java +++ /dev/null @@ -1,4 +0,0 @@ -package io.anuke.mindustry.content.bullets; - -public class UnitBullets { -} diff --git a/core/src/io/anuke/mindustry/content/bullets/WeaponBullets.java b/core/src/io/anuke/mindustry/content/bullets/WeaponBullets.java deleted file mode 100644 index 1b12e70ac3..0000000000 --- a/core/src/io/anuke/mindustry/content/bullets/WeaponBullets.java +++ /dev/null @@ -1,15 +0,0 @@ -package io.anuke.mindustry.content.bullets; - -import io.anuke.mindustry.entities.bullet.Bullet; -import io.anuke.mindustry.entities.bullet.BulletType; - -public class WeaponBullets { - public static final BulletType - - none = new BulletType(0f, 0) { - @Override - public void draw(Bullet b) { - - } - }; -} diff --git a/core/src/io/anuke/mindustry/entities/Player.java b/core/src/io/anuke/mindustry/entities/Player.java index 76dd3731cb..c066a0f97f 100644 --- a/core/src/io/anuke/mindustry/entities/Player.java +++ b/core/src/io/anuke/mindustry/entities/Player.java @@ -70,6 +70,11 @@ public class Player extends Unit implements BlockBuilder { heal(); } + @Override + public float getArmor() { + return 0f; + } + @Override public void onRemoteShoot(BulletType type, float x, float y, float rotation, short data) { Weapon weapon = Upgrade.getByID(Bits.getLeftByte(data)); diff --git a/core/src/io/anuke/mindustry/entities/Unit.java b/core/src/io/anuke/mindustry/entities/Unit.java index f3e48a7d61..ca94a3fd74 100644 --- a/core/src/io/anuke/mindustry/entities/Unit.java +++ b/core/src/io/anuke/mindustry/entities/Unit.java @@ -178,6 +178,7 @@ public abstract class Unit extends SyncEntity implements SerializableEntity { public void drawUnder(){} public void drawOver(){} + public abstract float getArmor(); public abstract boolean acceptsAmmo(Item item); public abstract void addAmmo(Item item); public abstract float getMass(); diff --git a/core/src/io/anuke/mindustry/entities/bullet/BulletType.java b/core/src/io/anuke/mindustry/entities/bullet/BulletType.java index 07268afc72..28a589354b 100644 --- a/core/src/io/anuke/mindustry/entities/bullet/BulletType.java +++ b/core/src/io/anuke/mindustry/entities/bullet/BulletType.java @@ -7,10 +7,16 @@ import io.anuke.ucore.core.Effects; import io.anuke.ucore.entities.BaseBulletType; public abstract class BulletType extends BaseBulletType{ + /**Knockback in velocity.*/ public float knockback; + /**Whether this bullet hits tiles.*/ public boolean hitTiles = true; + /**Status effect applied on hit.*/ public StatusEffect status = StatusEffects.none; + /**Intensity of applied status effect in terms of duration.*/ public float statusIntensity = 0.5f; + /**What fraction of armor is pierced, 0-1*/ + public float armorPierce = 0f; public BulletType(float speed, float damage){ this.speed = speed; diff --git a/core/src/io/anuke/mindustry/entities/bullet/LiquidBulletType.java b/core/src/io/anuke/mindustry/entities/bullet/LiquidBulletType.java new file mode 100644 index 0000000000..df36debba3 --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/bullet/LiquidBulletType.java @@ -0,0 +1,53 @@ +package io.anuke.mindustry.entities.bullet; + +import com.badlogic.gdx.graphics.Color; +import com.badlogic.gdx.math.GridPoint2; +import io.anuke.mindustry.content.fx.BulletFx; +import io.anuke.mindustry.content.fx.Fx; +import io.anuke.mindustry.entities.effect.Fire; +import io.anuke.mindustry.entities.effect.Puddle; +import io.anuke.mindustry.type.Liquid; +import io.anuke.ucore.core.Effects; +import io.anuke.ucore.graphics.Draw; +import io.anuke.ucore.graphics.Fill; +import io.anuke.ucore.util.Geometry; +import io.anuke.ucore.util.Mathf; + +import static io.anuke.mindustry.Vars.tilesize; +import static io.anuke.mindustry.Vars.world; + +public class LiquidBulletType extends BulletType { + Liquid liquid; + + public LiquidBulletType(Liquid liquid) { + super(2.5f, 0); + this.liquid = liquid; + + lifetime = 70f; + despawneffect = Fx.none; + hiteffect = BulletFx.hitLiquid; + drag = 0.01f; + knockback = 0.5f; + } + + @Override + public void draw(Bullet b) { + Draw.color(liquid.color, Color.WHITE, b.fout() / 100f + Mathf.randomSeedRange(b.id, 0.1f)); + + Fill.circle(b.x, b.y, 0.5f + b.fout()*2.5f); + } + + @Override + public void hit(Bullet b, float hitx, float hity) { + Effects.effect(hiteffect, liquid.color, hitx, hity); + Puddle.deposit(world.tileWorld(hitx, hity), liquid, 5f); + + if(liquid.temperature <= 0.5f && liquid.flammability < 0.3f){ + float intensity = 400f; + Fire.extinguish(world.tileWorld(hitx, hity), intensity); + for(GridPoint2 p : Geometry.d4){ + Fire.extinguish(world.tileWorld(hitx + p.x*tilesize, hity + p.y*tilesize), intensity); + } + } + } +} diff --git a/core/src/io/anuke/mindustry/entities/units/BaseUnit.java b/core/src/io/anuke/mindustry/entities/units/BaseUnit.java index 64a90275dc..6ca757a6be 100644 --- a/core/src/io/anuke/mindustry/entities/units/BaseUnit.java +++ b/core/src/io/anuke/mindustry/entities/units/BaseUnit.java @@ -55,6 +55,11 @@ public class BaseUnit extends Unit{ this.state.set(this, state); } + @Override + public float getArmor() { + return type.armor; + } + @Override public boolean acceptsAmmo(Item item) { return type.ammo.containsKey(item) && inventory.canAcceptAmmo(type.ammo.get(item)); diff --git a/core/src/io/anuke/mindustry/entities/units/UnitType.java b/core/src/io/anuke/mindustry/entities/units/UnitType.java index d72435abe5..4976de1f3f 100644 --- a/core/src/io/anuke/mindustry/entities/units/UnitType.java +++ b/core/src/io/anuke/mindustry/entities/units/UnitType.java @@ -44,6 +44,7 @@ public abstract class UnitType { protected float maxVelocity = 5f; protected float reload = 40f; protected float retreatPercent = 0.2f; + protected float armor = 0f; protected ObjectMap ammo = new ObjectMap<>(); public UnitType(String name){