diff --git a/core/assets-raw/sprites/blocks/drills/cliff-crusher.png b/core/assets-raw/sprites/blocks/drills/cliff-crusher.png index ba6e5f2a2e..384a6b7e92 100644 Binary files a/core/assets-raw/sprites/blocks/drills/cliff-crusher.png and b/core/assets-raw/sprites/blocks/drills/cliff-crusher.png differ diff --git a/core/assets-raw/sprites/blocks/drills/large-plasma-bore.png b/core/assets-raw/sprites/blocks/drills/large-plasma-bore.png index 4d85f46695..7fb0859b71 100644 Binary files a/core/assets-raw/sprites/blocks/drills/large-plasma-bore.png and b/core/assets-raw/sprites/blocks/drills/large-plasma-bore.png differ diff --git a/core/assets-raw/sprites/blocks/drills/plasma-bore-glow.png b/core/assets-raw/sprites/blocks/drills/plasma-bore-glow.png index c0d753b707..fbfe8c4a7a 100644 Binary files a/core/assets-raw/sprites/blocks/drills/plasma-bore-glow.png and b/core/assets-raw/sprites/blocks/drills/plasma-bore-glow.png differ diff --git a/core/assets-raw/sprites/blocks/drills/plasma-bore-top.png b/core/assets-raw/sprites/blocks/drills/plasma-bore-top.png index 27ec8788cf..4d8673451e 100644 Binary files a/core/assets-raw/sprites/blocks/drills/plasma-bore-top.png and b/core/assets-raw/sprites/blocks/drills/plasma-bore-top.png differ diff --git a/core/assets-raw/sprites/blocks/drills/plasma-bore.png b/core/assets-raw/sprites/blocks/drills/plasma-bore.png index fc0202ed77..f9d5379973 100644 Binary files a/core/assets-raw/sprites/blocks/drills/plasma-bore.png and b/core/assets-raw/sprites/blocks/drills/plasma-bore.png differ diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index d9cfd2bb5c..130e1a6cba 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -1644,6 +1644,7 @@ public class Blocks{ arrowTimeScl = 2.75f; hasPower = true; pulse = true; + envEnabled |= Env.space; consumes.power(0.30f); }}; diff --git a/core/src/mindustry/content/Planets.java b/core/src/mindustry/content/Planets.java index 8ddcb84f63..355e962995 100644 --- a/core/src/mindustry/content/Planets.java +++ b/core/src/mindustry/content/Planets.java @@ -104,6 +104,8 @@ public class Planets{ //define launch candidates after all planets initialize serpulo.launchCandidates.add(gier); + + //TODO WHAT IF THERE'S NO TRANSITION?? gier.launchCandidates.add(erekir); } diff --git a/core/src/mindustry/entities/abilities/SuppressionFieldAbility.java b/core/src/mindustry/entities/abilities/SuppressionFieldAbility.java index c97de62c22..01b13d62f6 100644 --- a/core/src/mindustry/entities/abilities/SuppressionFieldAbility.java +++ b/core/src/mindustry/entities/abilities/SuppressionFieldAbility.java @@ -9,6 +9,8 @@ import mindustry.*; import mindustry.content.*; import mindustry.gen.*; import mindustry.graphics.*; +import mindustry.world.blocks.defense.MendProjector.*; +import mindustry.world.blocks.defense.RegenProjector.*; import static mindustry.Vars.*; @@ -48,11 +50,14 @@ public class SuppressionFieldAbility extends Ability{ float prev = build.healSuppressionTime; build.applyHealSuppression(reload + 1f); - any = true; + //TODO maybe should be block field instead of instanceof check + if(build.wasRecentlyHealed(60f * 12f) || (build instanceof MendBuild || build instanceof RegenProjectorBuild)){ + any = true; - //add prev check so ability spam doesn't lead to particle spam (essentially, recently suppressed blocks don't get new particles) - if(!headless && prev - Time.time <= reload/2f){ - builds.add(build); + //add prev check so ability spam doesn't lead to particle spam (essentially, recently suppressed blocks don't get new particles) + if(!headless && prev - Time.time <= reload/2f){ + builds.add(build); + } } } }); diff --git a/core/src/mindustry/entities/comp/BuildingComp.java b/core/src/mindustry/entities/comp/BuildingComp.java index b55656f55c..c31e160f3f 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -77,6 +77,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, ConsumeModule cons; public transient float healSuppressionTime = -1f; + public transient float lastHealTime = -120f * 10f; private transient float timeScale = 1f, timeScaleDuration; private transient float dumpAccum; @@ -339,6 +340,14 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, return Time.time <= healSuppressionTime; } + public void recentlyHealed(){ + lastHealTime = Time.time; + } + + public boolean wasRecentlyHealed(float duration){ + return lastHealTime + duration >= Time.time; + } + public Building nearby(int dx, int dy){ return world.build(tile.x + dx, tile.y + dy); } diff --git a/core/src/mindustry/world/blocks/defense/MendProjector.java b/core/src/mindustry/world/blocks/defense/MendProjector.java index 5767939183..4a59734b38 100644 --- a/core/src/mindustry/world/blocks/defense/MendProjector.java +++ b/core/src/mindustry/world/blocks/defense/MendProjector.java @@ -106,6 +106,7 @@ public class MendProjector extends Block{ indexer.eachBlock(this, realRange, b -> b.damaged() && !b.isHealSuppressed(), other -> { other.heal(other.maxHealth() * (healPercent + phaseHeat * phaseBoost) / 100f * efficiency()); + other.recentlyHealed(); Fx.healBlockFull.at(other.x, other.y, other.block.size, baseColor); }); } diff --git a/core/src/mindustry/world/blocks/defense/RegenProjector.java b/core/src/mindustry/world/blocks/defense/RegenProjector.java index 95c3df59ac..46559c8cc3 100644 --- a/core/src/mindustry/world/blocks/defense/RegenProjector.java +++ b/core/src/mindustry/world/blocks/defense/RegenProjector.java @@ -134,6 +134,7 @@ public class RegenProjector extends Block{ var build = world.build(entry.key); if(build != null){ build.heal(entry.value); + build.recentlyHealed(); } } mendMap.clear();