diff --git a/src/main/java/kamkeel/npcs/controllers/AbilityController.java b/src/main/java/kamkeel/npcs/controllers/AbilityController.java index e872251e5..9c73edc7c 100644 --- a/src/main/java/kamkeel/npcs/controllers/AbilityController.java +++ b/src/main/java/kamkeel/npcs/controllers/AbilityController.java @@ -653,13 +653,20 @@ public class AbilityController implements IAbilityHandler { Ability builtIn = builtAbilities.get(key); if (builtIn != null) return builtIn.deepCopy(); - // Built-in: case-insensitive name + // Built-in: case-insensitive map key for (Map.Entry entry : builtAbilities.entrySet()) { if (entry.getKey().equalsIgnoreCase(key)) { return entry.getValue().deepCopy(); } } + // Built-in: by ability name (name may differ from map key, e.g. "Ki Fist" vs "ki_fist") + for (Ability ability : builtAbilities.values()) { + if (ability.getName() != null && ability.getName().equalsIgnoreCase(key)) { + return ability.deepCopy(); + } + } + // Built-in: registry key / ID for (Ability ability : builtAbilities.values()) { if (ability.getId() != null && ability.getId().equalsIgnoreCase(key)) { diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyLifespanData.java b/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyLifespanData.java index a18a91021..cce2a8283 100644 --- a/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyLifespanData.java +++ b/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyLifespanData.java @@ -8,7 +8,7 @@ import noppes.npcs.api.ability.data.IEnergyLifespanData; * Used as a parameter object for entity constructors and ability configuration. */ public class EnergyLifespanData implements IEnergyLifespanData { - public float maxDistance = 30.0f; + public float maxDistance = 150.0f; public int maxLifetime = 200; public EnergyLifespanData() { diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityBeam.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityBeam.java index c565ac9fc..ca1e1ac47 100644 --- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityBeam.java +++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityBeam.java @@ -38,7 +38,7 @@ public class AbilityBeam extends AbilityEnergyProjectile impl new EnergyDisplayData(0xFFFFFF, 0x00AAFF, true, 0.4f, 0.5f, 6.0f), new EnergyCombatData(10.0f, 1.5f, 0.2f, false, 4.0f, 0.5f), new EnergyHomingData(0.4f, true, 0.1f, 15.0f), - new EnergyLifespanData(25.0f, 200) + new EnergyLifespanData(150.0f, 200) ); this.typeId = "ability.cnpc.beam"; this.name = "Beam"; diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityDisc.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityDisc.java index dc6b18add..0fd8b494c 100644 --- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityDisc.java +++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityDisc.java @@ -40,7 +40,7 @@ public class AbilityDisc extends AbilityEnergyProjectile impl new EnergyDisplayData(0xFFFFFF, 0xFF8800, true, 0.4f, 0.5f, 5.0f), new EnergyCombatData(8.0f, 1.2f, 0.15f, false, 3.0f, 0.5f), new EnergyHomingData(0.6f, true, 0.12f, 18.0f), - new EnergyLifespanData(35.0f, 200) + new EnergyLifespanData(150.0f, 200) ); this.typeId = "ability.cnpc.disc"; this.name = "Disc"; diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityLaserShot.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityLaserShot.java index 51f3da8ca..91467556a 100644 --- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityLaserShot.java +++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityLaserShot.java @@ -40,7 +40,7 @@ public class AbilityLaserShot extends AbilityEnergyProjectile { new EnergyDisplayData(0xFF4444, 0xFF0000, true, 0.2f, 0.6f, 0.0f), new EnergyCombatData(12.0f, 0.5f, 0.0f, false, 3.0f, 0.5f), new EnergyHomingData(0.8f, false, 0.0f, 0.0f), - new EnergyLifespanData(40.0f, 100) + new EnergyLifespanData(150.0f, 100) ); this.typeId = "ability.cnpc.slicer"; this.name = "Slicer"; diff --git a/src/main/java/noppes/npcs/AbstractDataAbilities.java b/src/main/java/noppes/npcs/AbstractDataAbilities.java index dea49be68..c31154bc3 100644 --- a/src/main/java/noppes/npcs/AbstractDataAbilities.java +++ b/src/main/java/noppes/npcs/AbstractDataAbilities.java @@ -861,8 +861,8 @@ public abstract class AbstractDataAbilities { return false; } - // If windUpAll=false, force windup to 0 (skip individual windups) - if (!currentChain.isWindUpAll()) { + // If windUpAll=false, only the first ability windups; subsequent abilities skip windup + if (!currentChain.isWindUpAll() && chainEntryIndex > 0) { ability.setWindUpTicks(0); }