Android build v1.1.2
This commit is contained in:
+17
-23
@@ -10,6 +10,11 @@ import { isIP } from 'node:net'
|
||||
import { extname, resolve, sep } from 'node:path'
|
||||
import { DatabaseSync } from 'node:sqlite'
|
||||
import { catalogPayload } from './catalog.mjs'
|
||||
import {
|
||||
catchUpExperienceReward as catchUpExperienceRewardForTarget,
|
||||
coinDropQuantity,
|
||||
roguelikeCoinItemLevel,
|
||||
} from '../src/shared/rewardRules.mjs'
|
||||
|
||||
const databasePath = fileURLToPath(new URL('../data/game.db', import.meta.url))
|
||||
const bossImageDirectory = fileURLToPath(new URL('../data/uploads/bosses/', import.meta.url))
|
||||
@@ -251,10 +256,7 @@ function catchUpExperienceReward(database, accountId, characterId, baseReward, c
|
||||
FROM level_progression
|
||||
WHERE level = ?
|
||||
`).get(targetLevel)?.experienceRequired ?? currentExperience
|
||||
const gap = Math.max(0, targetExperience - currentExperience)
|
||||
if (gap <= 0) return baseReward
|
||||
const doubledBase = Math.min(baseReward, Math.ceil(gap / 2))
|
||||
return doubledBase * 2 + (baseReward - doubledBase)
|
||||
return catchUpExperienceRewardForTarget(baseReward, currentExperience, targetExperience)
|
||||
}
|
||||
|
||||
function normalizeUsername(value) {
|
||||
@@ -1345,17 +1347,6 @@ function formatLootRoll(database, context, record, dropChance) {
|
||||
}
|
||||
}
|
||||
|
||||
function coinDropQuantity() {
|
||||
const roll = Math.random()
|
||||
if (roll < 0.15) return 3
|
||||
if (roll < 0.5) return 2
|
||||
return 1
|
||||
}
|
||||
|
||||
function roguelikeCoinItemLevel(stage) {
|
||||
return Math.min(25, 5 + Math.max(0, Math.floor(stage / 5)) * 5)
|
||||
}
|
||||
|
||||
function awardRoguelikeCoin(database, characterId, sourceEncounterId, stage) {
|
||||
if (!sourceEncounterId || !stage) return null
|
||||
const coin = database.prepare(`
|
||||
@@ -2309,13 +2300,15 @@ function completeRoguelike(database, characterId, accountId, runMetrics) {
|
||||
? 'pvp-boss-quarter-level'
|
||||
: runMetrics?.experienceMode === 'pvp-fight-twelfth-level'
|
||||
? 'pvp-fight-twelfth-level'
|
||||
: runMetrics?.experienceMode === 'pvp-stadium-round-win-quarter-level'
|
||||
? 'pvp-stadium-round-win-quarter-level'
|
||||
: runMetrics?.experienceMode === 'pvp-stadium-round-loss-tenth-level'
|
||||
? 'pvp-stadium-round-loss-tenth-level'
|
||||
: runMetrics?.experienceMode === 'pvp-stadium-match-half-level'
|
||||
? 'pvp-stadium-match-half-level'
|
||||
: 'default'
|
||||
: runMetrics?.experienceMode === 'pvp-match-win-half-level'
|
||||
? 'pvp-match-win-half-level'
|
||||
: runMetrics?.experienceMode === 'pvp-stadium-round-win-quarter-level'
|
||||
? 'pvp-stadium-round-win-quarter-level'
|
||||
: runMetrics?.experienceMode === 'pvp-stadium-round-loss-tenth-level'
|
||||
? 'pvp-stadium-round-loss-tenth-level'
|
||||
: runMetrics?.experienceMode === 'pvp-stadium-match-half-level'
|
||||
? 'pvp-stadium-match-half-level'
|
||||
: 'default'
|
||||
const fightsCleared = Number(runMetrics?.fightsCleared ?? encountersCleared)
|
||||
const resourceSpent = Number(runMetrics?.resourceSpent)
|
||||
const durationSeconds = Number(runMetrics?.durationSeconds)
|
||||
@@ -2419,7 +2412,8 @@ function completeRoguelike(database, characterId, accountId, runMetrics) {
|
||||
`).get(newExperience).level
|
||||
}
|
||||
} else if (
|
||||
experienceMode === 'pvp-stadium-round-win-quarter-level'
|
||||
experienceMode === 'pvp-match-win-half-level'
|
||||
|| experienceMode === 'pvp-stadium-round-win-quarter-level'
|
||||
|| experienceMode === 'pvp-stadium-round-loss-tenth-level'
|
||||
|| experienceMode === 'pvp-stadium-match-half-level'
|
||||
) {
|
||||
|
||||
Reference in New Issue
Block a user