diff --git a/core/assets-raw/sprites/units/emanate.png b/core/assets-raw/sprites/units/emanate.png index 73dc16d4ff..3a1bbb40bd 100644 Binary files a/core/assets-raw/sprites/units/emanate.png and b/core/assets-raw/sprites/units/emanate.png differ diff --git a/core/assets-raw/sprites/units/evoke.png b/core/assets-raw/sprites/units/evoke.png index 01d7d777bb..11e8f689fa 100644 Binary files a/core/assets-raw/sprites/units/evoke.png and b/core/assets-raw/sprites/units/evoke.png differ diff --git a/core/assets-raw/sprites/units/incite.png b/core/assets-raw/sprites/units/incite.png index a316eb6ebb..84da4c8278 100644 Binary files a/core/assets-raw/sprites/units/incite.png and b/core/assets-raw/sprites/units/incite.png differ diff --git a/core/assets-raw/sprites/units/weapons/build-weapon.png b/core/assets-raw/sprites/units/weapons/build-weapon.png new file mode 100644 index 0000000000..30591fa51f Binary files /dev/null and b/core/assets-raw/sprites/units/weapons/build-weapon.png differ diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index 02462592d1..9dc92b446c 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -3153,6 +3153,7 @@ public class UnitTypes{ ); weapons.add(new RepairBeamWeapon(){{ + widthSinMag = 0.11f; reload = 25f; x = 0f; y = 6.5f; @@ -3205,13 +3206,14 @@ public class UnitTypes{ engineSize = 3.1f; setEnginesMirror( - new UnitEngine(27 / 4f, -1 / 4f, 2.4f, 315f) + new UnitEngine(25 / 4f, -1 / 4f, 2.4f, 300f) ); weapons.add(new RepairBeamWeapon(){{ + widthSinMag = 0.11f; reload = 25f; x = 0f; - y = 6.5f; + y = 7.5f; rotate = false; shootY = 0f; beamWidth = 0.7f; @@ -3232,6 +3234,17 @@ public class UnitTypes{ maxRange = 60f; }}; }}); + + drawBuildBeam = false; + + weapons.add(new BuildWeapon("build-weapon"){{ + rotate = true; + rotateSpeed = 7f; + x = 14/4f; + y = 15/4f; + layerOffset = -0.001f; + shootY = 3f; + }}); }}; emanate = new ErekirUnitType("emanate"){{ @@ -3249,7 +3262,7 @@ public class UnitTypes{ mineTier = 4; buildSpeed = 1.4f; drag = 0.08f; - speed = 7.1f; + speed = 7.2f; rotateSpeed = 8f; accel = 0.08f; itemCapacity = 110; @@ -3257,15 +3270,16 @@ public class UnitTypes{ armor = 3f; hitSize = 12f; - engineOffset = 7.4f; - engineSize = 3.3f; + engineOffset = 7.5f; + engineSize = 3.4f; setEnginesMirror( - new UnitEngine(34 / 4f, -12 / 4f, 2.7f, 315f), - new UnitEngine(27 / 4f, -34 / 4f, 2.7f, 315f) + new UnitEngine(35 / 4f, -13 / 4f, 2.7f, 315f), + new UnitEngine(28 / 4f, -35 / 4f, 2.7f, 315f) ); weapons.add(new RepairBeamWeapon(){{ + widthSinMag = 0.11f; reload = 25f; x = 19f/4f; y = 19f/4f; diff --git a/core/src/mindustry/type/weapons/RepairBeamWeapon.java b/core/src/mindustry/type/weapons/RepairBeamWeapon.java index 7014830d21..fa6d21a869 100644 --- a/core/src/mindustry/type/weapons/RepairBeamWeapon.java +++ b/core/src/mindustry/type/weapons/RepairBeamWeapon.java @@ -30,6 +30,7 @@ public class RepairBeamWeapon extends Weapon{ public float beamWidth = 1f; public float pulseRadius = 6f; public float pulseStroke = 2f; + public float widthSinMag = 0f, widthSinScl = 4f; public TextureRegion laser, laserEnd, laserTop, laserTopEnd; @@ -157,7 +158,7 @@ public class RepairBeamWeapon extends Weapon{ float z = Draw.z(); RepairPoint.drawBeam(wx, wy, unit.rotation + mount.rotation, shootY, unit.id, mount.target == null || controllable ? null : (Sized)mount.target, unit.team, heal.strength, - pulseStroke, pulseRadius, beamWidth, heal.lastEnd, heal.offset, laserColor, laserTopColor, + pulseStroke, pulseRadius, beamWidth + Mathf.absin(widthSinScl, widthSinMag), heal.lastEnd, heal.offset, laserColor, laserTopColor, laser, laserEnd, laserTop, laserTopEnd); Draw.z(z); } diff --git a/core/src/mindustry/world/blocks/defense/BaseShield.java b/core/src/mindustry/world/blocks/defense/BaseShield.java index 9bfe3e972c..6989525569 100644 --- a/core/src/mindustry/world/blocks/defense/BaseShield.java +++ b/core/src/mindustry/world/blocks/defense/BaseShield.java @@ -80,17 +80,16 @@ public class BaseShield extends Block{ @Override public void updateTile(){ - //TODO smooth radius - float radius = radius(); - broken = efficiency() <= 0.0001f; smoothRadius = Mathf.lerpDelta(smoothRadius, radius * efficiency(), 0.04f); - if(radius > 0 && !broken){ + float rad = radius(); + + if(rad > 0 && !broken){ paramBuild = this; //paramEffect = absorbEffect; - Groups.bullet.intersect(x - radius, y - radius, radius * 2f, radius * 2f, bulletConsumer); - Units.nearbyEnemies(team, x, y, radius + 10f, unitConsumer); + Groups.bullet.intersect(x - rad, y - rad, rad * 2f, rad * 2f, bulletConsumer); + Units.nearbyEnemies(team, x, y, rad + 10f, unitConsumer); } }