generated from nhcarrigan/template
feat: sync and patch all content stats on existing saves (#130)
## Summary - Sync New Content now **injects** missing entries AND **patches canonical fields** on all existing entries to match current defaults - Adventurers: stats (baseCost, combatPower, goldPerSecond, essencePerSecond, name, class, level) - Quests: duration, prerequisites, combat requirement, rewards - Bosses: HP, damage, rewards, prestige requirement, upgrade rewards - Zones: unlock conditions (boss/quest required) - Upgrades: multiplier, costs - Equipment: bonus, cost, set membership - Achievements: condition, reward - Crafting: multipliers recomputed from `craftedRecipeIds` so recipe balance changes apply retroactively Closes #126 ## Test plan - [ ] On an existing save, click Sync New Content and verify the notification reports patched counts for all content types - [ ] Verify that rebalanced adventurer/boss/upgrade stats are reflected in the UI after syncing - [ ] Verify that player-owned state (counts, unlock status, boss HP, quest status) is preserved after syncing - [ ] Verify crafting multipliers are correct after syncing if any recipes were previously crafted ✨ This issue was created with help from Hikari~ 🌸 Reviewed-on: #130 Co-authored-by: Hikari <hikari@nhcarrigan.com> Co-committed-by: Hikari <hikari@nhcarrigan.com>
This commit was merged in pull request #130.
This commit is contained in:
@@ -580,16 +580,24 @@ interface GameContextValue {
|
||||
* @returns Counts of what was added per content type.
|
||||
*/
|
||||
syncNewContent: ()=> Promise<{
|
||||
achievementsAdded: number;
|
||||
adventurersAdded: number;
|
||||
bossesAdded: number;
|
||||
bossRewardsPatched: number;
|
||||
equipmentAdded: number;
|
||||
explorationAreasAdded: number;
|
||||
questRewardsPatched: number;
|
||||
questsAdded: number;
|
||||
upgradesAdded: number;
|
||||
zonesAdded: number;
|
||||
achievementsAdded: number;
|
||||
achievementsPatched: number;
|
||||
adventurerStatsPatched: number;
|
||||
adventurersAdded: number;
|
||||
bossRewardsPatched: number;
|
||||
bossesAdded: number;
|
||||
bossesPatched: number;
|
||||
craftingRecipesReapplied: number;
|
||||
equipmentAdded: number;
|
||||
equipmentPatched: number;
|
||||
explorationAreasAdded: number;
|
||||
questRewardsPatched: number;
|
||||
questsAdded: number;
|
||||
questsPatched: number;
|
||||
upgradesAdded: number;
|
||||
upgradesPatched: number;
|
||||
zonesAdded: number;
|
||||
zonesPatched: number;
|
||||
}>;
|
||||
|
||||
/**
|
||||
@@ -2170,16 +2178,24 @@ export const GameProvider = ({
|
||||
localStorage.setItem("elysium_save_signature", data.signature);
|
||||
}
|
||||
return {
|
||||
achievementsAdded: data.achievementsAdded,
|
||||
adventurersAdded: data.adventurersAdded,
|
||||
bossRewardsPatched: data.bossRewardsPatched,
|
||||
bossesAdded: data.bossesAdded,
|
||||
equipmentAdded: data.equipmentAdded,
|
||||
explorationAreasAdded: data.explorationAreasAdded,
|
||||
questRewardsPatched: data.questRewardsPatched,
|
||||
questsAdded: data.questsAdded,
|
||||
upgradesAdded: data.upgradesAdded,
|
||||
zonesAdded: data.zonesAdded,
|
||||
achievementsAdded: data.achievementsAdded,
|
||||
achievementsPatched: data.achievementsPatched,
|
||||
adventurerStatsPatched: data.adventurerStatsPatched,
|
||||
adventurersAdded: data.adventurersAdded,
|
||||
bossRewardsPatched: data.bossRewardsPatched,
|
||||
bossesAdded: data.bossesAdded,
|
||||
bossesPatched: data.bossesPatched,
|
||||
craftingRecipesReapplied: data.craftingRecipesReapplied,
|
||||
equipmentAdded: data.equipmentAdded,
|
||||
equipmentPatched: data.equipmentPatched,
|
||||
explorationAreasAdded: data.explorationAreasAdded,
|
||||
questRewardsPatched: data.questRewardsPatched,
|
||||
questsAdded: data.questsAdded,
|
||||
questsPatched: data.questsPatched,
|
||||
upgradesAdded: data.upgradesAdded,
|
||||
upgradesPatched: data.upgradesPatched,
|
||||
zonesAdded: data.zonesAdded,
|
||||
zonesPatched: data.zonesPatched,
|
||||
};
|
||||
} catch (error_: unknown) {
|
||||
setError(
|
||||
@@ -2188,16 +2204,24 @@ export const GameProvider = ({
|
||||
: "Failed to sync new content",
|
||||
);
|
||||
return {
|
||||
achievementsAdded: 0,
|
||||
adventurersAdded: 0,
|
||||
bossRewardsPatched: 0,
|
||||
bossesAdded: 0,
|
||||
equipmentAdded: 0,
|
||||
explorationAreasAdded: 0,
|
||||
questRewardsPatched: 0,
|
||||
questsAdded: 0,
|
||||
upgradesAdded: 0,
|
||||
zonesAdded: 0,
|
||||
achievementsAdded: 0,
|
||||
achievementsPatched: 0,
|
||||
adventurerStatsPatched: 0,
|
||||
adventurersAdded: 0,
|
||||
bossRewardsPatched: 0,
|
||||
bossesAdded: 0,
|
||||
bossesPatched: 0,
|
||||
craftingRecipesReapplied: 0,
|
||||
equipmentAdded: 0,
|
||||
equipmentPatched: 0,
|
||||
explorationAreasAdded: 0,
|
||||
questRewardsPatched: 0,
|
||||
questsAdded: 0,
|
||||
questsPatched: 0,
|
||||
upgradesAdded: 0,
|
||||
upgradesPatched: 0,
|
||||
zonesAdded: 0,
|
||||
zonesPatched: 0,
|
||||
};
|
||||
}
|
||||
}, []);
|
||||
|
||||
Reference in New Issue
Block a user