From 770d8506c5022d942e32dfe3108ce586c7ffc6fd Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 20 Jan 2021 12:31:35 -0500 Subject: [PATCH] MoveLightning ability bullet support --- core/src/mindustry/content/Blocks.java | 2 +- .../abilities/MoveLightningAbility.java | 32 +++++++++++++------ 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 51dc090787..4e6719473b 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -1312,7 +1312,7 @@ public class Blocks implements ContentList{ }}; waterExtractor = new SolidPump("water-extractor"){{ - requirements(Category.production, with(Items.copper, 25, Items.graphite, 25, Items.lead, 20)); + requirements(Category.production, with(Items.copper, 30, Items.graphite, 30, Items.lead, 30)); result = Liquids.water; pumpAmount = 0.11f; size = 2; diff --git a/core/src/mindustry/entities/abilities/MoveLightningAbility.java b/core/src/mindustry/entities/abilities/MoveLightningAbility.java index d03f08b01a..4cc62b7172 100644 --- a/core/src/mindustry/entities/abilities/MoveLightningAbility.java +++ b/core/src/mindustry/entities/abilities/MoveLightningAbility.java @@ -1,31 +1,35 @@ package mindustry.entities.abilities; import arc.*; +import arc.audio.*; import arc.graphics.*; import arc.graphics.g2d.*; import arc.math.*; import arc.util.*; -import arc.audio.*; import mindustry.content.*; import mindustry.entities.*; +import mindustry.entities.bullet.*; import mindustry.gen.*; -import mindustry.graphics.*; public class MoveLightningAbility extends Ability{ - //Lightning damage + /** Lightning damage */ public float damage = 35f; - //Chance of firing every tick. Set >= 1 to always fire lightning every tick at max speed. + /** Chance of firing every tick. Set >= 1 to always fire lightning every tick at max speed. */ public float chance = 0.15f; - //Length of the lightning + /** Length of the lightning. <= 0 to disable */ public int length = 12; - //Speeds for when to start lightninging and when to stop getting faster + /** Speeds for when to start lightninging and when to stop getting faster */ public float minSpeed = 0.8f, maxSpeed = 1.2f; - //Lightning color + /** Lightning color */ public Color color = Color.valueOf("a9d8ff"); - //Shifts where the lightning spawns along the Y axis + /** Shifts where the lightning spawns along the Y axis */ public float offset = 0f; - //Jittering heat sprite like the shield on v5 Javelin + /** Jittering heat sprite like the shield on v5 Javelin */ public String heatRegion = "error"; + /** Bullet type that is fired. Can be null */ + public @Nullable BulletType bullet; + /** Bullet angle parameters */ + public float bulletAngle = 0f, bulletSpread = 0f; public Effect shootEffect = Fx.sparkShoot; public Sound shootSound = Sounds.spark; @@ -58,9 +62,17 @@ public class MoveLightningAbility extends Ability{ float scl = Mathf.clamp((unit.vel().len() - minSpeed) / (maxSpeed - minSpeed)); if(Mathf.chance(Time.delta * chance * scl)){ float x = unit.x + Angles.trnsx(unit.rotation, offset, 0), y = unit.y + Angles.trnsy(unit.rotation, offset, 0); + shootEffect.at(x, y, unit.rotation, color); - Lightning.create(unit.team, color, damage, x + unit.vel.x, y + unit.vel.y, unit.rotation, length); shootSound.at(unit); + + if(length > 0){ + Lightning.create(unit.team, color, damage, x + unit.vel.x, y + unit.vel.y, unit.rotation, length); + } + + if(bullet != null){ + bullet.create(unit, unit.team, x, y, unit.rotation + bulletAngle + Mathf.range(bulletSpread)); + } } }