mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-08-28 14:18:04 -05:00
Add object shredder to damage table
This commit is contained in:
@@ -96,6 +96,7 @@ export function multipliersToRecordWithFallbacks(
|
||||
) as Record<DamageReceiver, number>;
|
||||
}
|
||||
|
||||
const objectShredderMultipliers = objectDamages.ObjectEffect_Up.rates;
|
||||
export function calculateDamage({
|
||||
analyzed,
|
||||
mainWeaponId,
|
||||
@@ -140,21 +141,34 @@ export function calculateDamage({
|
||||
return {
|
||||
receiver,
|
||||
hitPoints: damageReceiverHp,
|
||||
damages: filteredDamages.map((damage) => {
|
||||
const multiplier = multipliers[damage.type]![receiver];
|
||||
const damagePerHit = roundToNDecimalPlaces(damage.value * multiplier);
|
||||
damages: filteredDamages
|
||||
.flatMap((damage) => [
|
||||
{ ...damage, objectShredder: false },
|
||||
{ ...damage, objectShredder: true },
|
||||
])
|
||||
.map((damage) => {
|
||||
const baseMultiplier = multipliers[damage.type]![receiver];
|
||||
const objectShredderMultiplier =
|
||||
objectShredderMultipliers.find((m) => m.target === receiver)
|
||||
?.rate ?? 1;
|
||||
const multiplier =
|
||||
baseMultiplier *
|
||||
(damage.objectShredder ? objectShredderMultiplier : 1);
|
||||
|
||||
const hitsToDestroy = Math.ceil(damageReceiverHp / damagePerHit);
|
||||
const damagePerHit = roundToNDecimalPlaces(damage.value * multiplier);
|
||||
|
||||
return {
|
||||
value: damagePerHit,
|
||||
hitsToDestroy,
|
||||
multiplier,
|
||||
type: damage.type,
|
||||
id: damage.id,
|
||||
distance: damage.distance,
|
||||
};
|
||||
}),
|
||||
const hitsToDestroy = Math.ceil(damageReceiverHp / damagePerHit);
|
||||
|
||||
return {
|
||||
value: damagePerHit,
|
||||
hitsToDestroy,
|
||||
multiplier: roundToNDecimalPlaces(multiplier, 2),
|
||||
type: damage.type,
|
||||
id: `${damage.id}-${String(damage.objectShredder)}`,
|
||||
distance: damage.distance,
|
||||
objectShredder: damage.objectShredder,
|
||||
};
|
||||
}),
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
@@ -184,12 +184,15 @@ function DamageReceiversGrid({
|
||||
<div />
|
||||
{damagesToReceivers[0]?.damages.map((damage) => (
|
||||
<div key={damage.id} className="object-damage__table-header">
|
||||
{t(
|
||||
damageTypeTranslationString({
|
||||
damageType: damage.type,
|
||||
subWeaponId: subWeaponId,
|
||||
})
|
||||
)}
|
||||
<div className="stack horizontal sm justify-center items-center">
|
||||
{t(
|
||||
damageTypeTranslationString({
|
||||
damageType: damage.type,
|
||||
subWeaponId: subWeaponId,
|
||||
})
|
||||
)}
|
||||
{damage.objectShredder && <Ability ability="OS" size="TINY" />}
|
||||
</div>
|
||||
<div
|
||||
className={clsx("object-damage__distance", {
|
||||
invisible: !damage.distance,
|
||||
|
||||
Reference in New Issue
Block a user