Files
2026-03-09 16:20:07 -04:00

131 lines
3.4 KiB
Java

package noppes.npcs.api.ability;
/**
* A custom (script-driven) ability whose behavior is entirely defined by script event hooks.
* Supports both instant execution mode and toggle mode.
*/
public interface ICustomAbility extends IAbility {
/**
* Get the duration in ticks for instant mode (non-toggle).
* @return duration in ticks
*/
int getDurationTicks();
/**
* Set the duration in ticks for instant mode.
* @param ticks duration in ticks
*/
void setDurationTicks(int ticks);
/**
* Get the telegraph shape type ordinal.
* @return ordinal of TelegraphType: 0=CIRCLE, 1=RING, 2=LINE, 3=CONE, 4=POINT, 5=SQUARE, 6=NONE
*/
int getTelegraphShapeType();
/**
* Set the telegraph shape type by ordinal.
* @param type ordinal of TelegraphType
*/
void setTelegraphShapeType(int type);
/**
* Get the targeting mode ordinal.
* @return ordinal of TargetingMode: 0=AGGRO_TARGET, 1=SELF, 2=AOE_SELF, 3=AOE_TARGET
*/
int getTargetingModeType();
/**
* Set the targeting mode by ordinal.
* @param type ordinal of TargetingMode
*/
void setTargetingModeType(int type);
/**
* Get how many ticks the telegraph persists during the active phase.
* When syncTelegraphWithDuration is true, this returns the duration ticks.
* @return telegraph active ticks
*/
int getTelegraphActiveTicks();
/**
* Set how many ticks the telegraph persists during the active phase.
* Only used when syncTelegraphWithDuration is false.
* @param ticks telegraph active ticks
*/
void setTelegraphActiveTicks(int ticks);
/**
* Whether telegraph active ticks are synced to the ability duration.
* @return true if synced
*/
boolean isSyncTelegraphWithDuration();
/**
* Set whether telegraph active ticks should sync to the ability duration.
* @param sync whether to sync
*/
void setSyncTelegraphWithDuration(boolean sync);
/**
* Get the telegraph radius (used by CIRCLE, RING, SQUARE shapes).
* @return the telegraph radius
*/
float getTelegraphRadius();
/**
* Set the telegraph radius.
* @param radius the telegraph radius
*/
void setTelegraphRadius(float radius);
/**
* Get the telegraph inner radius (used by RING, CONE shapes).
* @return the inner radius
*/
float getTelegraphInnerRadius();
/**
* Set the telegraph inner radius.
* @param innerRadius the inner radius
*/
void setTelegraphInnerRadius(float innerRadius);
/**
* Get the telegraph length (used by LINE, CONE shapes).
* @return the telegraph length
*/
float getTelegraphLength();
/**
* Set the telegraph length.
* @param length the telegraph length
*/
void setTelegraphLength(float length);
/**
* Get the telegraph width (used by LINE shape).
* @return the telegraph width
*/
float getTelegraphWidth();
/**
* Set the telegraph width.
* @param width the telegraph width
*/
void setTelegraphWidth(float width);
/**
* Get the telegraph angle in degrees (used by CONE shape).
* @return the telegraph angle in degrees
*/
float getTelegraphAngle();
/**
* Set the telegraph angle in degrees.
* @param angle the angle in degrees
*/
void setTelegraphAngle(float angle);
}