···3333 import {
3434 isPowerId,
3535 parentPowers,
3636+ powerData,
3637 type powerId,
3738 powers,
3839 } from "../../consts/astral";
···7071 this.#internals.states.add("selected");
7172 button && (button.disabled = false);
72737373- // if any selected powers rely on it
7474+ // if any selected powers rely on it OR if its force select
7475 if (
7576 value.powers.filter((x) =>
7677 parentPowers[x].includes(this.power ?? powers.INVALID),
7777- ).length > 1
7878+ ).length > 1 ||
7979+ powerData[this.power].forceSelect
7880 ) {
7981 this.#internals.states.add("dependency");
8082 button && (button.disabled = true);
···104106 const button = this.shadowRoot?.querySelector("dialog button");
105107 if (!(button instanceof HTMLButtonElement))
106108 throw "`dialog button` could not be selected";
107107- button.addEventListener("click", (ev) => {
109109+110110+ button.addEventListener("click", () => {
108111 if (
109112 // this.power is in some way invalid; drop the event
110113 !this.power ||
···114117 return;
115118 // the power is selected; deselect it
116119 else if (Powers.get().powers.includes(this.power)) {
117117- console.log("deselect");
120120+ button.disabled = true;
121121+118122 Powers.setKey(
119123 "powers",
120124 Powers.get().powers.filter((x) => x !== this.power),
···125129 // the power is not selected and its parent is unlocked
126130 else if (
127131 Powers.get().powers.includes(parentPowers[this.power].at(-2) ?? "")
128128- )
132132+ ) {
133133+ button.disabled = true;
129134 Powers.setKey("powers", [...Powers.get().powers, this.power]);
135135+ }
130136 });
131137 }
132138···172178 "Locked: This power cannot be added to the power list",
173179 "No parent: The parent power for this power has not been selected",
174180 "No points: You do not have enough points to unlock this power",
175175- "Dependency: Another power relies on this power being selected",
181181+ "Dependency: Another power relies on this power being selected, or it must be selected",
176182 ].join("\n")}
177183 >
178184 <span data-val="unselect">Unselect</span>