Android build v1.0.39

This commit is contained in:
Warren H
2026-06-20 20:09:57 -04:00
parent f8a1fbc5e2
commit 8f5a957963
11 changed files with 4311 additions and 2696 deletions
+15
View File
@@ -70,6 +70,7 @@ type OfflineSave = {
activeClassId: number
completedDungeonParts: number
completedRaidPhases: number
dungeonCompletions?: Record<string, number>
characters: Record<number, CharacterData>
lootRolls: Record<string, LootRoll>
}
@@ -159,6 +160,9 @@ function upgradeV1Save(v1: { profile: CharacterProfile; lootRolls: Record<string
activeClassId: p.character.classId,
completedDungeonParts: p.completedDungeonParts,
completedRaidPhases: p.completedRaidPhases ?? 0,
dungeonCompletions: Object.fromEntries(
p.dungeons.map((dungeon) => [String(dungeon.id), dungeon.completionCount ?? 0]),
),
characters,
lootRolls: v1.lootRolls ?? {},
}
@@ -314,6 +318,10 @@ function buildProfile(save: OfflineSave): CharacterProfile {
updateCraftingRecipes(static_)
static_.completedDungeonParts = save.completedDungeonParts
static_.completedRaidPhases = save.completedRaidPhases
static_.dungeons = static_.dungeons.map((dungeon) => ({
...dungeon,
completionCount: save.dungeonCompletions?.[String(dungeon.id)] ?? dungeon.completionCount ?? 0,
}))
return static_
}
@@ -491,6 +499,9 @@ function mergeProfileIntoSave(profile: CharacterProfile, existingSave?: OfflineS
activeClassId: profile.character.classId,
completedDungeonParts: profile.completedDungeonParts,
completedRaidPhases: profile.completedRaidPhases,
dungeonCompletions: Object.fromEntries(
profile.dungeons.map((dungeon) => [String(dungeon.id), dungeon.completionCount ?? 0]),
),
characters,
lootRolls: clone(existingSave?.lootRolls ?? {}),
}
@@ -958,6 +969,10 @@ function createLocalRepository(store: LocalSaveStore): GameRepository {
} else {
save.completedDungeonParts = Math.max(save.completedDungeonParts, partCount)
}
save.dungeonCompletions = {
...(save.dungeonCompletions ?? {}),
[String(dungeonId)]: (save.dungeonCompletions?.[String(dungeonId)] ?? 0) + 1,
}
let bonusItem: DungeonReward['bonusItem'] = null
if ((startPart ?? 1) === 1 && partCount >= 3 && dungeon.completionLoot.length > 0) {