Release Healer Man 0.1.45
This commit is contained in:
1 parent
756ee4f64a
commit
f82daf1c13
242 files changed
+1440
-101
No files matched your search
@@ -54,6 +54,7 @@ import {
|
||||
partyAbilityAmount,
|
||||
} from "./partyAbilityAi";
|
||||
import { normalizeActorResourcePool } from "./combatActors";
|
||||
import { enemyControlPreventsActions } from "./enemyAttacks";
|
||||
import { advanceCombatResourcePool } from "./combatResources";
|
||||
import { channelAmountEffects } from "./combatChannelAmounts";
|
||||
import { healingAbilityCanAidOthers, healingAbilityHasPendingHot, healingRecipientIds } from "./healingAbilityRules";
|
||||
@@ -405,7 +406,10 @@ export function applyHealerSupport(
|
||||
.map((member, index) => ({ member, index, ability: partyResurrectionAbility(member) }))
|
||||
.filter((candidate): candidate is typeof candidate & { ability: AbilityDefinition } => (
|
||||
candidate.member.health > 0
|
||||
&& candidate.member.controlledUntil <= now
|
||||
&& (
|
||||
candidate.member.controlledUntil <= now
|
||||
|| !enemyControlPreventsActions(candidate.member.controlMechanic)
|
||||
)
|
||||
&& candidate.member.nextActionAt <= now
|
||||
&& candidate.ability !== null
|
||||
))
|
||||
@@ -1175,7 +1179,15 @@ export function advanceDungeonPartyCombat(now = Date.now()): void {
|
||||
if (shouldRegen) nextRegenAt = now + 1_000;
|
||||
if (!targetId) {
|
||||
members = members.map((member) => {
|
||||
if (member.health <= 0 || member.controlledUntil > now || !shouldRegen || deltaSeconds <= 0) return member;
|
||||
if (
|
||||
member.health <= 0
|
||||
|| (
|
||||
member.controlledUntil > now
|
||||
&& enemyControlPreventsActions(member.controlMechanic)
|
||||
)
|
||||
|| !shouldRegen
|
||||
|| deltaSeconds <= 0
|
||||
) return member;
|
||||
return {
|
||||
...member,
|
||||
health: Math.min(
|
||||
@@ -1200,7 +1212,10 @@ export function advanceDungeonPartyCombat(now = Date.now()): void {
|
||||
nextMembers[index] = { ...member, status: "advancing", activeCast: null, activeCastTargetId: null };
|
||||
continue;
|
||||
}
|
||||
if (member.controlledUntil > now) {
|
||||
if (
|
||||
member.controlledUntil > now
|
||||
&& enemyControlPreventsActions(member.controlMechanic)
|
||||
) {
|
||||
nextMembers[index] = member.status === "holding"
|
||||
? member
|
||||
: { ...member, status: "holding" };
|
||||
@@ -1210,7 +1225,7 @@ export function advanceDungeonPartyCombat(now = Date.now()): void {
|
||||
nextMembers[index] = member.status === "holding" ? member : { ...member, status: "holding" };
|
||||
continue;
|
||||
}
|
||||
const activeMember = member.controlMechanic
|
||||
const activeMember = member.controlMechanic && member.controlledUntil <= now
|
||||
? { ...member, controlledUntil: 0, controlMechanic: null }
|
||||
: member;
|
||||
member = activeMember;
|
||||
@@ -1465,10 +1480,13 @@ export function advanceDungeonPartyCombat(now = Date.now()): void {
|
||||
: "ready" as const;
|
||||
members = members.map((member) => {
|
||||
if (member.health <= 0) return member.status === "down" ? member : { ...member, status: "down" };
|
||||
if (member.controlledUntil > now) {
|
||||
if (
|
||||
member.controlledUntil > now
|
||||
&& enemyControlPreventsActions(member.controlMechanic)
|
||||
) {
|
||||
return member.status === "holding" ? member : { ...member, status: "holding" };
|
||||
}
|
||||
const activeMember = member.controlMechanic
|
||||
const activeMember = member.controlMechanic && member.controlledUntil <= now
|
||||
? { ...member, controlledUntil: 0, controlMechanic: null }
|
||||
: member;
|
||||
const recovered = activeMember.health;
|
||||
|
||||
Reference in new issue
Block a user