From 3e302c53253e7083a5a96ec8efb8afab690f908a Mon Sep 17 00:00:00 2001 From: Ovulam5480 <128120266+Ovulam5480@users.noreply.github.com> Date: Sun, 6 Apr 2025 10:57:57 +0800 Subject: [PATCH] Quality of life for mixed tech (#10590) * Quality of life for mixed tech * Revert timescaleDamage * Revert ShockwaveTower control --- core/src/mindustry/content/Blocks.java | 2 ++ core/src/mindustry/entities/comp/BuildingComp.java | 2 +- core/src/mindustry/entities/comp/UnitComp.java | 2 +- .../mindustry/world/blocks/defense/ShockwaveTower.java | 9 +++++++++ .../world/blocks/defense/turrets/ContinuousTurret.java | 2 +- .../world/blocks/defense/turrets/TractorBeamTurret.java | 2 +- .../mindustry/world/blocks/payloads/PayloadConveyor.java | 8 ++++++++ .../mindustry/world/blocks/production/WallCrafter.java | 2 +- 8 files changed, 24 insertions(+), 5 deletions(-) diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 90637218ea..78cb094ffb 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -4319,6 +4319,7 @@ public class Blocks{ knockback = 1f; pierceCap = 2; buildingDamageMultiplier = 0.3f; + timescaleDamage = true; colors = new Color[]{Color.valueOf("eb7abe").a(0.55f), Color.valueOf("e189f5").a(0.7f), Color.valueOf("907ef7").a(0.8f), Color.valueOf("91a4ff"), Color.white}; }}, @@ -4329,6 +4330,7 @@ public class Blocks{ knockback = 2f; pierceCap = 3; buildingDamageMultiplier = 0.3f; + timescaleDamage = true; colors = new Color[]{Color.valueOf("465ab8").a(0.55f), Color.valueOf("66a6d2").a(0.7f), Color.valueOf("89e8b6").a(0.8f), Color.valueOf("cafcbe"), Color.white}; flareColor = Color.valueOf("89e8b6"); diff --git a/core/src/mindustry/entities/comp/BuildingComp.java b/core/src/mindustry/entities/comp/BuildingComp.java index b6f2be2763..e27f6cea06 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -2011,7 +2011,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, case powerNetCapacity -> power == null ? 0 : power.graph.getLastCapacity(); case enabled -> enabled ? 1 : 0; case controlled -> this instanceof ControlBlock c && c.isControlled() ? GlobalVars.ctrlPlayer : 0; - case payloadCount -> getPayload() != null ? 1 : 0; + case payloadCount -> (getPayloads() != null ? getPayloads().total() : 0) + (getPayload() != null ? 1 : 0); case size -> block.size; case cameraX, cameraY, cameraWidth, cameraHeight -> this instanceof ControlBlock c ? c.unit().sense(sensor) : 0; default -> Float.NaN; //gets converted to null in logic diff --git a/core/src/mindustry/entities/comp/UnitComp.java b/core/src/mindustry/entities/comp/UnitComp.java index e71bce0169..e9e15b85fd 100644 --- a/core/src/mindustry/entities/comp/UnitComp.java +++ b/core/src/mindustry/entities/comp/UnitComp.java @@ -284,7 +284,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I controller instanceof CommandAI command && command.hasCommand() ? ctrlCommand : 0; case payloadCount -> ((Object)this) instanceof Payloadc pay ? pay.payloads().size : 0; - case totalPayload -> ((Object)this) instanceof Payloadc pay ? pay.payloadUsed() : 0; + case totalPayload -> ((Object)this) instanceof Payloadc pay ? pay.payloadUsed() / (tilesize * tilesize) : 0; case payloadCapacity -> type.payloadCapacity / tilePayload; case size -> hitSize / tilesize; case color -> Color.toDoubleBits(team.color.r, team.color.g, team.color.b, 1f); diff --git a/core/src/mindustry/world/blocks/defense/ShockwaveTower.java b/core/src/mindustry/world/blocks/defense/ShockwaveTower.java index 383ae3c6ca..2181bf7d7d 100644 --- a/core/src/mindustry/world/blocks/defense/ShockwaveTower.java +++ b/core/src/mindustry/world/blocks/defense/ShockwaveTower.java @@ -13,6 +13,7 @@ import mindustry.entities.*; import mindustry.game.EventType.*; import mindustry.gen.*; import mindustry.graphics.*; +import mindustry.logic.LAccess; import mindustry.world.*; import mindustry.world.meta.*; @@ -103,6 +104,14 @@ public class ShockwaveTower extends Block{ heat = Mathf.clamp(heat - Time.delta / reload * cooldownMultiplier); } + + @Override + public double sense(LAccess sensor) { + if(sensor == LAccess.progress) return reloadCounter / reload; + return super.sense(sensor); + } + + @Override public float warmup(){ return heat; diff --git a/core/src/mindustry/world/blocks/defense/turrets/ContinuousTurret.java b/core/src/mindustry/world/blocks/defense/turrets/ContinuousTurret.java index 36e1b46266..e9d7e1087c 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/ContinuousTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/ContinuousTurret.java @@ -117,7 +117,7 @@ public class ContinuousTurret extends Turret{ entry.bullet.aimX = Tmp.v1.x; entry.bullet.aimY = Tmp.v1.y; if(scaleDamageEfficiency){ - entry.bullet.damage = entry.bullet.type.damage * Math.min(efficiency, 1f) * entry.bullet.damageMultiplier(); + entry.bullet.damage = entry.bullet.type.damage * Math.min(efficiency, 1f) * timeScale * entry.bullet.damageMultiplier(); } if(isShooting() && hasAmmo()){ diff --git a/core/src/mindustry/world/blocks/defense/turrets/TractorBeamTurret.java b/core/src/mindustry/world/blocks/defense/turrets/TractorBeamTurret.java index dffd95f03f..ea7b9f8a47 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/TractorBeamTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/TractorBeamTurret.java @@ -117,7 +117,7 @@ public class TractorBeamTurret extends BaseTurret{ //shoot when possible if(Angles.within(rotation, dest, shootCone)){ if(damage > 0){ - target.damageContinuous(damage * eff * state.rules.blockDamage(team)); + target.damageContinuous(damage * eff * timeScale * state.rules.blockDamage(team)); } if(status != StatusEffects.none){ diff --git a/core/src/mindustry/world/blocks/payloads/PayloadConveyor.java b/core/src/mindustry/world/blocks/payloads/PayloadConveyor.java index fb54c1721a..a2bceb9977 100644 --- a/core/src/mindustry/world/blocks/payloads/PayloadConveyor.java +++ b/core/src/mindustry/world/blocks/payloads/PayloadConveyor.java @@ -7,6 +7,7 @@ import arc.math.geom.*; import arc.util.*; import arc.util.io.*; import mindustry.annotations.Annotations.*; +import mindustry.ctype.Content; import mindustry.entities.*; import mindustry.gen.*; import mindustry.graphics.*; @@ -285,6 +286,13 @@ public class PayloadConveyor extends Block{ updatePayload(); } + @Override + public double sense(Content content){ + if(item instanceof UnitPayload up && up.unit.type == content) return 1; + if(item instanceof BuildPayload bp && bp.build.block == content) return 1; + return super.sense(content); + } + @Override public void onRemoved(){ super.onRemoved(); diff --git a/core/src/mindustry/world/blocks/production/WallCrafter.java b/core/src/mindustry/world/blocks/production/WallCrafter.java index c9e3b3abf2..df2395faa4 100644 --- a/core/src/mindustry/world/blocks/production/WallCrafter.java +++ b/core/src/mindustry/world/blocks/production/WallCrafter.java @@ -210,7 +210,7 @@ public class WallCrafter extends Block{ lastEfficiency = eff * timeScale * efficiency; if(cons && (time += edelta() * eff) >= drillTime){ - items.add(output, 1); + offload(output); time %= drillTime; }