Update Healer Man server
This commit is contained in:
1 parent
4c768fbec6
commit
b16821e92e
330 files changed
+35406
-1760
No files matched your search
@@ -28,6 +28,7 @@ import {
|
||||
} from "./partyRuntimeRegistry";
|
||||
import { usePartyStore } from "./partyStore";
|
||||
import { useGameStore } from "./store";
|
||||
import { ingestRelayDamageText, withSuppressedReplayDamageText } from "./floatingCombatText";
|
||||
import { useManastormStore } from "./manastormStore";
|
||||
import { advanceManastormSession } from "./manastormSession";
|
||||
import { useWailingEncounterStore } from "./wailingCavernsEncounter";
|
||||
@@ -112,7 +113,7 @@ export function applySharedWorld(world: OnlineSharedWorld): void {
|
||||
}
|
||||
}
|
||||
|
||||
function eventForRelay(
|
||||
export function eventForRelay(
|
||||
event: ReturnType<typeof useCombatStore.getState>["combatEvents"][number],
|
||||
localAccountId: string,
|
||||
authority: boolean,
|
||||
@@ -124,7 +125,17 @@ function eventForRelay(
|
||||
));
|
||||
const sourceIsLocal = event.sourceActorId === PLAYER_AGGRO_ID || playerOwnedSummon;
|
||||
const targetsRemotePlayer = isOnlinePlayerActorId(event.targetActorId);
|
||||
if (!sourceIsLocal && !(authority && targetsRemotePlayer)) return null;
|
||||
const partyMembers = usePartyStore.getState().members;
|
||||
const sourceIsCompanion = partyMembers.some((member) => member.id === event.sourceActorId)
|
||||
|| combat.summons.some((summon) => partyMembers.some((member) => member.id === summon.ownerActorId)
|
||||
&& summon.id === event.sourceActorId);
|
||||
const companionDamageToMob = authority && event.kind === "damage"
|
||||
&& Boolean(combat.mobs[event.targetActorId]) && sourceIsCompanion;
|
||||
const authorityDamageToFriendly = authority && event.kind === "damage" && !sourceIsLocal
|
||||
&& (event.targetActorId === PLAYER_AGGRO_ID
|
||||
|| partyMembers.some((member) => member.id === event.targetActorId));
|
||||
if (!sourceIsLocal && !(authority && targetsRemotePlayer)
|
||||
&& !companionDamageToMob && !authorityDamageToFriendly) return null;
|
||||
const localActorId = onlinePlayerActorId(localAccountId);
|
||||
const targetActorId = event.targetActorId === PLAYER_AGGRO_ID
|
||||
? localActorId
|
||||
@@ -342,7 +353,10 @@ export function OnlineSessionBridge() {
|
||||
updatePartyRuntimePosition(actorId, player.position[0], player.position[1], player.position[2]);
|
||||
}
|
||||
if (!snapshot.authority && snapshot.world) applySharedWorld(snapshot.world);
|
||||
for (const event of snapshot.events) applyRelayEvent(event, snapshot, applyingRef);
|
||||
for (const event of snapshot.events) {
|
||||
withSuppressedReplayDamageText(() => applyRelayEvent(event, snapshot, applyingRef));
|
||||
ingestRelayDamageText(event, snapshot);
|
||||
}
|
||||
useCombatStore.getState().synchronizeActors();
|
||||
accept(snapshot);
|
||||
} catch (error) {
|
||||
|
||||
Reference in new issue
Block a user