parent
e592681ed2
commit
612f149cf9
@ -0,0 +1,76 @@ |
|||||||
|
/** The interface for actions that can be selected during battle. This is also used automatically for the Defend and Flee options. */ |
||||||
|
export interface ActionData { |
||||||
|
/** The name that will be displayed in the action list - a Handlebars template. */ |
||||||
|
readonly nameTemplate: string |
||||||
|
/** The help message that will be displayed when this action is selected - a Handlebars template. */ |
||||||
|
readonly helpMessageTemplate: string |
||||||
|
/** The cost of the action - a script expression. The cost of the action is automatically deducted, and need not be deducted by the effect as well. */ |
||||||
|
readonly costExpression: string |
||||||
|
/** Whether the action can currently be used, and if so, how much of the turn it takes up - a script expression. */ |
||||||
|
readonly speedExpression: string |
||||||
|
/** The effect of the action - a sequence of script statements separated by newlines. */ |
||||||
|
readonly actionEffect: string |
||||||
|
} |
||||||
|
|
||||||
|
/** The state of an action, determining its display in the action menu. */ |
||||||
|
export enum ActionSpeed { |
||||||
|
/** |
||||||
|
* Fast actions only cost half the user's turn. |
||||||
|
* If a Fast action is used at the start of the user's turn, they can use a single Fast or Normal action afterward. |
||||||
|
*/ |
||||||
|
FAST="Fast", |
||||||
|
/** |
||||||
|
* Normal actions only cost half (or maybe two thirds) of the user's turn. |
||||||
|
* If these actions are used on the user's turn, it ends, but they can be used after a Fast action. |
||||||
|
*/ |
||||||
|
NORMAL="Normal", |
||||||
|
/** |
||||||
|
* Slow actions cost a user's entire turn. |
||||||
|
* They can't be used after Fast actions, and the user's turn ends after using them. |
||||||
|
*/ |
||||||
|
SLOW="Slow", |
||||||
|
/** |
||||||
|
* Disabled actions are shown in the action list, but cannot be used. |
||||||
|
*/ |
||||||
|
DISABLED="Disabled", |
||||||
|
/** |
||||||
|
* Hidden actions are not shown in the action list and cannot be used. |
||||||
|
*/ |
||||||
|
HIDDEN="Hidden", |
||||||
|
} |
||||||
|
|
||||||
|
/** The counters that actions' costs and damage/healing can deduct from. */ |
||||||
|
export enum Counter { |
||||||
|
CONFIDENCE="Confidence", |
||||||
|
HEALTH="Health", |
||||||
|
STAMINA="Stamina", |
||||||
|
ENERGY="Energy", |
||||||
|
} |
||||||
|
|
||||||
|
/** The interface for an action's cost. */ |
||||||
|
export interface ActionCost { |
||||||
|
/** The counter that the cost will be deducted from. */ |
||||||
|
readonly affects: Counter |
||||||
|
/** |
||||||
|
* The cost, which the counter must be greater than or equal to for the skill to be used, and |
||||||
|
* which will be deducted from the counter when it is used. |
||||||
|
*/ |
||||||
|
readonly cost: number |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* The interface for an evaluated action. This saves time recalculating actions on every repaint and avoids cases |
||||||
|
* where the cost a user sees before choosing the action is not the same as the cost a user sees when using it. |
||||||
|
*/ |
||||||
|
export interface Action { |
||||||
|
/** The data this action originated from. */ |
||||||
|
readonly data: ActionData |
||||||
|
/** The name, with any template variables substituted in. */ |
||||||
|
readonly name: string |
||||||
|
/** The help message, with any template variables substituted in. */ |
||||||
|
readonly helpMessage: string |
||||||
|
/** The cost, which has been evaluated into an optimized set of ActionCost with at most one ActionCost per Counter. */ |
||||||
|
readonly cost: readonly ActionCost[] |
||||||
|
/** The speed of the action, determining when it can be used and what other actions can be used with it. */ |
||||||
|
readonly speed: ActionSpeed |
||||||
|
} |
Loading…
Reference in new issue