From 87e79913c50bf832065d6f647531ee39fe68446f Mon Sep 17 00:00:00 2001
From: Zerenta <80897573+Zerenta@users.noreply.github.com>
Date: Wed, 9 Aug 2023 12:36:43 -0400
Subject: [PATCH] Aegires Nerf (#8899)

* Update EnergyFieldAbility.java

Nerfs aegires. hard. 3x less healing (3% to 1%)

* Update UnitTypes.java

segments better.
reload 6 frames to 4 frames
damage 25 to 30

* Update EnergyFieldAbility.java

Ty balam

* Update UnitTypes.java

Ty balam! :D

* Update UnitTypes.java

Thanks balam :D

* Add EnergyFieldAbility.sameTypeHealMult

* Apply to aegires

Repair amount to other units is now 1.5% (50% of pre nerf)
Repair amount to aegires is now 0.75% (25% of pre nerf)

---------

Co-authored-by: BalaM314 <71201189+BalaM314@users.noreply.github.com>
---
 core/src/mindustry/content/UnitTypes.java                   | 6 ++++--
 .../mindustry/entities/abilities/EnergyFieldAbility.java    | 5 ++++-
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java
index 328c26630f..ea7d9e53d7 100644
--- a/core/src/mindustry/content/UnitTypes.java
+++ b/core/src/mindustry/content/UnitTypes.java
@@ -2153,13 +2153,15 @@ public class UnitTypes{
             abilities.add(new EnergyFieldAbility(40f, 65f, 180f){{
                 statusDuration = 60f * 6f;
                 maxTargets = 25;
+                healPercent = 1.5f;
+                sameTypeHealMult = 0.5f;
             }});
 
             for(float mountY : new float[]{-18f, 14}){
                 weapons.add(new PointDefenseWeapon("point-defense-mount"){{
                     x = 12.5f;
                     y = mountY;
-                    reload = 6f;
+                    reload = 4f;
                     targetInterval = 8f;
                     targetSwitchInterval = 8f;
 
@@ -2167,7 +2169,7 @@ public class UnitTypes{
                         shootEffect = Fx.sparkShoot;
                         hitEffect = Fx.pointHit;
                         maxRange = 180f;
-                        damage = 25f;
+                        damage = 30f;
                     }};
                 }});
             }
diff --git a/core/src/mindustry/entities/abilities/EnergyFieldAbility.java b/core/src/mindustry/entities/abilities/EnergyFieldAbility.java
index c8b2452fc3..e12a5959d0 100644
--- a/core/src/mindustry/entities/abilities/EnergyFieldAbility.java
+++ b/core/src/mindustry/entities/abilities/EnergyFieldAbility.java
@@ -29,6 +29,8 @@ public class EnergyFieldAbility extends Ability{
     public boolean targetGround = true, targetAir = true, hitBuildings = true, hitUnits = true;
     public int maxTargets = 25;
     public float healPercent = 3f;
+    /** Multiplies healing to units of the same type by this amount. */
+    public float sameTypeHealMult = 1f;
 
     public float layer = Layer.bullet - 0.001f, blinkScl = 20f, blinkSize = 0.1f;
     public float effectRadius = 5f, sectorRad = 0.14f, rotateSpeed = 0.5f;
@@ -129,7 +131,8 @@ public class EnergyFieldAbility extends Ability{
                 if(((Teamc)other).team() == unit.team){
                     if(other.damaged()){
                         anyNearby = true;
-                        other.heal(healPercent / 100f * other.maxHealth());
+                        float healMult = (other instanceof Unit u && u.type == unit.type) ? sameTypeHealMult : 1f;
+                        other.heal(healPercent / 100f * other.maxHealth() * healMult);
                         healEffect.at(other);
                         damageEffect.at(rx, ry, 0f, color, other);
                         hitEffect.at(rx, ry, unit.angleTo(other), color);