From 502816d210334c13b41c6d0fa9cbaa932b6d46cd Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 22 Aug 2021 15:41:03 -0400 Subject: [PATCH] New mech drowning algorithm --- core/src/mindustry/content/UnitTypes.java | 3 ++- core/src/mindustry/entities/comp/FlyingComp.java | 4 +--- core/src/mindustry/entities/comp/MechComp.java | 16 ++++++++++++++++ 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index be2226f77d..3b3fb5b50b 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -170,6 +170,7 @@ public class UnitTypes implements ContentList{ mechStepParticles = true; mechStepShake = 0.15f; singleTarget = true; + drownTimeMultiplier = 4f; weapons.add( new Weapon("scepter-weapon"){{ @@ -227,7 +228,7 @@ public class UnitTypes implements ContentList{ armor = 14f; mechStepParticles = true; mechStepShake = 0.75f; - canDrown = false; + drownTimeMultiplier = 6f; mechFrontSway = 1.9f; mechSideSway = 0.6f; ammoType = new ItemAmmoType(Items.thorium); diff --git a/core/src/mindustry/entities/comp/FlyingComp.java b/core/src/mindustry/entities/comp/FlyingComp.java index 48436457d1..a1e11c5a49 100644 --- a/core/src/mindustry/entities/comp/FlyingComp.java +++ b/core/src/mindustry/entities/comp/FlyingComp.java @@ -44,9 +44,7 @@ abstract class FlyingComp implements Posc, Velc, Healthc, Hitboxc{ return isGrounded() && !hovering; } - //TODO - @Nullable - Floor drownFloor(){ + @Nullable Floor drownFloor(){ return canDrown() ? floorOn() : null; } diff --git a/core/src/mindustry/entities/comp/MechComp.java b/core/src/mindustry/entities/comp/MechComp.java index bd822d523b..18ffc784a7 100644 --- a/core/src/mindustry/entities/comp/MechComp.java +++ b/core/src/mindustry/entities/comp/MechComp.java @@ -10,6 +10,7 @@ import mindustry.entities.*; import mindustry.gen.*; import mindustry.type.*; import mindustry.world.*; +import mindustry.world.blocks.environment.*; import static mindustry.Vars.*; @@ -62,6 +63,21 @@ abstract class MechComp implements Posc, Flyingc, Hitboxc, Unitc, Mechc, Elevati walkExtension = extendScl; } + @Replace + @Override + public @Nullable Floor drownFloor(){ + //large mechs can only drown when all the nearby floors are deep + if(hitSize >= 12 && canDrown()){ + for(Point2 p : Geometry.d8){ + Floor f = world.floorWorld(x + p.x * tilesize, y + p.y * tilesize); + if(!f.isDeep()){ + return null; + } + } + } + return canDrown() ? floorOn() : null; + } + public float walkExtend(boolean scaled){ //now ranges from -maxExtension to maxExtension*3