Release Healer Man 0.1.6

This commit is contained in:
phenom committed 2026-08-20 14:05:50 -04:00
1 parent 55cfd43d66
commit b12fb84859
96 files changed
+10874 -609

No files matched your search

+41 -1
View File
@@ -73,6 +73,7 @@ import {
resolveMobAnimationInterval,
} from "./mobAnimationCadence";
import { useGameGLTF } from "./useGameGLTF";
import { onlineSynchronizedMobTransform, requestOnlineInteraction } from "../game/onlineSessionRuntime";
const MOVEMENT_LOCKING_MOB_STATUSES: ReadonlySet<string> = new Set([
"stun", "root", "sleep", "knockdown", "freeze", "charm", "confuse",
@@ -916,7 +917,9 @@ function ProxyMob({
if (event.button !== PRIMARY_MOUSE_BUTTON) return;
event.stopPropagation();
if (dead) {
useCombatStore.getState().lootMob(instanceId);
if (!requestOnlineInteraction("loot", instanceId)) {
useCombatStore.getState().lootMob(instanceId);
}
return;
}
usePartyStore.getState().clearSelection();
@@ -1188,6 +1191,25 @@ function RoamingPack({
const forward = scratchForwards[index];
const member = definition.members[index];
const instanceId = `${definition.id}:${member.id}`;
const synchronizedTransform = onlineSynchronizedMobTransform(instanceId);
if (synchronizedTransform) {
const object = memberRefs.current[index];
if (object) {
object.position.set(...synchronizedTransform.position);
object.rotation.y = synchronizedTransform.yaw;
}
chasePositions[index][0] = synchronizedTransform.position[0];
chasePositions[index][1] = synchronizedTransform.position[1];
chasePositions[index][2] = synchronizedTransform.position[2];
updateMobRuntimePosition(
instanceId,
synchronizedTransform.position[0],
synchronizedTransform.position[1],
synchronizedTransform.position[2],
synchronizedTransform.yaw,
);
continue;
}
const mob = combat.mobs[instanceId];
const chasePosition = chasePositions[index];
const engaged = Boolean(mob?.engaged && !mob.dead);
@@ -1303,6 +1325,24 @@ function StaticPopulationMember({ spawn, entities, active, showLabels, useOrigin
const positionRef = useRef<MutableMobVector3>([...spawn.position]);
useEffect(() => registerMobRuntime(spawn.id, spawn.position, spawn.yaw ?? 0), [spawn.id, spawn.position, spawn.yaw]);
useFrame((_, delta) => {
const synchronizedTransform = onlineSynchronizedMobTransform(spawn.id);
if (synchronizedTransform) {
positionRef.current[0] = synchronizedTransform.position[0];
positionRef.current[1] = synchronizedTransform.position[1];
positionRef.current[2] = synchronizedTransform.position[2];
if (groupRef.current) {
groupRef.current.position.set(...synchronizedTransform.position);
groupRef.current.rotation.y = synchronizedTransform.yaw;
}
updateMobRuntimePosition(
spawn.id,
synchronizedTransform.position[0],
synchronizedTransform.position[1],
synchronizedTransform.position[2],
synchronizedTransform.yaw,
);
return;
}
const mob = useCombatStore.getState().mobs[spawn.id];
const position = positionRef.current;
const player = useGameStore.getState().playerPosition;