Release Healer Man 0.1.45

This commit is contained in:
phenom committed 2026-09-15 14:43:15 -04:00
1 parent 756ee4f64a
commit f82daf1c13
242 files changed
+1440 -101

No files matched your search

+11 -3
View File
@@ -27,6 +27,10 @@ import { derivePartySpawnSlots } from "../game/partySpawnSlots";
import { requireDungeonDefinition } from "../game/dungeonRegistry";
import type { DungeonBossObjective, DungeonTraversalRamp } from "../game/dungeonTypes";
import { getMobPosition } from "../game/mobRuntimeRegistry";
import {
enemyControlMovementMultiplier,
enemyControlPreventsMovement,
} from "../game/enemyAttacks";
import {
appendPartyBreadcrumb,
createPartyBreadcrumbCursor,
@@ -1038,11 +1042,14 @@ function PartyActors({
let movementExpected = false;
let faceX = Math.sin(actor.rotation.y);
let faceZ = Math.cos(actor.rotation.y);
const activeControlMechanic = member.controlledUntil > combatNow
? member.controlMechanic
: null;
if (member.health <= 0) {
const signal = movingSignalsRef.current.get(member.id);
if (signal) signal.current = false;
} else if (member.activeCast || member.controlledUntil > combatNow) {
} else if (member.activeCast || enemyControlPreventsMovement(activeControlMechanic)) {
// Casting and crowd control are intentional immobility, not stuck navigation.
} else if (rejoining) {
const intent = partyRejoinMovement(member.id, current, playerNavigation, routeNow,
@@ -1304,7 +1311,8 @@ function PartyActors({
const currentPlanarDistance = planarDistance(current, playerNavigation);
if (member.health > 0 && (party.command !== "stop" || rejoining) && hasDesired) {
const speed = (currentPlanarDistance > 8 ? PARTY_CATCH_UP_SPEED : PARTY_MOVE_SPEED)
* movementProfile.speedMultiplier;
* movementProfile.speedMultiplier
* enemyControlMovementMultiplier(activeControlMechanic);
const moved = stepPartyPosition(current, desired, speed * safeDelta, nextPosition);
// Route progress, not radial player distance, is authoritative. A
// valid path may need to move away briefly around a U-bend.
@@ -1346,7 +1354,7 @@ function PartyActors({
paused: !active || game.paused || game.mapOpen || game.companionOpen,
stopped: party.command === "stop" && !rejoining,
casting: member.activeCast !== null,
controlled: member.controlledUntil > combatNow,
controlled: enemyControlPreventsMovement(activeControlMechanic),
nowMs: routeNow,
});
if (recovery !== "none") {