From 8fb37c1c0a66bc332c22a69180e98fea4f73459e Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 7 Feb 2022 16:46:30 -0500 Subject: [PATCH] WIP 3rd core unit --- .../assets-raw/sprites/units/emanate-cell.png | Bin 0 -> 517 bytes core/assets-raw/sprites/units/emanate.png | Bin 1187 -> 1527 bytes core/src/mindustry/content/UnitTypes.java | 85 ++++++++---------- .../world/blocks/defense/BaseShield.java | 3 +- .../world/blocks/units/UnitAssembler.java | 2 +- 5 files changed, 39 insertions(+), 51 deletions(-) create mode 100644 core/assets-raw/sprites/units/emanate-cell.png diff --git a/core/assets-raw/sprites/units/emanate-cell.png b/core/assets-raw/sprites/units/emanate-cell.png new file mode 100644 index 0000000000000000000000000000000000000000..101a01b9ece24d3beadc5827f0a1c73671f2e64f GIT binary patch literal 517 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 BH#-0T diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index bdfa246088..02462592d1 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -3189,7 +3189,7 @@ public class UnitTypes{ mineFloor = false; mineHardnessScaling = false; flying = true; - mineSpeed = 4f; + mineSpeed = 5f; mineTier = 4; buildSpeed = 1.1f; drag = 0.08f; @@ -3241,67 +3241,54 @@ public class UnitTypes{ envDisabled = 0; lowAltitude = false; - flying = true; - targetAir = false; mineWalls = true; mineFloor = false; mineHardnessScaling = false; + flying = true; mineSpeed = 6f; mineTier = 4; - buildSpeed = 2f; - drag = 0.06f; - speed = 2.6f; - rotateSpeed = 3f; - accel = 0.11f; - itemCapacity = 140; - health = 1300f; + buildSpeed = 1.4f; + drag = 0.08f; + speed = 7.1f; + rotateSpeed = 8f; + accel = 0.08f; + itemCapacity = 110; + health = 700f; armor = 3f; - hitSize = 36f; - buildBeamOffset = 72f / 4f; - engineSize = 0; - payloadCapacity = Mathf.sqr(3f) * tilePayload; + hitSize = 12f; - drawBuildBeam = false; - rotateToBuilding = false; - - float es = 3.8f; + engineOffset = 7.4f; + engineSize = 3.3f; setEnginesMirror( - new UnitEngine(49 / 4f, 51 / 4f, es, 45f), - new UnitEngine(67 / 4f, -30 / 4f, es, 315f), - new UnitEngine(49 / 4f, -62 / 4f, es, 315f) + new UnitEngine(34 / 4f, -12 / 4f, 2.7f, 315f), + new UnitEngine(27 / 4f, -34 / 4f, 2.7f, 315f) ); - //TODO repair weapon - Vec2[] positions = {/*new Vec2(30f, 50f), */new Vec2(60f, -15f)}; - int i = 0; + weapons.add(new RepairBeamWeapon(){{ + reload = 25f; + x = 19f/4f; + y = 19f/4f; + rotate = false; + shootY = 0f; + beamWidth = 0.7f; + repairSpeed = 0.2f; + aimDst = 0f; + shootCone = 16f; + fractionRepair = true; + mirror = true; - for(var pos : positions){ - int fi = i; - //TODO change to BuildWeapon properly, remove standard build beam and rotation - weapons.add(new BuildWeapon("incite-weapon"){{ - rotate = true; - reload = fi == 0 ? 25f : 35f; - rotateSpeed = 7f; - x = pos.x/4f; - y = pos.y/4f; - shootY = 5.75f; - recoil = 2f; + targetUnits = false; + targetBuildings = true; + autoTarget = false; + controllable = true; + laserColor = Pal.accent; + healColor = Pal.accent; - bullet = new BasicBulletType(5f, 17){{ - width = 7f; - height = 12f; - shootEffect = Fx.sparkShoot; - smokeEffect = Fx.shootBigSmoke; - hitColor = backColor = trailColor = Pal.bulletYellowBack; - frontColor = Color.white; - trailWidth = 1.5f; - trailLength = 7; - hitEffect = despawnEffect = Fx.hitBulletColor; - }}; - }}); - i ++; - } + bullet = new BulletType(){{ + maxRange = 65f; + }}; + }}); }}; //endregion diff --git a/core/src/mindustry/world/blocks/defense/BaseShield.java b/core/src/mindustry/world/blocks/defense/BaseShield.java index 7c9305efbe..7e69e659f0 100644 --- a/core/src/mindustry/world/blocks/defense/BaseShield.java +++ b/core/src/mindustry/world/blocks/defense/BaseShield.java @@ -16,6 +16,7 @@ import static mindustry.Vars.*; public class BaseShield extends Block{ //TODO game rule? or field? should vary by base. public float radius = 200f; + public int sides = 24; protected static BaseShieldBuild paramBuild; //protected static Effect paramEffect; @@ -119,7 +120,7 @@ public class BaseShield extends Block{ Draw.color(team.color, Color.white, Mathf.clamp(hit)); if(renderer.animateShields){ - Fill.circle(x, y, radius); + Fill.poly(x, y, sides, radius); }else{ Lines.stroke(1.5f); Draw.alpha(0.09f + Mathf.clamp(0.08f * hit)); diff --git a/core/src/mindustry/world/blocks/units/UnitAssembler.java b/core/src/mindustry/world/blocks/units/UnitAssembler.java index 882c4f93c6..f22cd0de96 100644 --- a/core/src/mindustry/world/blocks/units/UnitAssembler.java +++ b/core/src/mindustry/world/blocks/units/UnitAssembler.java @@ -284,7 +284,7 @@ public class UnitAssembler extends PayloadBlock{ units.removeAll(u -> !u.isAdded() || u.dead || !(u.controller() instanceof AssemblerAI)); - powerWarmup = Mathf.lerpDelta(powerWarmup, efficiency(), 0.1f); + powerWarmup = Mathf.lerpDelta(powerWarmup, efficiency() > 0.0001f ? 1f : 0f, 0.1f); droneWarmup = Mathf.lerpDelta(droneWarmup, units.size < dronesCreated ? efficiency() : 0f, 0.1f); totalDroneProgress += droneWarmup * Time.delta;