From 38d9bc83a3bc8c9bc152d4844c89c062c086d629 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 3 Nov 2025 16:28:46 -0500 Subject: [PATCH] New serpulo core unit bullet effects --- core/assets/sounds/laserbolt.ogg | Bin 0 -> 9236 bytes core/src/mindustry/content/UnitTypes.java | 62 ++++++++++++------ core/src/mindustry/graphics/Pal.java | 1 + .../blocks/defense/turrets/BaseTurret.java | 25 ++++--- 4 files changed, 61 insertions(+), 27 deletions(-) create mode 100644 core/assets/sounds/laserbolt.ogg diff --git a/core/assets/sounds/laserbolt.ogg b/core/assets/sounds/laserbolt.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ba034545dd004ed8d7cc9287a0e7b7db66ffa310 GIT binary patch literal 9236 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 pErJ13ibcTQgoNhi=AVO~6=(IZ>+9 c instanceof ConsumeCoolant); } - //just makes things a little more convenient + checkInitCoolant(); + + if(!disableOverlapCheck){ + placeOverlapRange = Math.max(placeOverlapRange, range + placeOverlapMargin); + } + fogRadius = Math.max(Mathf.round(range / tilesize * fogRadiusMultiplier), fogRadius); + super.init(); + } + + @Override + public void reinitializeConsumers(){ + checkInitCoolant(); + + super.reinitializeConsumers(); + } + + void checkInitCoolant(){ if(coolant != null){ - //TODO coolant fix coolant.update = false; coolant.booster = true; coolant.optional = true; @@ -57,12 +72,6 @@ public class BaseTurret extends Block{ //json parsing does not add to consumes if(!hasConsumer(coolant)) consume(coolant); } - - if(!disableOverlapCheck){ - placeOverlapRange = Math.max(placeOverlapRange, range + placeOverlapMargin); - } - fogRadius = Math.max(Mathf.round(range / tilesize * fogRadiusMultiplier), fogRadius); - super.init(); } @Override