1
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import { resolveCustomWorldRoleIdReference } from '../services/customWorldRoleReferences';
|
||||
import {
|
||||
canUseLimitedPrimaryNpcChat,
|
||||
resolveActiveSceneActEncounterFocusNpcId,
|
||||
@@ -145,9 +146,16 @@ function getAvailableActiveSceneActNpcs(state: GameState) {
|
||||
|
||||
return (state.currentScenePreset?.npcs ?? [])
|
||||
.filter(candidate => {
|
||||
const candidateIds = [candidate.id, candidate.characterId].filter(
|
||||
(value): value is string => Boolean(value),
|
||||
);
|
||||
const candidateIds = [
|
||||
candidate.id,
|
||||
candidate.characterId,
|
||||
candidate.name,
|
||||
candidate.title,
|
||||
]
|
||||
.map((value) =>
|
||||
resolveCustomWorldRoleIdReference(state.customWorldProfile, value),
|
||||
)
|
||||
.filter(Boolean);
|
||||
return candidateIds.some(id => activeActNpcIdSet.has(id));
|
||||
})
|
||||
.filter(candidate => candidate.characterId !== state.playerCharacter?.id)
|
||||
@@ -180,8 +188,19 @@ function pickFriendlySceneNpcForActiveAct(state: GameState, npcs: SceneNpc[]) {
|
||||
return (
|
||||
npcs.find(
|
||||
(npc) =>
|
||||
npc.id === focusNpcId ||
|
||||
(npc.characterId ? npc.characterId === focusNpcId : false),
|
||||
resolveCustomWorldRoleIdReference(state.customWorldProfile, npc.id) === focusNpcId ||
|
||||
resolveCustomWorldRoleIdReference(
|
||||
state.customWorldProfile,
|
||||
npc.characterId,
|
||||
) === focusNpcId ||
|
||||
resolveCustomWorldRoleIdReference(
|
||||
state.customWorldProfile,
|
||||
npc.name,
|
||||
) === focusNpcId ||
|
||||
resolveCustomWorldRoleIdReference(
|
||||
state.customWorldProfile,
|
||||
npc.title,
|
||||
) === focusNpcId,
|
||||
) ?? pickRandomItem(npcs)
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user