Android build v1.1.2

This commit is contained in:
Warren H
2026-06-29 22:35:49 -04:00
parent cbe42b6164
commit c6251167a5
52 changed files with 5554 additions and 3117 deletions
+29 -10
View File
@@ -184,17 +184,25 @@ export const ENCOUNTERS: Encounter[] = [
]
export function partyDamageOutput(party: PartyMember[], baseDamage: number) {
const livingCount = party.filter((member) => member.health > 0).length
let livingCount = 0
for (const member of party) {
if (member.health > 0) livingCount += 1
}
return Math.round(baseDamage * (livingCount / Math.max(1, party.length)))
}
export function tankPressureTargets(party: PartyMember[]) {
const living = party.filter((member) => member.health > 0)
const tanks = living.filter((member) => member.role === 'Tank')
const tanks: PartyMember[] = []
let damageDealer: PartyMember | undefined
for (const member of party) {
if (member.health <= 0) continue
if (member.role === 'Tank') {
tanks.push(member)
} else if (member.role === 'Damage' && (!damageDealer || member.health > damageDealer.health)) {
damageDealer = member
}
}
if (tanks.length > 0) return { targets: tanks, multiplier: 1 }
const damageDealer = living
.filter((member) => member.role === 'Damage')
.sort((left, right) => right.health - left.health)[0]
return {
targets: damageDealer ? [damageDealer] : [],
multiplier: TANKLESS_DAMAGE_MULTIPLIER,
@@ -202,8 +210,19 @@ export function tankPressureTargets(party: PartyMember[]) {
}
export function groupHealTargets(party: PartyMember[], targetCount = DEFAULT_GROUP_HEAL_TARGETS) {
return party
.filter((member) => member.health > 0)
.sort((left, right) => (left.health / left.maxHealth) - (right.health / right.maxHealth))
.slice(0, targetCount)
const targets: PartyMember[] = []
for (const member of party) {
if (member.health <= 0) continue
const healthRatio = member.health / member.maxHealth
let insertAt = targets.length
while (
insertAt > 0
&& healthRatio < targets[insertAt - 1].health / targets[insertAt - 1].maxHealth
) {
insertAt -= 1
}
targets.splice(insertAt, 0, member)
if (targets.length > targetCount) targets.pop()
}
return targets
}