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). */ int getDurationTicks(); /** * Set the duration in ticks for instant mode. */ 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. */ int getTelegraphActiveTicks(); /** * Set how many ticks the telegraph persists during the active phase. * Only used when syncTelegraphWithDuration is false. */ void setTelegraphActiveTicks(int ticks); /** * Whether telegraph active ticks are synced to the ability duration. */ boolean isSyncTelegraphWithDuration(); /** * Set whether telegraph active ticks should sync to the ability duration. */ void setSyncTelegraphWithDuration(boolean sync); /** * Get the telegraph radius (used by CIRCLE, RING, SQUARE shapes). */ float getTelegraphRadius(); /** * Set the telegraph radius. */ void setTelegraphRadius(float radius); /** * Get the telegraph inner radius (used by RING, CONE shapes). */ float getTelegraphInnerRadius(); /** * Set the telegraph inner radius. */ void setTelegraphInnerRadius(float innerRadius); /** * Get the telegraph length (used by LINE, CONE shapes). */ float getTelegraphLength(); /** * Set the telegraph length. */ void setTelegraphLength(float length); /** * Get the telegraph width (used by LINE shape). */ float getTelegraphWidth(); /** * Set the telegraph width. */ void setTelegraphWidth(float width); /** * Get the telegraph angle in degrees (used by CONE shape). */ float getTelegraphAngle(); /** * Set the telegraph angle in degrees. */ void setTelegraphAngle(float angle); }