generated from nhcarrigan/template
feat: patch all content stats on sync to keep saves up to date
Sync New Content now updates canonical fields on all existing entries to match current defaults: quests (duration, prerequisites, combat requirement), bosses (HP, damage, rewards, prestige requirement), zones (unlock conditions), upgrades (costs, multiplier), equipment (bonus, cost, set), and achievements (condition, reward). Crafting multipliers are also recomputed from craftedRecipeIds so recipe balance changes apply to existing saves.
This commit is contained in:
@@ -13,17 +13,24 @@ import { ConfirmationModal } from "../ui/confirmationModal.js";
|
||||
type ActiveModal = "force-unlocks" | "hard-reset" | "sync-new-content" | null;
|
||||
|
||||
interface SyncNewContentResult {
|
||||
achievementsAdded: number | undefined;
|
||||
adventurersAdded: number | undefined;
|
||||
adventurerStatsPatched: number | undefined;
|
||||
bossesAdded: number | undefined;
|
||||
bossRewardsPatched: number | undefined;
|
||||
equipmentAdded: number | undefined;
|
||||
explorationAreasAdded: number | undefined;
|
||||
questRewardsPatched: number | undefined;
|
||||
questsAdded: number | undefined;
|
||||
upgradesAdded: number | undefined;
|
||||
zonesAdded: number | undefined;
|
||||
achievementsAdded: number | undefined;
|
||||
achievementsPatched: number | undefined;
|
||||
adventurersAdded: number | undefined;
|
||||
adventurerStatsPatched: number | undefined;
|
||||
bossesAdded: number | undefined;
|
||||
bossesPatched: number | undefined;
|
||||
bossRewardsPatched: number | undefined;
|
||||
craftingRecipesReapplied: number | undefined;
|
||||
equipmentAdded: number | undefined;
|
||||
equipmentPatched: number | undefined;
|
||||
explorationAreasAdded: number | undefined;
|
||||
questRewardsPatched: number | undefined;
|
||||
questsAdded: number | undefined;
|
||||
questsPatched: number | undefined;
|
||||
upgradesAdded: number | undefined;
|
||||
upgradesPatched: number | undefined;
|
||||
zonesAdded: number | undefined;
|
||||
zonesPatched: number | undefined;
|
||||
}
|
||||
|
||||
const safeNumber = (value: number | undefined): number => {
|
||||
@@ -48,6 +55,13 @@ const buildSyncNewContentMessage = (result: SyncNewContentResult): string => {
|
||||
[ safeNumber(result.upgradesAdded), "upgrade(s)" ],
|
||||
[ safeNumber(result.equipmentAdded), "equipment item(s)" ],
|
||||
[ safeNumber(result.achievementsAdded), "achievement(s)" ],
|
||||
[ safeNumber(result.questsPatched), "quest stat(s) patched" ],
|
||||
[ safeNumber(result.bossesPatched), "boss stat(s) patched" ],
|
||||
[ safeNumber(result.zonesPatched), "zone stat(s) patched" ],
|
||||
[ safeNumber(result.upgradesPatched), "upgrade stat(s) patched" ],
|
||||
[ safeNumber(result.equipmentPatched), "equipment stat(s) patched" ],
|
||||
[ safeNumber(result.achievementsPatched), "achievement stat(s) patched" ],
|
||||
[ safeNumber(result.craftingRecipesReapplied), "crafting recipe(s) reapplied" ],
|
||||
];
|
||||
const parts = entries.
|
||||
filter(([ count ]) => {
|
||||
|
||||
Reference in New Issue
Block a user