Implement scene-based chapter quest progression
Some checks failed
CI / verify (push) Has been cancelled
Some checks failed
CI / verify (push) Has been cancelled
This commit is contained in:
@@ -34,6 +34,7 @@ import {
|
||||
getHostileNpcPresetById,
|
||||
getMonsterPresetsByWorld,
|
||||
} from '../data/hostileNpcPresets';
|
||||
import { buildMedievalNpcVisualFromCustomWorldVisual } from '../data/medievalNpcVisuals';
|
||||
import {
|
||||
buildEncounterAttributeRumors,
|
||||
resolveEncounterAttributeProfile,
|
||||
@@ -777,34 +778,55 @@ export function AdventureEntityModal({
|
||||
<div className="flex flex-col items-center text-center">
|
||||
<div className="flex h-44 w-full max-w-[16rem] items-end justify-center overflow-hidden rounded-2xl border border-white/10 bg-black/20">
|
||||
{selection.kind === 'player' && playerCharacter ? (
|
||||
<CharacterAnimator
|
||||
state={AnimationState.IDLE}
|
||||
character={playerCharacter}
|
||||
className="h-full w-full"
|
||||
imageClassName="object-bottom"
|
||||
style={getCharacterDetailSpriteStyle(
|
||||
playerCharacter,
|
||||
)}
|
||||
/>
|
||||
playerCharacter.visual ? (
|
||||
<MedievalNpcAnimator
|
||||
visualSpec={buildMedievalNpcVisualFromCustomWorldVisual(playerCharacter.visual)}
|
||||
scale={2.08}
|
||||
/>
|
||||
) : (
|
||||
<CharacterAnimator
|
||||
state={AnimationState.IDLE}
|
||||
character={playerCharacter}
|
||||
className="h-full w-full"
|
||||
imageClassName="object-bottom"
|
||||
style={getCharacterDetailSpriteStyle(
|
||||
playerCharacter,
|
||||
)}
|
||||
/>
|
||||
)
|
||||
) : selection.kind === 'companion' &&
|
||||
companionCharacter ? (
|
||||
<CharacterAnimator
|
||||
state={AnimationState.IDLE}
|
||||
character={companionCharacter}
|
||||
className="h-full w-full"
|
||||
imageClassName="object-bottom"
|
||||
style={getCharacterDetailSpriteStyle(
|
||||
companionCharacter,
|
||||
)}
|
||||
/>
|
||||
companionCharacter.visual ? (
|
||||
<MedievalNpcAnimator
|
||||
visualSpec={buildMedievalNpcVisualFromCustomWorldVisual(companionCharacter.visual)}
|
||||
scale={2.08}
|
||||
/>
|
||||
) : (
|
||||
<CharacterAnimator
|
||||
state={AnimationState.IDLE}
|
||||
character={companionCharacter}
|
||||
className="h-full w-full"
|
||||
imageClassName="object-bottom"
|
||||
style={getCharacterDetailSpriteStyle(
|
||||
companionCharacter,
|
||||
)}
|
||||
/>
|
||||
)
|
||||
) : npcCharacter ? (
|
||||
<CharacterAnimator
|
||||
state={AnimationState.IDLE}
|
||||
character={npcCharacter}
|
||||
className="h-full w-full"
|
||||
imageClassName="object-bottom"
|
||||
style={getCharacterDetailSpriteStyle(npcCharacter)}
|
||||
/>
|
||||
npcCharacter.visual ? (
|
||||
<MedievalNpcAnimator
|
||||
visualSpec={buildMedievalNpcVisualFromCustomWorldVisual(npcCharacter.visual)}
|
||||
scale={2.08}
|
||||
/>
|
||||
) : (
|
||||
<CharacterAnimator
|
||||
state={AnimationState.IDLE}
|
||||
character={npcCharacter}
|
||||
className="h-full w-full"
|
||||
imageClassName="object-bottom"
|
||||
style={getCharacterDetailSpriteStyle(npcCharacter)}
|
||||
/>
|
||||
)
|
||||
) : hostileNpcPreset ? (
|
||||
<HostileNpcAnimator
|
||||
hostileNpc={hostileNpcPreset}
|
||||
@@ -925,9 +947,9 @@ export function AdventureEntityModal({
|
||||
)}
|
||||
{relatedConsequences.length > 0 && (
|
||||
<div className="space-y-1">
|
||||
{relatedConsequences.map((record) => (
|
||||
{relatedConsequences.map((record, index) => (
|
||||
<div
|
||||
key={record.id}
|
||||
key={record.id || `consequence-${record.title}-${index}`}
|
||||
className="rounded-xl border border-white/8 bg-black/20 px-3 py-2 text-xs text-zinc-400"
|
||||
>
|
||||
<span className="text-white">{record.title}</span>
|
||||
@@ -939,9 +961,9 @@ export function AdventureEntityModal({
|
||||
)}
|
||||
{recentChronicleEntries.length > 0 && (
|
||||
<div className="space-y-1">
|
||||
{recentChronicleEntries.map((entry) => (
|
||||
{recentChronicleEntries.map((entry, index) => (
|
||||
<div
|
||||
key={entry.id}
|
||||
key={entry.id || `chronicle-${entry.title}-${index}`}
|
||||
className="rounded-xl border border-white/8 bg-black/20 px-3 py-2"
|
||||
>
|
||||
<div className="text-sm font-medium text-white">
|
||||
@@ -961,9 +983,9 @@ export function AdventureEntityModal({
|
||||
)}
|
||||
{sceneResidues.length > 0 && (
|
||||
<div className="space-y-1">
|
||||
{sceneResidues.map((residue) => (
|
||||
{sceneResidues.map((residue, index) => (
|
||||
<div
|
||||
key={residue.id}
|
||||
key={residue.id || `residue-${residue.title}-${index}`}
|
||||
className="rounded-xl border border-white/8 bg-black/20 px-3 py-2 text-xs text-zinc-400"
|
||||
>
|
||||
<span className="text-white">{residue.title}</span>
|
||||
|
||||
Reference in New Issue
Block a user