122 lines
3.6 KiB
JavaScript
122 lines
3.6 KiB
JavaScript
export const MODULE_ID = "configurable-reactions";
|
|
export const MODULE_TITLE = "Configurable Reactions";
|
|
|
|
export const SETTINGS = Object.freeze({
|
|
REACTIONS: "reactions",
|
|
ASSIGNMENTS: "assignments",
|
|
SHOW_FAILED_TELEPORT_MESSAGES: "showFailedTeleportMessages",
|
|
CREATE_MANAGED_EFFECTS_ON_ASSIGNMENT: "createManagedEffectsOnAssignment"
|
|
});
|
|
|
|
export const TRIGGER_TYPES = Object.freeze({
|
|
DAMAGE_RECEIVED: "onDamageReceived",
|
|
TARGET_SELECTED: "onTargeted",
|
|
SPELL_SEEN: "onSpellSeen",
|
|
SPELL_CAST_START: "onSpellCastStart",
|
|
SPELL_CAST_COMPLETE: "onSpellCastComplete",
|
|
FEATURE_USED: "onFeatureUsed"
|
|
});
|
|
|
|
export const ACTION_TYPES = Object.freeze({
|
|
APPLY_STATUS: "applyStatus",
|
|
TELEPORT: "teleport",
|
|
CAST_SPELL_FROM_TOKEN: "castSpellFromToken",
|
|
USE_INVENTORY_ITEM: "useInventoryItem"
|
|
});
|
|
|
|
export const TRIGGER_PALETTE = Object.freeze([
|
|
{
|
|
type: TRIGGER_TYPES.DAMAGE_RECEIVED,
|
|
icon: "fa-solid fa-heart-crack",
|
|
labelKey: "CONFIGURABLE_REACTIONS.Triggers.OnDamageReceived.Label",
|
|
hintKey: "CONFIGURABLE_REACTIONS.Triggers.OnDamageReceived.Hint"
|
|
},
|
|
{
|
|
type: TRIGGER_TYPES.TARGET_SELECTED,
|
|
icon: "fa-solid fa-bullseye",
|
|
labelKey: "CONFIGURABLE_REACTIONS.Triggers.OnTargeted.Label",
|
|
hintKey: "CONFIGURABLE_REACTIONS.Triggers.OnTargeted.Hint"
|
|
},
|
|
{
|
|
type: TRIGGER_TYPES.SPELL_SEEN,
|
|
icon: "fa-solid fa-eye",
|
|
labelKey: "CONFIGURABLE_REACTIONS.Triggers.OnSpellSeen.Label",
|
|
hintKey: "CONFIGURABLE_REACTIONS.Triggers.OnSpellSeen.Hint"
|
|
},
|
|
{
|
|
type: TRIGGER_TYPES.SPELL_CAST_START,
|
|
icon: "fa-solid fa-wand-magic-sparkles",
|
|
labelKey: "CONFIGURABLE_REACTIONS.Triggers.OnSpellCastStart.Label",
|
|
hintKey: "CONFIGURABLE_REACTIONS.Triggers.OnSpellCastStart.Hint"
|
|
},
|
|
{
|
|
type: TRIGGER_TYPES.SPELL_CAST_COMPLETE,
|
|
icon: "fa-solid fa-hat-wizard",
|
|
labelKey: "CONFIGURABLE_REACTIONS.Triggers.OnSpellCastComplete.Label",
|
|
hintKey: "CONFIGURABLE_REACTIONS.Triggers.OnSpellCastComplete.Hint"
|
|
},
|
|
{
|
|
type: TRIGGER_TYPES.FEATURE_USED,
|
|
icon: "fa-solid fa-hand-sparkles",
|
|
labelKey: "CONFIGURABLE_REACTIONS.Triggers.OnFeatureUsed.Label",
|
|
hintKey: "CONFIGURABLE_REACTIONS.Triggers.OnFeatureUsed.Hint"
|
|
}
|
|
]);
|
|
|
|
export const ACTION_PALETTE = Object.freeze([
|
|
{
|
|
type: ACTION_TYPES.APPLY_STATUS,
|
|
icon: "fa-solid fa-certificate",
|
|
labelKey: "CONFIGURABLE_REACTIONS.Actions.ApplyStatus.Label",
|
|
hintKey: "CONFIGURABLE_REACTIONS.Actions.ApplyStatus.Hint"
|
|
},
|
|
{
|
|
type: ACTION_TYPES.TELEPORT,
|
|
icon: "fa-solid fa-location-arrow",
|
|
labelKey: "CONFIGURABLE_REACTIONS.Actions.Teleport.Label",
|
|
hintKey: "CONFIGURABLE_REACTIONS.Actions.Teleport.Hint"
|
|
},
|
|
{
|
|
type: ACTION_TYPES.CAST_SPELL_FROM_TOKEN,
|
|
icon: "fa-solid fa-wand-sparkles",
|
|
labelKey: "CONFIGURABLE_REACTIONS.Actions.CastSpellFromToken.Label",
|
|
hintKey: "CONFIGURABLE_REACTIONS.Actions.CastSpellFromToken.Hint"
|
|
},
|
|
{
|
|
type: ACTION_TYPES.USE_INVENTORY_ITEM,
|
|
icon: "fa-solid fa-toolbox",
|
|
labelKey: "CONFIGURABLE_REACTIONS.Actions.UseInventoryItem.Label",
|
|
hintKey: "CONFIGURABLE_REACTIONS.Actions.UseInventoryItem.Hint"
|
|
}
|
|
]);
|
|
|
|
export const DEFAULT_REACTION = Object.freeze({
|
|
name: "Neue Reaktion",
|
|
enabled: true,
|
|
trigger: {
|
|
type: TRIGGER_TYPES.DAMAGE_RECEIVED
|
|
},
|
|
conditions: {
|
|
damage: {
|
|
enabled: true,
|
|
amountMode: "damageOnly",
|
|
types: [],
|
|
typeMode: "any",
|
|
minAmount: 1
|
|
},
|
|
hpAfterDamage: {
|
|
enabled: false,
|
|
operator: "lte",
|
|
mode: "percent",
|
|
value: 50
|
|
}
|
|
},
|
|
consumption: {
|
|
enabled: false,
|
|
mode: "none",
|
|
maxUses: 1,
|
|
consumeOnFailure: false
|
|
},
|
|
actions: []
|
|
});
|