diff --git a/langs/en-ca.json b/langs/en-ca.json
index ac5a6bb..0ff23c7 100644
--- a/langs/en-ca.json
+++ b/langs/en-ca.json
@@ -120,6 +120,14 @@
}
},
"Apps": {
+ "titles": {
+ "EffectManager": "Manage Effects",
+ "DicePool": {
+ "flavorless": "Dice Pool",
+ "flavored": "Dice Pool: {flavor}"
+ }
+ },
+ "manage-active-effects": "Open Effect Manager",
"move-run": "@RipCrypt.common.move • @RipCrypt.common.run",
"traits-range": "@RipCrypt.common.traits • @RipCrypt.common.range",
"grit-skills": "@RipCrypt.common.abilities.grit Skills",
diff --git a/module/Apps/ActorSheets/HeroSummaryCardV1.mjs b/module/Apps/ActorSheets/HeroSummaryCardV1.mjs
index 0dc19bd..79b0fac 100644
--- a/module/Apps/ActorSheets/HeroSummaryCardV1.mjs
+++ b/module/Apps/ActorSheets/HeroSummaryCardV1.mjs
@@ -23,8 +23,16 @@ export class HeroSummaryCardV1 extends GenericAppMixin(HandlebarsApplicationMixi
},
window: {
resizable: false,
+ controls: [
+ {
+ action: `openEffectManager`,
+ label: `RipCrypt.Apps.manage-active-effects`,
+ ownership: `OWNER`,
+ },
+ ],
},
actions: {
+ openEffectManager: this.#openEffectManager,
},
form: {
submitOnChange: true,
@@ -219,5 +227,13 @@ export class HeroSummaryCardV1 extends GenericAppMixin(HandlebarsApplicationMixi
// #endregion
// #region Actions
+ /** @this {HeroCraftCardV1} */
+ static async #openEffectManager() {
+ await this.actor.createEmbeddedDocuments(
+ `ActiveEffect`,
+ [{name: `AE Tester`}],
+ { renderSheet: true },
+ );
+ };
// #endregion
};
diff --git a/module/Apps/EffectManager/EffectManager.mjs b/module/Apps/EffectManager/EffectManager.mjs
new file mode 100644
index 0000000..669cabd
--- /dev/null
+++ b/module/Apps/EffectManager/EffectManager.mjs
@@ -0,0 +1,54 @@
+import { filePath } from "../../consts.mjs";
+import { GenericAppMixin } from "../GenericApp.mjs";
+
+const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api;
+
+export class EffectManager extends GenericAppMixin(HandlebarsApplicationMixin(ApplicationV2)) {
+ // #region Options
+ static DEFAULT_OPTIONS = {
+ classes: [
+ `ripcrypt--EffectManager`,
+ ],
+ window: {
+ title: `Effect Manager`,
+ frame: true,
+ positioned: true,
+ resizable: false,
+ minimizable: true,
+ },
+ position: {
+ width: `auto`,
+ height: `auto`,
+ },
+ actions: {
+ },
+ };
+
+ static PARTS = {
+ numberOfDice: {
+ template: filePath(`templates/Apps/DicePool/numberOfDice.hbs`),
+ },
+ };
+ // #endregion
+
+ // #region Instance Data
+ _effects = new Map();
+ _showSource;
+
+ constructor({ document, showSource = true, ...opts } = {}) {
+ super(opts);
+
+ this._showSource = showSource;
+
+ for (const effect of document.allApplicableEffects()) {
+ this._effects.add(effect._id, effect);
+ };
+ };
+ // #endregion
+
+ // #region Lifecycle
+ // #endregion
+
+ // #region Actions
+ // #endregion
+};
diff --git a/module/Apps/EffectManager/EffectSheet.mjs b/module/Apps/EffectManager/EffectSheet.mjs
new file mode 100644
index 0000000..e69de29
diff --git a/module/data/ActiveEffect/base.mjs b/module/data/ActiveEffect/base.mjs
new file mode 100644
index 0000000..e69de29
diff --git a/templates/Apps/ActiveEffectConfiguration/changes.hbs b/templates/Apps/ActiveEffectConfiguration/changes.hbs
new file mode 100644
index 0000000..607b99d
--- /dev/null
+++ b/templates/Apps/ActiveEffectConfiguration/changes.hbs
@@ -0,0 +1,16 @@
+
+
+