Release v0.1.7 2026-07-12
This commit is contained in:
+18
-2
@@ -13,7 +13,7 @@ import {
|
||||
infusionsForOwner,
|
||||
} from "../game/progression/infusions";
|
||||
import { normalizeDifficultySlug, rollBossReward, type BossRewardAward, type DifficultySlug } from "../game/progression/loot";
|
||||
import { highestRoguelikeRoundAfterDefeat } from "../game/progression/hunterStats";
|
||||
import { highestEndlessBossKillsAfterDefeat, highestRoguelikeRoundAfterDefeat } from "../game/progression/hunterStats";
|
||||
|
||||
const repository = new SaveRepository();
|
||||
const accounts = new AccountRepository();
|
||||
@@ -125,6 +125,7 @@ export interface FrontendState {
|
||||
touchActiveSave: () => void;
|
||||
recordBossVictory: (bossId: BossId, difficultySlug: DifficultySlug) => BossRewardAward | null;
|
||||
recordRoguelikeDefeat: (round: number) => void;
|
||||
recordRogueTrialsEndlessDefeat: (bossKills: number) => void;
|
||||
clearRecentRewards: () => void;
|
||||
clearNotice: () => void;
|
||||
}
|
||||
@@ -388,7 +389,7 @@ export const useFrontendStore = create<FrontendState>((set, get) => ({
|
||||
});
|
||||
set((state) => ({
|
||||
slots: refreshLocalSlots(state.slots),
|
||||
recentRewards: awarded ? [...state.recentRewards, awarded] : state.recentRewards,
|
||||
recentRewards: awarded ? [...state.recentRewards, awarded].slice(-12) : state.recentRewards,
|
||||
notice: awarded ? `${awarded.drop.name} x${awarded.quantity} saved.` : "Boss clear saved.",
|
||||
}));
|
||||
return awarded;
|
||||
@@ -406,6 +407,19 @@ export const useFrontendStore = create<FrontendState>((set, get) => ({
|
||||
if (!updated) return;
|
||||
set((state) => ({ slots: refreshLocalSlots(state.slots) }));
|
||||
},
|
||||
recordRogueTrialsEndlessDefeat: (bossKills) => {
|
||||
const { activeSlotId } = get();
|
||||
if (!activeSlotId) return;
|
||||
const updated = repository.updateLocal(activeSlotId, (save) => ({
|
||||
...save,
|
||||
stats: {
|
||||
...save.stats,
|
||||
highestRogueTrialsEndlessKills: highestEndlessBossKillsAfterDefeat(save.stats.highestRogueTrialsEndlessKills, bossKills),
|
||||
},
|
||||
}));
|
||||
if (!updated) return;
|
||||
set((state) => ({ slots: refreshLocalSlots(state.slots) }));
|
||||
},
|
||||
clearRecentRewards: () => set({ recentRewards: [] }),
|
||||
clearNotice: () => set({ notice: "" }),
|
||||
}));
|
||||
@@ -442,6 +456,7 @@ export type FrontendSnapshot = Omit<FrontendState,
|
||||
| "touchActiveSave"
|
||||
| "recordBossVictory"
|
||||
| "recordRoguelikeDefeat"
|
||||
| "recordRogueTrialsEndlessDefeat"
|
||||
| "clearRecentRewards"
|
||||
| "clearNotice"
|
||||
>;
|
||||
@@ -479,6 +494,7 @@ export function getFrontendSnapshot(): FrontendSnapshot {
|
||||
touchActiveSave: _touchActiveSave,
|
||||
recordBossVictory: _recordBossVictory,
|
||||
recordRoguelikeDefeat: _recordRoguelikeDefeat,
|
||||
recordRogueTrialsEndlessDefeat: _recordRogueTrialsEndlessDefeat,
|
||||
clearRecentRewards: _clearRecentRewards,
|
||||
clearNotice: _clearNotice,
|
||||
...snapshot
|
||||
|
||||
Reference in New Issue
Block a user