Release Healer Man 0.1.5
This commit is contained in:
@@ -520,6 +520,7 @@ export interface CombatState {
|
||||
tauntMob: (id: string, source: ThreatSource, durationMs: number, now?: number) => boolean;
|
||||
damagePlayer: (amount: number, school?: DamageSchool, attackerLevel?: number) => number;
|
||||
healPlayer: (amount: number) => number;
|
||||
revivePlayer: (percentMaxHealth?: number) => number;
|
||||
cancelCast: (message?: string) => boolean;
|
||||
engageNearbyMobs: (now?: number, playerPosition?: CombatPosition) => number;
|
||||
advanceMobCombat: (now?: number, playerPosition?: CombatPosition) => number;
|
||||
@@ -3851,6 +3852,9 @@ export const useCombatStore = create<CombatState>((set, get) => ({
|
||||
|
||||
healPlayer: (amount) => {
|
||||
const state = get();
|
||||
// Ordinary healing and lingering HoTs must not raise a defeated player.
|
||||
// Resurrection is an explicit combat action handled by revivePlayer.
|
||||
if (state.health <= 0) return 0;
|
||||
const modified = resolveAuraHealingValue(
|
||||
amount,
|
||||
aurasForEntity(state.auras, PLAYER_AURA_ENTITY_ID),
|
||||
@@ -3867,6 +3871,22 @@ export const useCombatStore = create<CombatState>((set, get) => ({
|
||||
return healed;
|
||||
},
|
||||
|
||||
revivePlayer: (percentMaxHealth = 0.35) => {
|
||||
const state = get();
|
||||
if (state.health > 0 || state.maxHealth <= 0) return 0;
|
||||
const restored = Math.max(1, Math.round(
|
||||
state.maxHealth * Math.max(0.01, Math.min(1, percentMaxHealth)),
|
||||
));
|
||||
set({
|
||||
health: restored,
|
||||
controlledUntil: 0,
|
||||
controlMechanic: null,
|
||||
playerAnimationEvent: nextAnimationEvent("ability-cancel"),
|
||||
feedback: nextFeedback("heal", `Resurrected with ${restored} health.`, { amount: restored }),
|
||||
});
|
||||
return restored;
|
||||
},
|
||||
|
||||
cancelCast: (message = "Casting interrupted.") => {
|
||||
const cast = get().activeCast;
|
||||
if (!cast) return false;
|
||||
|
||||
Reference in New Issue
Block a user