feat: vampire boss panel and thralls panel with combat simulation

Implements VampireBossPanel (zone filtering, HP bar, battle modal with
rewards/casualties) and VampireThrallsPanel (batch buy with geometric
cost scaling). Wires challengeVampireBoss, dismissVampireBattle, and
buyVampireThrall into GameContext with correct sort-key ordering.
This commit is contained in:
2026-04-16 12:17:45 -07:00
committed by Naomi Carrigan
parent 3e34701d32
commit bd88eecda5
4 changed files with 922 additions and 6 deletions
+4 -6
View File
@@ -54,7 +54,9 @@ import { StoryToast } from "./storyToast.js";
import { TranscendencePanel } from "./transcendencePanel.js";
import { UpgradePanel } from "./upgradePanel.js";
import { VampireAchievementsPanel } from "./vampireAchievementsPanel.js";
import { VampireBossPanel } from "./vampireBossPanel.js";
import { VampireQuestsPanel } from "./vampireQuestsPanel.js";
import { VampireThrallsPanel } from "./vampireThrallsPanel.js";
import { VampireZonesPanel } from "./vampireZonesPanel.js";
type Mode = "mortal" | "goddess" | "vampire";
@@ -486,9 +488,7 @@ const GameLayout = (): JSX.Element => {
}
{activeMode === "vampire"
&& activeVampireTab === "vampire-bosses"
&& <div className="vampire-placeholder">
<p>{"🩸 Vampire Bosses coming soon..."}</p>
</div>
&& <VampireBossPanel />
}
{activeMode === "vampire"
&& activeVampireTab === "vampire-quests"
@@ -496,9 +496,7 @@ const GameLayout = (): JSX.Element => {
}
{activeMode === "vampire"
&& activeVampireTab === "thralls"
&& <div className="vampire-placeholder">
<p>{"🧟 Thralls coming soon..."}</p>
</div>
&& <VampireThrallsPanel />
}
{activeMode === "vampire"
&& activeVampireTab === "vampire-equipment"