From 092b18fe95d57353d16960411e5289ac3bbfa6ef Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 12 Feb 2026 13:55:42 -0500 Subject: [PATCH] Ability Zone API --- .../npcs/api/ability/type/IAbilityHazard.java | 45 +------- .../npcs/api/ability/type/IAbilityTrap.java | 18 +-- .../npcs/api/ability/type/IAbilityZone.java | 103 ++++++++++++++++++ 3 files changed, 107 insertions(+), 59 deletions(-) create mode 100644 java/noppes/npcs/api/ability/type/IAbilityZone.java diff --git a/java/noppes/npcs/api/ability/type/IAbilityHazard.java b/java/noppes/npcs/api/ability/type/IAbilityHazard.java index 8fbed33..b5118f2 100644 --- a/java/noppes/npcs/api/ability/type/IAbilityHazard.java +++ b/java/noppes/npcs/api/ability/type/IAbilityHazard.java @@ -1,37 +1,14 @@ package noppes.npcs.api.ability.type; -import noppes.npcs.api.ability.IAbility; - /** * API interface for Hazard abilities. - * Persistent ground effect zones. + * Persistent ground effect zones placed around the caster. */ -public interface IAbilityHazard extends IAbility { - - int getDurationTicks(); - void setDurationTicks(int ticks); +public interface IAbilityHazard extends IAbilityZone { float getRadius(); void setRadius(float radius); - float getInnerRadius(); - void setInnerRadius(float radius); - - float getConeAngle(); - void setConeAngle(float angle); - - /** - * Get the hazard shape (0 = CIRCLE, 1 = RING, 2 = CONE). - */ - int getShape(); - void setShape(int shape); - - /** - * Get the placement mode (0 = AT_CASTER, 1 = AT_TARGET, 2 = FOLLOW_CASTER, 3 = FOLLOW_TARGET). - */ - int getPlacement(); - void setPlacement(int placement); - float getDamagePerSecond(); void setDamagePerSecond(float damage); @@ -41,24 +18,6 @@ public interface IAbilityHazard extends IAbility { boolean isIgnoreInvulnFrames(); void setIgnoreInvulnFrames(boolean ignore); - int getSlownessLevel(); - void setSlownessLevel(int level); - - int getWeaknessLevel(); - void setWeaknessLevel(int level); - - int getPoisonLevel(); - void setPoisonLevel(int level); - - int getWitherLevel(); - void setWitherLevel(int level); - - int getBlindnessLevel(); - void setBlindnessLevel(int level); - - int getDebuffDuration(); - void setDebuffDuration(int duration); - boolean isAffectsCaster(); void setAffectsCaster(boolean affects); } diff --git a/java/noppes/npcs/api/ability/type/IAbilityTrap.java b/java/noppes/npcs/api/ability/type/IAbilityTrap.java index ff6fbec..23ade92 100644 --- a/java/noppes/npcs/api/ability/type/IAbilityTrap.java +++ b/java/noppes/npcs/api/ability/type/IAbilityTrap.java @@ -1,24 +1,10 @@ package noppes.npcs.api.ability.type; -import noppes.npcs.api.ability.IAbility; - /** * API interface for Trap abilities. - * Proximity-triggered traps. + * Proximity-triggered traps placed around the caster. */ -public interface IAbilityTrap extends IAbility { - - int getDurationTicks(); - void setDurationTicks(int ticks); - - /** - * Get the placement mode (0 = AT_CASTER, 1 = AT_TARGET, 2 = AHEAD_OF_CASTER). - */ - int getPlacement(); - void setPlacement(int placement); - - float getPlacementDistance(); - void setPlacementDistance(float distance); +public interface IAbilityTrap extends IAbilityZone { float getTriggerRadius(); void setTriggerRadius(float radius); diff --git a/java/noppes/npcs/api/ability/type/IAbilityZone.java b/java/noppes/npcs/api/ability/type/IAbilityZone.java new file mode 100644 index 0000000..eb2871d --- /dev/null +++ b/java/noppes/npcs/api/ability/type/IAbilityZone.java @@ -0,0 +1,103 @@ +package noppes.npcs.api.ability.type; + +import noppes.npcs.api.ability.IAbility; + +/** + * API interface for zone-based abilities (Trap, Hazard). + * Shared zone properties: duration, shape, spawn, visual layers, colors. + */ +public interface IAbilityZone extends IAbility { + + int getDurationTicks(); + void setDurationTicks(int ticks); + + /** + * Get the zone shape (0 = CIRCLE, 1 = SQUARE). + */ + int getZoneShapeOrdinal(); + void setZoneShapeOrdinal(int shape); + + float getSpawnRadius(); + void setSpawnRadius(float radius); + + float getTelegraphSize(); + void setTelegraphSize(float size); + + int getZoneCount(); + void setZoneCount(int count); + + float getZoneHeight(); + void setZoneHeight(float height); + + float getParticleDensity(); + void setParticleDensity(float density); + + float getParticleScale(); + void setParticleScale(float scale); + + float getAnimSpeed(); + void setAnimSpeed(float speed); + + float getLightningDensity(); + void setLightningDensity(float density); + + // Color controls + int getInnerColor(); + void setInnerColor(int color); + + int getOuterColor(); + void setOuterColor(int color); + + boolean isOuterColorEnabled(); + void setOuterColorEnabled(boolean enabled); + + // Visual layer controls + + boolean isGroundFill(); + void setGroundFill(boolean enabled); + + float getGroundAlpha(); + void setGroundAlpha(float alpha); + + boolean isRings(); + void setRings(boolean enabled); + + int getRingCount(); + void setRingCount(int count); + + boolean isBorder(); + void setBorder(boolean enabled); + + float getBorderSpeed(); + void setBorderSpeed(float speed); + + boolean isAccents(); + void setAccents(boolean enabled); + + /** + * Get the accent style (0=STATIC, 1=SWAYING, 2=FLICKERING). + */ + int getAccentStyle(); + void setAccentStyle(int style); + + boolean isLightning(); + void setLightning(boolean enabled); + + boolean isParticles(); + void setParticles(boolean enabled); + + /** + * Get the particle motion style (0=RISING, 1=DRIFTING, 2=SPARKS). + */ + int getParticleMotion(); + void setParticleMotion(int motion); + + String getParticleDir(); + void setParticleDir(String directory); + + int getParticleSize(); + void setParticleSize(int size); + + boolean isParticleGlow(); + void setParticleGlow(boolean glow); +}