From c98db84315d40968faa38227fc074e632495a6ba Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 26 Feb 2022 13:17:39 -0500 Subject: [PATCH] Latum mostly done --- core/assets-raw/sprites/units/latum-spine.png | Bin 0 -> 215 bytes core/assets-raw/sprites/units/latum.png | Bin 1373 -> 1414 bytes .../units/weapons/latum-point-defense.png | Bin 0 -> 345 bytes .../units/weapons/latum-weapon-heat.png | Bin 0 -> 470 bytes .../sprites/units/weapons/latum-weapon.png | Bin 0 -> 268 bytes core/src/mindustry/content/Blocks.java | 40 ++++----- core/src/mindustry/content/UnitTypes.java | 81 ++++++++++++++---- .../src/mindustry/entities/part/DrawPart.java | 16 ++++ .../type/weapons/PointDefenseWeapon.java | 2 + .../blocks/defense/turrets/LaserTurret.java | 12 +-- .../defense/turrets/PointDefenseTurret.java | 10 +-- .../blocks/defense/turrets/ReloadTurret.java | 12 +-- .../world/blocks/defense/turrets/Turret.java | 20 ++--- 13 files changed, 127 insertions(+), 66 deletions(-) create mode 100644 core/assets-raw/sprites/units/latum-spine.png create mode 100644 core/assets-raw/sprites/units/weapons/latum-point-defense.png create mode 100644 core/assets-raw/sprites/units/weapons/latum-weapon-heat.png create mode 100644 core/assets-raw/sprites/units/weapons/latum-weapon.png diff --git a/core/assets-raw/sprites/units/latum-spine.png b/core/assets-raw/sprites/units/latum-spine.png new file mode 100644 index 0000000000000000000000000000000000000000..6a42960bf91bb95629c52bdc730a8c35b5448a27 GIT binary patch literal 215 zcmeAS@N?(olHy`uVBq!ia0y~yV9;P-U=ZYBV_;xd-~En*fq{XsILO_JVcj{ImkbOH z6FprVLp(Z@6C_v{Cx|>??YUxf;r=;Lf&E-LA&+y!d5TP6QfoxiM-oFie`I!Zl&R SY(oYH1_n=8KbLh*2~7a7_(`n* literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/units/latum.png b/core/assets-raw/sprites/units/latum.png index 4b41161e67be0fb3215b1cb50780316cd603db30..41eb9027260dd5b95a6eeabac041c35c2fd05394 100644 GIT binary patch literal 1414 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 literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/units/weapons/latum-weapon.png b/core/assets-raw/sprites/units/weapons/latum-weapon.png new file mode 100644 index 0000000000000000000000000000000000000000..7133cb1d879760d882ea43d51b92444262acbd89 GIT binary patch literal 268 zcmeAS@N?(olHy`uVBq!ia0y~yU=U|uV36WqV_;y2*>b#&fq{XsILO_JVcj{ImkbOH z$2?seLp(Z@6C_xbnPY1H|NnpV`~Uyn*VKHRA7ebDK(gnI`gNu?ZOP0}A{@3nd=lYs zp&;D6aFedWsi!BzY^>~>71u9l)ZpGAWw(8!;A+6FSov;zI9bia zAZc@lR-3VbfkDpgUDE`o%P=!DJG({k#8vKT3qH)$v<)OxQOTaXgw08;zbTP}LC_%5 W=*p5=^BEWz7(8A5T-G@yGywoCB4Z~2 literal 0 HcmV?d00001 diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 800af43cfb..c8f6915c5c 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -2731,7 +2731,7 @@ public class Blocks{ }}; shootY = 3f; - reloadTime = 20f; + reload = 20f; restitution = 0.03f; range = 110; shootCone = 15f; @@ -2751,7 +2751,7 @@ public class Blocks{ Items.lead, Bullets.flakLead, Items.metaglass, Bullets.flakGlass ); - reloadTime = 18f; + reload = 18f; range = 220f; size = 2; targetGround = false; @@ -2778,7 +2778,7 @@ public class Blocks{ Items.pyratite, Bullets.pyraFlame ); recoilAmount = 0f; - reloadTime = 6f; + reload = 6f; coolantMultiplier = 1.5f; range = 60f; shootCone = 50f; @@ -2797,7 +2797,7 @@ public class Blocks{ Items.pyratite, Bullets.artilleryIncendiary ); targetAir = false; - reloadTime = 60f; + reload = 60f; recoilAmount = 2f; range = 235f; inaccuracy = 1f; @@ -2818,7 +2818,7 @@ public class Blocks{ ); size = 2; recoilAmount = 0f; - reloadTime = 3f; + reload = 3f; inaccuracy = 5f; shootCone = 50f; liquidCapacity = 10f; @@ -2836,7 +2836,7 @@ public class Blocks{ shoot.firstShotDelay = 40f; recoilAmount = 2f; - reloadTime = 80f; + reload = 80f; cooldown = 0.03f; shootShake = 2f; shootEffect = Fx.lancerLaserShoot; @@ -2874,7 +2874,7 @@ public class Blocks{ collidesAir = false; ammoMultiplier = 1f; }}; - reloadTime = 35f; + reload = 35f; shootCone = 40f; rotateSpeed = 8f; targetAir = false; @@ -2920,7 +2920,7 @@ public class Blocks{ }}; shootY = 7f; - reloadTime = 30f; + reload = 30f; inaccuracy = 10f; range = 240f; size = 2; @@ -2944,7 +2944,7 @@ public class Blocks{ size = 2; range = 190f; - reloadTime = 31f; + reload = 31f; restitution = 0.03f; ammoEjectBack = 3f; cooldown = 0.03f; @@ -2971,7 +2971,7 @@ public class Blocks{ size = 2; shootLength = 5f; bulletDamage = 30f; - reloadTime = 8f; + reload = 8f; envEnabled |= Env.space; }}; @@ -2984,7 +2984,7 @@ public class Blocks{ Liquids.oil, Bullets.heavyOilShot ); size = 3; - reloadTime = 3f; + reload = 3f; shoot.shots = 2; velocityInaccuracy = 0.1f; inaccuracy = 4f; @@ -3001,7 +3001,7 @@ public class Blocks{ fuse = new ItemTurret("fuse"){{ requirements(Category.turret, with(Items.copper, 225, Items.graphite, 225, Items.thorium, 100)); - reloadTime = 35f; + reload = 35f; shootShake = 4f; range = 90f; recoilAmount = 5f; @@ -3054,7 +3054,7 @@ public class Blocks{ size = 3; shoot.shots = 4; inaccuracy = 12f; - reloadTime = 60f; + reload = 60f; ammoEjectBack = 5f; ammoUseEffect = Fx.casing3Double; ammoPerShot = 2; @@ -3087,7 +3087,7 @@ public class Blocks{ -3f, 0f, 0f, }; }}; - reloadTime = 8f; + reload = 8f; range = 200f; size = 3; recoilAmount = 3f; @@ -3124,7 +3124,7 @@ public class Blocks{ maxAmmo = 40; ammoPerShot = 5; rotateSpeed = 2f; - reloadTime = 200f; + reload = 200f; ammoUseEffect = Fx.casing3Double; recoilAmount = 5f; restitution = 0.009f; @@ -3150,7 +3150,7 @@ public class Blocks{ Items.pyratite, Bullets.standardIncendiaryBig, Items.thorium, Bullets.standardThoriumBig ); - reloadTime = 7f; + reload = 7f; coolantMultiplier = 0.5f; restitution = 0.1f; ammoUseEffect = Fx.casing3; @@ -3179,7 +3179,7 @@ public class Blocks{ size = 4; shootShake = 2f; range = 195f; - reloadTime = 90f; + reload = 90f; firingMoveFract = 0.5f; shootDuration = 230f; shootSound = Sounds.laserbig; @@ -3253,7 +3253,7 @@ public class Blocks{ outlineColor = Pal.darkOutline; size = 3; envEnabled |= Env.space; - reloadTime = 40f; + reload = 40f; recoilAmount = 2f; restitution = 0.03f; range = 190; @@ -3380,7 +3380,7 @@ public class Blocks{ targetAir = false; shootShake = 4f; recoilAmount = 1f; - reloadTime = 60f * 2.3f; + reload = 60f * 2.3f; shootY = 7f; rotateSpeed = 1.4f; minWarmup = 0.85f; @@ -3453,7 +3453,7 @@ public class Blocks{ }}); - reloadTime = 9f; + reload = 9f; shootY = 15f; rotateSpeed = 5f; shootCone = 30f; diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index feca1ba06a..97c765ccd8 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -2477,7 +2477,7 @@ public class UnitTypes{ treadPullOffset = 5; speed = 0.7f; rotateSpeed = 2.6f; - health = 800; + health = 2000; armor = 7f; areaDamage = 8f; treadRects = new Rect[]{new Rect(17, 10, 19, 76)}; @@ -2778,7 +2778,8 @@ public class UnitTypes{ drag = 0.1f; hitSize = 14f; rotateSpeed = 3f; - health = 700; + health = 1100; + armor = 5f; legCount = 4; legLength = 14f; @@ -2793,28 +2794,70 @@ public class UnitTypes{ legMoveSpace = 1f; hovering = true; - armor = 5f; visualElevation = 0.2f; groundLayer = Layer.legUnit - 1f; - if(false) - weapons.add(new Weapon("eruption"){{ - top = false; - shootY = 3f; - reload = 9f; - ejectEffect = Fx.none; - recoil = 1f; - x = 7f; - shootSound = Sounds.flame; + for(int i = 0; i < 5; i++){ + int fi = i; + parts.add(new RegionPart("-spine"){{ + y = 21f / 4f - 45f / 4f * fi / 4f; + moveX = 21f / 4f + Mathf.slope(fi / 4f) * 1.25f; + moveRot = 10f - fi * 14f; + float fin = fi / 4f; + progress = PartProgress.reload.inv().mul(1.3f).add(0.1f).sustain(fin * 0.34f, 0.14f, 0.14f); + layerOffset = -0.001f; + mirror = true; + }}); + } - bullet = new LiquidBulletType(Liquids.slag){{ - damage = 13; - speed = 2.5f; - drag = 0.009f; - shootEffect = Fx.shootSmall; - lifetime = 57f; - collidesAir = false; + weapons.add(new Weapon("latum-weapon"){{ + x = 14f / 4f; + y = 33f / 4f; + reload = 30f; + layerOffset = -0.002f; + alternate = false; + heatColor = Color.red; + cooldownTime = 25f; + smoothReloadSpeed = 0.15f; + recoil = 2f; + + bullet = new BasicBulletType(3.5f, 40){{ + backColor = trailColor = hitColor = Pal.techBlue; + frontColor = Color.white; + width = 7.5f; + height = 10f; + lifetime = 55f; + trailWidth = 2f; + trailLength = 4; + shake = 0.5f; + recoil = 0.1f; + + trailEffect = Fx.missileTrail; + trailParam = 1.8f; + trailInterval = 8f; + + hitEffect = despawnEffect = Fx.hitBulletColor; + shootEffect = new MultiEffect(Fx.shootBigColor, Fx.hitLaserColor); + smokeEffect = Fx.shootSmallSmoke; + ammoMultiplier = 2; + }}; + }}); + + weapons.add(new PointDefenseWeapon("latum-point-defense"){{ + x = 16f / 4f; + y = -20f / 4f; + reload = 10f; + + targetInterval = 9f; + targetSwitchInterval = 12f; + recoil = 0.5f; + + bullet = new BulletType(){{ + shootEffect = Fx.sparkShoot; + hitEffect = Fx.pointHit; + maxRange = 100f; + damage = 30f; }}; }}); }}; diff --git a/core/src/mindustry/entities/part/DrawPart.java b/core/src/mindustry/entities/part/DrawPart.java index a8ed826082..91eea27882 100644 --- a/core/src/mindustry/entities/part/DrawPart.java +++ b/core/src/mindustry/entities/part/DrawPart.java @@ -3,6 +3,7 @@ package mindustry.entities.part; import arc.graphics.g2d.*; import arc.math.*; import arc.struct.*; +import arc.util.*; public abstract class DrawPart{ public static final PartParams params = new PartParams(); @@ -88,6 +89,10 @@ public abstract class DrawPart{ return p -> get(p) + amount; } + default PartProgress add(PartProgress other){ + return p -> get(p) + other.get(p); + } + default PartProgress delay(float amount){ return p -> (get(p) - amount) / (1f - amount); } @@ -96,6 +101,13 @@ public abstract class DrawPart{ return p -> (get(p) - offset) / duration; } + default PartProgress sustain(float offset, float grow, float sustain){ + return p -> { + float val = get(p) - offset; + return Math.min(Math.max(val, 0f) / grow, (grow + sustain + grow - val) / grow); + }; + } + default PartProgress shorten(float amount){ return p -> get(p) / (1f - amount); } @@ -116,6 +128,10 @@ public abstract class DrawPart{ return p -> Math.min(get(p), other.get(p)); } + default PartProgress sin(float offset, float scl, float mag){ + return p -> get(p) + Mathf.sin(Time.time + offset, scl, mag); + } + default PartProgress sin(float scl, float mag){ return p -> get(p) + Mathf.sin(scl, mag); } diff --git a/core/src/mindustry/type/weapons/PointDefenseWeapon.java b/core/src/mindustry/type/weapons/PointDefenseWeapon.java index 2cf6d6a612..d953c837c2 100644 --- a/core/src/mindustry/type/weapons/PointDefenseWeapon.java +++ b/core/src/mindustry/type/weapons/PointDefenseWeapon.java @@ -58,5 +58,7 @@ public class PointDefenseWeapon extends Weapon{ bullet.shootEffect.at(shootX, shootY, rotation, color); bullet.hitEffect.at(target.x, target.y, color); shootSound.at(shootX, shootY, Mathf.random(0.9f, 1.1f)); + mount.recoil = recoil; + mount.heat = 1f; } } diff --git a/core/src/mindustry/world/blocks/defense/turrets/LaserTurret.java b/core/src/mindustry/world/blocks/defense/turrets/LaserTurret.java index 3250841238..cc3973486c 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/LaserTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/LaserTurret.java @@ -26,7 +26,7 @@ public class LaserTurret extends PowerTurret{ super.setStats(); stats.remove(Stat.booster); - stats.add(Stat.input, StatValues.boosters(reloadTime, coolant.amount, coolantMultiplier, false, this::consumesLiquid)); + stats.add(Stat.input, StatValues.boosters(reload, coolant.amount, coolantMultiplier, false, this::consumesLiquid)); } public class LaserTurretBuild extends PowerTurretBuild{ @@ -66,13 +66,13 @@ public class LaserTurret extends PowerTurret{ wasShooting = true; heat = 1f; recoil = recoilAmount; - }else if(reload > 0){ + }else if(reloadCounter > 0){ wasShooting = true; //TODO does not handle multi liquid req? Liquid liquid = liquids.current(); float maxUsed = coolant.amount; float used = (cheating() ? maxUsed : Math.min(liquids.get(liquid), maxUsed)) * delta(); - reload -= used * liquid.heatCapacity * coolantMultiplier; + reloadCounter -= used * liquid.heatCapacity * coolantMultiplier; liquids.remove(liquid, used); if(Mathf.chance(0.06 * used)){ @@ -83,7 +83,7 @@ public class LaserTurret extends PowerTurret{ @Override public float progress(){ - return 1f - Mathf.clamp(reload / reloadTime); + return 1f - Mathf.clamp(reloadCounter / reload); } @Override @@ -97,12 +97,12 @@ public class LaserTurret extends PowerTurret{ return; } - if(reload <= 0 && efficiency > 0 && !charging() && shootWarmup >= minWarmup){ + if(reloadCounter <= 0 && efficiency > 0 && !charging() && shootWarmup >= minWarmup){ BulletType type = peekAmmo(); shoot(type); - reload = reloadTime; + reloadCounter = reload; } } diff --git a/core/src/mindustry/world/blocks/defense/turrets/PointDefenseTurret.java b/core/src/mindustry/world/blocks/defense/turrets/PointDefenseTurret.java index ca3e012598..311c4b537d 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/PointDefenseTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/PointDefenseTurret.java @@ -35,7 +35,7 @@ public class PointDefenseTurret extends ReloadTurret{ super(name); rotateSpeed = 20f; - reloadTime = 30f; + reload = 30f; coolantMultiplier = 2f; } @@ -49,7 +49,7 @@ public class PointDefenseTurret extends ReloadTurret{ public void setStats(){ super.setStats(); - stats.add(Stat.reload, 60f / reloadTime, StatUnit.perSecond); + stats.add(Stat.reload, 60f / reload, StatUnit.perSecond); } public class PointDefenseBuild extends ReloadTurretBuild{ @@ -76,10 +76,10 @@ public class PointDefenseTurret extends ReloadTurret{ if(target != null && target.within(this, range) && target.team != team && target.type() != null && target.type().hittable){ float dest = angleTo(target); rotation = Angles.moveToward(rotation, dest, rotateSpeed * edelta()); - reload += edelta(); + reloadCounter += edelta(); //shoot when possible - if(Angles.within(rotation, dest, shootCone) && reload >= reloadTime){ + if(Angles.within(rotation, dest, shootCone) && reloadCounter >= reload){ if(target.damage() > bulletDamage){ target.damage(target.damage() - bulletDamage); }else{ @@ -92,7 +92,7 @@ public class PointDefenseTurret extends ReloadTurret{ shootEffect.at(x + Tmp.v1.x, y + Tmp.v1.y, rotation, color); hitEffect.at(target.x, target.y, color); shootSound.at(x + Tmp.v1.x, y + Tmp.v1.y, Mathf.random(0.9f, 1.1f)); - reload = 0; + reloadCounter = 0; } } } diff --git a/core/src/mindustry/world/blocks/defense/turrets/ReloadTurret.java b/core/src/mindustry/world/blocks/defense/turrets/ReloadTurret.java index 260b60efa6..f167b312ce 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/ReloadTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/ReloadTurret.java @@ -7,7 +7,7 @@ import mindustry.world.meta.*; import static mindustry.Vars.*; public class ReloadTurret extends BaseTurret{ - public float reloadTime = 10f; + public float reload = 10f; public ReloadTurret(String name){ super(name); @@ -18,25 +18,25 @@ public class ReloadTurret extends BaseTurret{ super.setStats(); if(coolant != null){ - stats.add(Stat.booster, StatValues.boosters(reloadTime, coolant.amount, coolantMultiplier, true, l -> l.coolant && consumesLiquid(l))); + stats.add(Stat.booster, StatValues.boosters(reload, coolant.amount, coolantMultiplier, true, l -> l.coolant && consumesLiquid(l))); } } public class ReloadTurretBuild extends BaseTurretBuild{ - public float reload; + public float reloadCounter; @Override public void created(){ super.created(); //for visual reasons, the turret does not need reloading when placed - reload = reloadTime; + reloadCounter = reload; } protected void updateCooling(){ - if(reload < reloadTime && coolant != null && coolant.efficiency(this) > 0){ + if(reloadCounter < reload && coolant != null && coolant.efficiency(this) > 0){ float capacity = coolant instanceof ConsumeLiquidFilter filter ? filter.getConsumed(this).heatCapacity : 1f; coolant.update(this); - reload += coolant.amount * edelta() * capacity * coolantMultiplier; + reloadCounter += coolant.amount * edelta() * capacity * coolantMultiplier; if(Mathf.chance(0.06 * coolant.amount)){ coolEffect.at(x + Mathf.range(size * tilesize / 2f), y + Mathf.range(size * tilesize / 2f)); diff --git a/core/src/mindustry/world/blocks/defense/turrets/Turret.java b/core/src/mindustry/world/blocks/defense/turrets/Turret.java index 5b777ef3d1..79ec8768fb 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/Turret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/Turret.java @@ -107,7 +107,7 @@ public class Turret extends ReloadTurret{ super.setStats(); stats.add(Stat.inaccuracy, (int)inaccuracy, StatUnit.degrees); - stats.add(Stat.reload, 60f / (reloadTime) * shoot.shots, StatUnit.perSecond); + stats.add(Stat.reload, 60f / (reload) * shoot.shots, StatUnit.perSecond); stats.add(Stat.targetsAir, targetAir); stats.add(Stat.targetsGround, targetGround); if(ammoPerShot != 1) stats.add(Stat.ammoUse, ammoPerShot, StatUnit.perShot); @@ -180,7 +180,7 @@ public class Turret extends ReloadTurret{ public float estimateDps(){ if(!hasAmmo()) return 0f; - return shoot.shots / reloadTime * 60f * peekAmmo().estimateDPS() * efficiency * timeScale; + return shoot.shots / reload * 60f * peekAmmo().estimateDPS() * efficiency * timeScale; } @Override @@ -252,7 +252,7 @@ public class Turret extends ReloadTurret{ @Override public float progress(){ - return Mathf.clamp(reload / reloadTime); + return Mathf.clamp(reloadCounter / reload); } public boolean isShooting(){ @@ -332,7 +332,7 @@ public class Turret extends ReloadTurret{ updateReload(); if(hasAmmo()){ - if(Float.isNaN(reload)) reload = 0; + if(Float.isNaN(reloadCounter)) reloadCounter = 0; if(timer(timerTarget, targetInterval)){ findTarget(); @@ -451,20 +451,20 @@ public class Turret extends ReloadTurret{ protected void updateReload(){ float multiplier = hasAmmo() ? peekAmmo().reloadMultiplier : 1f; - reload += delta() * multiplier * baseReloadSpeed(); + reloadCounter += delta() * multiplier * baseReloadSpeed(); //cap reload for visual reasons - reload = Math.min(reload, reloadTime); + reloadCounter = Math.min(reloadCounter, reload); } protected void updateShooting(){ - if(reload >= reloadTime && !charging() && shootWarmup >= minWarmup){ + if(reloadCounter >= reload && !charging() && shootWarmup >= minWarmup){ BulletType type = peekAmmo(); shoot(type); - reload %= reloadTime; + reloadCounter %= reload; } } @@ -530,7 +530,7 @@ public class Turret extends ReloadTurret{ @Override public void write(Writes write){ super.write(write); - write.f(reload); + write.f(reloadCounter); write.f(rotation); } @@ -539,7 +539,7 @@ public class Turret extends ReloadTurret{ super.read(read, revision); if(revision >= 1){ - reload = read.f(); + reloadCounter = read.f(); rotation = read.f(); } }