Android build v1.1.2
This commit is contained in:
+29
-10
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user