From 4030e71b313978659e9b28f0640e617d55b6c566 Mon Sep 17 00:00:00 2001 From: Matthew Peng <54301439+MEEPofFaith@users.noreply.github.com> Date: Sun, 10 Oct 2021 14:06:59 -0700 Subject: [PATCH] Customizable Force Projector Absorb Effect (#6102) * Customizable Force Projector Absorb Effect * Fix everything * Custom shield break effect --- .../mindustry/world/blocks/defense/ForceProjector.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/core/src/mindustry/world/blocks/defense/ForceProjector.java b/core/src/mindustry/world/blocks/defense/ForceProjector.java index 092d6c2520..1c712abf89 100644 --- a/core/src/mindustry/world/blocks/defense/ForceProjector.java +++ b/core/src/mindustry/world/blocks/defense/ForceProjector.java @@ -10,6 +10,7 @@ import arc.util.*; import arc.util.io.*; import mindustry.annotations.Annotations.*; import mindustry.content.*; +import mindustry.entities.*; import mindustry.gen.*; import mindustry.graphics.*; import mindustry.logic.*; @@ -31,13 +32,16 @@ public class ForceProjector extends Block{ public float cooldownNormal = 1.75f; public float cooldownLiquid = 1.5f; public float cooldownBrokenBase = 0.35f; + public Effect absorbEffect = Fx.absorb; + public Effect shieldBreakEffect = Fx.shieldBreak; public @Load("@-top") TextureRegion topRegion; static ForceBuild paramEntity; + static Effect paramEffect; static final Cons shieldConsumer = trait -> { if(trait.team != paramEntity.team && trait.type.absorbable && Intersector.isInsideHexagon(paramEntity.x, paramEntity.y, paramEntity.realRadius() * 2f, trait.x(), trait.y())){ trait.absorb(); - Fx.absorb.at(trait); + paramEffect.at(trait); paramEntity.hit = 1f; paramEntity.buildup += trait.damage(); } @@ -153,7 +157,7 @@ public class ForceProjector extends Block{ if(buildup >= shieldHealth + phaseShieldBoost * phaseHeat && !broken){ broken = true; buildup = shieldHealth; - Fx.shieldBreak.at(x, y, realRadius(), team.color); + shieldBreakEffect.at(x, y, realRadius(), team.color); } if(hit > 0f){ @@ -164,6 +168,7 @@ public class ForceProjector extends Block{ if(realRadius > 0 && !broken){ paramEntity = this; + paramEffect = absorbEffect; Groups.bullet.intersect(x - realRadius, y - realRadius, realRadius * 2f, realRadius * 2f, shieldConsumer); } }