Android build v1.0.31
This commit is contained in:
@@ -10,6 +10,10 @@ import {
|
||||
import {
|
||||
INITIAL_PARTY,
|
||||
RAID_PARTY,
|
||||
DEFAULT_GROUP_HEAL_TARGETS,
|
||||
groupHealTargets,
|
||||
partyDamageOutput,
|
||||
tankPressureTargets,
|
||||
type CombatLogEntry,
|
||||
type PartyMember,
|
||||
type Spell,
|
||||
@@ -561,6 +565,12 @@ export function CombatScreen({
|
||||
const directTargets = new Set([targetId])
|
||||
const hotTargets = new Set<string>()
|
||||
const shieldTargets = new Set<string>()
|
||||
const extraTargets = upgradeStackCount(roguelikeUpgrades, `slot${spell.key as SlotKey}-extra-target` as RoguelikeUpgradeId)
|
||||
const groupTargets = new Set(
|
||||
spell.kind === 'group'
|
||||
? groupHealTargets(current.party, DEFAULT_GROUP_HEAL_TARGETS + extraTargets).map((member) => member.id)
|
||||
: [],
|
||||
)
|
||||
if (spell.kind === 'hot') hotTargets.add(targetId)
|
||||
if (spell.kind === 'shield') shieldTargets.add(targetId)
|
||||
if (spell.name === 'Mend' && activeSetEffects.has('mend_extra_target')) {
|
||||
@@ -574,7 +584,6 @@ export function CombatScreen({
|
||||
if (spell.name === 'Mend' && activeSetEffects.has('mend_applies_renew')) {
|
||||
hotTargets.add(targetId)
|
||||
}
|
||||
const extraTargets = upgradeStackCount(roguelikeUpgrades, `slot${spell.key as SlotKey}-extra-target` as RoguelikeUpgradeId)
|
||||
for (let index = 0; index < extraTargets; index += 1) {
|
||||
if (spell.kind === 'group') break
|
||||
if (spell.kind === 'hot') {
|
||||
@@ -594,6 +603,7 @@ export function CombatScreen({
|
||||
const nextParty = current.party.map((member) => {
|
||||
if (member.health <= 0) return member
|
||||
if (spell.kind === 'group') {
|
||||
if (!groupTargets.has(member.id)) return member
|
||||
const power = Math.round(spell.power * (1.25 ** upgradeStackCount(roguelikeUpgrades, 'group-heal-boost')))
|
||||
const nextHealth = healMember(member, power)
|
||||
addFloatingHeal(member.id, Math.max(0, nextHealth - member.health))
|
||||
@@ -902,11 +912,17 @@ export function CombatScreen({
|
||||
}
|
||||
|
||||
const healerBeforeDamage = current.party.find((member) => member.id === 'mira')
|
||||
const tankPressure = tankPressureTargets(current.party)
|
||||
const tankPressureIds = new Set(tankPressure.targets.map((member) => member.id))
|
||||
const nextParty = current.party.map((member) => {
|
||||
if (member.health <= 0) return member
|
||||
let damage = member.id === primaryTarget.id ? encounter.damage : 0
|
||||
if (member.role === 'Tank') damage += encounter.tankDamage
|
||||
if (tankBuster && member.role === 'Tank') damage += Math.round(22 * difficulty.damageMultiplier)
|
||||
if (tankPressureIds.has(member.id)) {
|
||||
damage += Math.round(encounter.tankDamage * tankPressure.multiplier)
|
||||
}
|
||||
if (tankBuster && tankPressureIds.has(member.id)) {
|
||||
damage += Math.round(22 * difficulty.damageMultiplier * tankPressure.multiplier)
|
||||
}
|
||||
if (bossPulse) damage += Math.round(12 * difficulty.damageMultiplier)
|
||||
if (member.debuff) damage += Math.round(7 * difficulty.damageMultiplier)
|
||||
const nextPoisonStacks = appliesPoison && member.id === primaryTarget.id
|
||||
@@ -966,7 +982,7 @@ export function CombatScreen({
|
||||
return
|
||||
}
|
||||
|
||||
const nextEnemyHealth = current.enemyHealth - encounter.partyDamage
|
||||
const nextEnemyHealth = current.enemyHealth - partyDamageOutput(nextParty, encounter.partyDamage)
|
||||
if (nextEnemyHealth > 0) {
|
||||
setCombat({
|
||||
...current,
|
||||
@@ -1351,7 +1367,7 @@ export function CombatScreen({
|
||||
|
||||
{status === 'upgrade-choice' && (
|
||||
<div className="result-screen">
|
||||
<div>
|
||||
<div className="pvp-upgrade-dialog pve-upgrade-dialog">
|
||||
<p className="eyebrow">
|
||||
{encounter.isBoss
|
||||
? `Roguelike Stage ${roguelikeStage} Complete`
|
||||
@@ -1359,13 +1375,18 @@ export function CombatScreen({
|
||||
</p>
|
||||
<h2>Choose Upgrade</h2>
|
||||
<p>Pick one upgrade before the next fight.</p>
|
||||
<div className="upgrade-choice-grid">
|
||||
{upgradeChoices.map((upgrade) => (
|
||||
<button key={upgrade.id} onClick={() => chooseRoguelikeUpgrade(upgrade)} type="button">
|
||||
<strong>{upgrade.name}</strong>
|
||||
<small>{upgrade.description}</small>
|
||||
</button>
|
||||
))}
|
||||
<div className="pvp-choice-columns">
|
||||
<div>
|
||||
<strong>Run Buff</strong>
|
||||
<div className="upgrade-choice-grid">
|
||||
{upgradeChoices.map((upgrade) => (
|
||||
<button key={upgrade.id} onClick={() => chooseRoguelikeUpgrade(upgrade)} type="button">
|
||||
<strong>{upgrade.name}</strong>
|
||||
<small>{upgrade.description}</small>
|
||||
</button>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{roguelikeUpgrades.length > 0 && (
|
||||
<p className="roguelike-upgrade-list">
|
||||
|
||||
Reference in New Issue
Block a user