generated from nhcarrigan/template
fix: preserve runestone bounty flag for legacy defeated bosses #67
@@ -215,7 +215,10 @@ const buildPostPrestigeState = (
|
||||
const currentBoss = currentState.bosses.find((candidate) => {
|
||||
return candidate.id === freshBoss.id;
|
||||
});
|
||||
if (currentBoss?.bountyRunestonesClaimed === true) {
|
||||
if (
|
||||
currentBoss?.bountyRunestonesClaimed === true
|
||||
|| currentBoss?.status === "defeated"
|
||||
) {
|
||||
return { ...freshBoss, bountyRunestonesClaimed: true };
|
||||
}
|
||||
return freshBoss;
|
||||
|
||||
@@ -319,6 +319,32 @@ describe("buildPostPrestigeState", () => {
|
||||
expect(matchingBoss?.bountyRunestonesClaimed).toBe(true);
|
||||
});
|
||||
|
||||
it("sets bountyRunestonesClaimed on bosses defeated before the flag was introduced", () => {
|
||||
const legacyDefeatedBoss = {
|
||||
bountyRunestones: 5,
|
||||
crystalReward: 0,
|
||||
currentHp: 0,
|
||||
damagePerSecond: 10,
|
||||
description: "A boss",
|
||||
equipmentRewards: [] as string[],
|
||||
essenceReward: 0,
|
||||
goldReward: 100,
|
||||
id: "troll_king",
|
||||
maxHp: 100,
|
||||
name: "Troll King",
|
||||
prestigeRequirement: 0,
|
||||
status: "defeated" as const,
|
||||
upgradeRewards: [] as string[],
|
||||
zoneId: "verdant_vale",
|
||||
};
|
||||
const state = makeMinimalState({ bosses: [ legacyDefeatedBoss ] as GameState["bosses"] });
|
||||
const { prestigeState } = buildPostPrestigeState(state, "Tester");
|
||||
const matchingBoss = prestigeState.bosses.find((boss) => {
|
||||
return boss.id === "troll_king";
|
||||
});
|
||||
expect(matchingBoss?.bountyRunestonesClaimed).toBe(true);
|
||||
});
|
||||
|
||||
it("accumulates completed quests into lifetime total", () => {
|
||||
const quest = {
|
||||
id: "q_1",
|
||||
|
||||
Reference in New Issue
Block a user