Release Healer Man 0.1.6
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
export interface HealingResolution {
|
||||
readonly rawAmount: number;
|
||||
readonly effectiveAmount: number;
|
||||
readonly overheal: number;
|
||||
readonly critical: boolean;
|
||||
}
|
||||
export function resolveHealing(
|
||||
amount: number,
|
||||
currentHealth: number,
|
||||
maximumHealth: number,
|
||||
criticalChance = 0,
|
||||
roll = 1,
|
||||
criticalMultiplier = 1.5,
|
||||
): HealingResolution {
|
||||
const critical = Number.isFinite(roll) && roll < Math.max(0, Math.min(1, criticalChance));
|
||||
const rawAmount = Math.max(0, Math.round(
|
||||
(Number.isFinite(amount) ? amount : 0) * (critical ? Math.max(1, criticalMultiplier) : 1),
|
||||
));
|
||||
const missing = Math.max(0, (Number.isFinite(maximumHealth) ? maximumHealth : 0)
|
||||
- (Number.isFinite(currentHealth) ? currentHealth : 0));
|
||||
const effectiveAmount = Math.min(rawAmount, missing);
|
||||
return Object.freeze({
|
||||
rawAmount,
|
||||
effectiveAmount,
|
||||
overheal: rawAmount - effectiveAmount,
|
||||
critical,
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user