Android build v1.1.33
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -7,8 +7,8 @@ android {
|
|||||||
applicationId "com.warren.iwanttoheal"
|
applicationId "com.warren.iwanttoheal"
|
||||||
minSdkVersion rootProject.ext.minSdkVersion
|
minSdkVersion rootProject.ext.minSdkVersion
|
||||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||||
versionCode 113
|
versionCode 114
|
||||||
versionName "1.1.32"
|
versionName "1.1.33"
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
aaptOptions {
|
aaptOptions {
|
||||||
// Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps.
|
// Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps.
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
import { IWT2_PARTY_ORDER } from './classes'
|
||||||
|
import {
|
||||||
|
IWT2_GEAR_SLOTS,
|
||||||
|
type Iwt2GearLevel,
|
||||||
|
type Iwt2GearProgress,
|
||||||
|
} from './gear'
|
||||||
|
|
||||||
|
export type Iwt2PvpGearNormalizationConfig = {
|
||||||
|
enabled: boolean
|
||||||
|
gearLevel: Iwt2GearLevel
|
||||||
|
}
|
||||||
|
|
||||||
|
export const IWT2_PVP_GEAR_NORMALIZATION: Iwt2PvpGearNormalizationConfig = {
|
||||||
|
enabled: true,
|
||||||
|
gearLevel: 5,
|
||||||
|
}
|
||||||
|
|
||||||
|
export function createIwt2PvpNormalizedGearProgress(
|
||||||
|
config = IWT2_PVP_GEAR_NORMALIZATION,
|
||||||
|
): Iwt2GearProgress | undefined {
|
||||||
|
if (!config.enabled) return undefined
|
||||||
|
|
||||||
|
return Object.fromEntries(
|
||||||
|
IWT2_PARTY_ORDER.map((classId) => [
|
||||||
|
classId,
|
||||||
|
{
|
||||||
|
slots: Object.fromEntries(
|
||||||
|
IWT2_GEAR_SLOTS.map((slotId) => [slotId, { level: config.gearLevel }]),
|
||||||
|
),
|
||||||
|
infusionAbilityId: null,
|
||||||
|
},
|
||||||
|
]),
|
||||||
|
) as Iwt2GearProgress
|
||||||
|
}
|
||||||
@@ -45,6 +45,7 @@ import {
|
|||||||
IWT2_BARKSKIN_HOT_BONUS_BUFF_ID,
|
IWT2_BARKSKIN_HOT_BONUS_BUFF_ID,
|
||||||
IWT2_SUN_WARD_DAMAGE_REDUCTION_BUFF_ID,
|
IWT2_SUN_WARD_DAMAGE_REDUCTION_BUFF_ID,
|
||||||
} from '../content/roguelike'
|
} from '../content/roguelike'
|
||||||
|
import { createIwt2PvpNormalizedGearProgress } from '../content/pvpGearNormalization'
|
||||||
|
|
||||||
type ArenaStatus = 'playing' | 'paused' | 'victory' | 'defeat'
|
type ArenaStatus = 'playing' | 'paused' | 'victory' | 'defeat'
|
||||||
type OverlayAction = 'primary' | 'requeue' | 'menu'
|
type OverlayAction = 'primary' | 'requeue' | 'menu'
|
||||||
@@ -92,7 +93,12 @@ type BossArenaScreenProps = {
|
|||||||
export function BossArenaScreen({ bossId, bossIds, difficulty, modeLabel, save, onBack, onMainMenu, onPvpRequeue, onSaveUpdated, roguelikeRun }: BossArenaScreenProps) {
|
export function BossArenaScreen({ bossId, bossIds, difficulty, modeLabel, save, onBack, onMainMenu, onPvpRequeue, onSaveUpdated, roguelikeRun }: BossArenaScreenProps) {
|
||||||
const bossMetadata = IWT2_BOSS_METADATA[bossId]
|
const bossMetadata = IWT2_BOSS_METADATA[bossId]
|
||||||
const pvpRoguelike = roguelikeRun?.variant === 'pvp'
|
const pvpRoguelike = roguelikeRun?.variant === 'pvp'
|
||||||
const pveGearActive = roguelikeRun?.variant !== 'pvp'
|
const pvpNormalizedGearProgress = useMemo(() => createIwt2PvpNormalizedGearProgress(), [])
|
||||||
|
const activeGearProgress = pvpRoguelike
|
||||||
|
? pvpNormalizedGearProgress
|
||||||
|
: roguelikeRun?.variant !== 'pvp'
|
||||||
|
? save.gearProgress
|
||||||
|
: undefined
|
||||||
const bossHealthScale = roguelikeRun ? roguelikeBossHealthScale(roguelikeRun.stage) : 1
|
const bossHealthScale = roguelikeRun ? roguelikeBossHealthScale(roguelikeRun.stage) : 1
|
||||||
const difficultyHealthScale = difficulty?.healthMultiplier ?? 1
|
const difficultyHealthScale = difficulty?.healthMultiplier ?? 1
|
||||||
const difficultyDamageScale = difficulty?.damageMultiplier ?? 1
|
const difficultyDamageScale = difficulty?.damageMultiplier ?? 1
|
||||||
@@ -115,17 +121,19 @@ export function BossArenaScreen({ bossId, bossIds, difficulty, modeLabel, save,
|
|||||||
combinedDamageScale,
|
combinedDamageScale,
|
||||||
roguelikeBuffs,
|
roguelikeBuffs,
|
||||||
createPressureState(roguelikeStage, roguelikeContentType),
|
createPressureState(roguelikeStage, roguelikeContentType),
|
||||||
pveGearActive ? save.gearProgress : undefined,
|
activeGearProgress,
|
||||||
arenaBounds,
|
arenaBounds,
|
||||||
))
|
))
|
||||||
const [opponentArenaState, setOpponentArenaState] = useState<Iwt2ArenaState | null>(() => (
|
const [opponentArenaState, setOpponentArenaState] = useState<Iwt2ArenaState | null>(() => (
|
||||||
pvpRoguelike
|
pvpRoguelike
|
||||||
? createInitialIwt2ArenaState(
|
? createArenaState(
|
||||||
bossId,
|
bossId,
|
||||||
bossIds,
|
bossIds,
|
||||||
combinedBossHealthScale,
|
combinedBossHealthScale,
|
||||||
combinedDamageScale,
|
combinedDamageScale,
|
||||||
|
EMPTY_ROGUELIKE_BUFFS,
|
||||||
createPressureState(roguelikeStage, roguelikeContentType),
|
createPressureState(roguelikeStage, roguelikeContentType),
|
||||||
|
activeGearProgress,
|
||||||
arenaBounds,
|
arenaBounds,
|
||||||
)
|
)
|
||||||
: null
|
: null
|
||||||
@@ -189,16 +197,18 @@ export function BossArenaScreen({ bossId, bossIds, difficulty, modeLabel, save,
|
|||||||
combinedDamageScale,
|
combinedDamageScale,
|
||||||
roguelikeBuffs,
|
roguelikeBuffs,
|
||||||
pressureState,
|
pressureState,
|
||||||
pveGearActive ? save.gearProgress : undefined,
|
activeGearProgress,
|
||||||
arenaBounds,
|
arenaBounds,
|
||||||
)
|
)
|
||||||
const nextOpponentState = pvpRoguelike
|
const nextOpponentState = pvpRoguelike
|
||||||
? createInitialIwt2ArenaState(
|
? createArenaState(
|
||||||
bossId,
|
bossId,
|
||||||
bossIds,
|
bossIds,
|
||||||
combinedBossHealthScale,
|
combinedBossHealthScale,
|
||||||
combinedDamageScale,
|
combinedDamageScale,
|
||||||
|
EMPTY_ROGUELIKE_BUFFS,
|
||||||
pressureState,
|
pressureState,
|
||||||
|
activeGearProgress,
|
||||||
arenaBounds,
|
arenaBounds,
|
||||||
)
|
)
|
||||||
: null
|
: null
|
||||||
@@ -214,7 +224,7 @@ export function BossArenaScreen({ bossId, bossIds, difficulty, modeLabel, save,
|
|||||||
setPetAwards([])
|
setPetAwards([])
|
||||||
setSelectedOverlayAction('primary')
|
setSelectedOverlayAction('primary')
|
||||||
setStatus('playing')
|
setStatus('playing')
|
||||||
}, [arenaBounds, bossId, bossIds, combinedBossHealthScale, combinedDamageScale, pveGearActive, pvpRoguelike, roguelikeBuffs, roguelikeContentType, roguelikeStage, save.gearProgress])
|
}, [activeGearProgress, arenaBounds, bossId, bossIds, combinedBossHealthScale, combinedDamageScale, pvpRoguelike, roguelikeBuffs, roguelikeContentType, roguelikeStage])
|
||||||
|
|
||||||
const showOverlay = useCallback((nextStatus: Exclude<ArenaStatus, 'playing'>) => {
|
const showOverlay = useCallback((nextStatus: Exclude<ArenaStatus, 'playing'>) => {
|
||||||
setSelectedOverlayAction('primary')
|
setSelectedOverlayAction('primary')
|
||||||
@@ -231,10 +241,10 @@ export function BossArenaScreen({ bossId, bossIds, difficulty, modeLabel, save,
|
|||||||
() => {
|
() => {
|
||||||
const baseAbilities = abilitiesForHealer(
|
const baseAbilities = abilitiesForHealer(
|
||||||
save.character.healerStyle,
|
save.character.healerStyle,
|
||||||
pveGearActive ? save.gearProgress.healer.infusionAbilityId : null,
|
activeGearProgress?.healer.infusionAbilityId ?? null,
|
||||||
)
|
)
|
||||||
const gearAbilities = pveGearActive
|
const gearAbilities = activeGearProgress
|
||||||
? applyIwt2PveGearToHealerAbilities(baseAbilities, save.gearProgress)
|
? applyIwt2PveGearToHealerAbilities(baseAbilities, activeGearProgress)
|
||||||
: baseAbilities
|
: baseAbilities
|
||||||
return applyRoguelikeModifiers(
|
return applyRoguelikeModifiers(
|
||||||
gearAbilities,
|
gearAbilities,
|
||||||
@@ -242,7 +252,7 @@ export function BossArenaScreen({ bossId, bossIds, difficulty, modeLabel, save,
|
|||||||
roguelikeRun?.debuffs ?? [],
|
roguelikeRun?.debuffs ?? [],
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
[pveGearActive, roguelikeRun?.buffs, roguelikeRun?.debuffs, save.character.healerStyle, save.gearProgress],
|
[activeGearProgress, roguelikeRun?.buffs, roguelikeRun?.debuffs, save.character.healerStyle],
|
||||||
)
|
)
|
||||||
|
|
||||||
const castAbility = useCallback((ability: Iwt2HealerAbility) => {
|
const castAbility = useCallback((ability: Iwt2HealerAbility) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user