Android build v1.0.43

This commit is contained in:
Warren H
2026-06-20 22:34:38 -04:00
parent 5aac39c6c9
commit 6e10b37f8e
21 changed files with 2095 additions and 337 deletions
+22 -7
View File
@@ -386,6 +386,27 @@ function addInventoryItem(inventory: Item[], item: Omit<Item, 'quantity' | 'equi
return { duplicate: false, quantityAfter: quantity }
}
type CraftingRecipe = CharacterProfile['craftingRecipes'][number]
function selectUpgradeRecipe(
paths: CharacterProfile['gearUpgradePaths'],
recipes: CraftingRecipe[],
item: Pick<Item, 'id' | 'slot' | 'itemLevel'>,
) {
const path = paths.find((candidate) => candidate.fromItemId === item.id)
if (path) {
const pathRecipe = recipes.find((recipe) => recipe.item.id === path.toItemId)
if (pathRecipe) return pathRecipe
}
const candidates = recipes.filter((recipe) =>
recipe.item.slot === item.slot
&& recipe.item.itemLevel > item.itemLevel
)
const nextItemLevel = Math.min(...candidates.map((recipe) => recipe.item.itemLevel))
if (!Number.isFinite(nextItemLevel)) return undefined
return candidates.find((recipe) => recipe.item.itemLevel === nextItemLevel)
}
function experienceForLevel(level: number) {
return (level - 1) * (level - 1) * 100
}
@@ -1307,13 +1328,7 @@ function createLocalRepository(store: LocalSaveStore): GameRepository {
if (item.slot === 'component') throw new Error('Components cannot be upgraded.')
const currentRecipe = profile.craftingRecipes.find((recipe) => recipe.item.id === item.id)
const targetRecipe = currentRecipe
? profile.craftingRecipes
.filter((recipe) =>
recipe.sourceEncounterId === currentRecipe.sourceEncounterId
&& recipe.item.slot === item.slot
&& recipe.item.itemLevel > item.itemLevel,
)
.sort((left, right) => left.item.itemLevel - right.item.itemLevel)[0]
? selectUpgradeRecipe(profile.gearUpgradePaths ?? [], profile.craftingRecipes, item)
: null
if (!targetRecipe) throw new Error('No upgrade is available for this item.')
const missing = targetRecipe.components.find((component) => component.owned < component.quantity)