Rework story engine flow and reorganize project docs
Some checks failed
CI / verify (push) Has been cancelled
Some checks failed
CI / verify (push) Has been cancelled
This commit is contained in:
@@ -1,12 +1,15 @@
|
||||
import {isRecord, readStoredJson, writeStoredJson} from '../persistence/storage';
|
||||
import {generateWorldAttributeSchema} from '../services/attributeSchemaGenerator';
|
||||
import {
|
||||
normalizeCustomWorldLandmarks,
|
||||
type CustomWorldLandmarkDraft,
|
||||
} from './customWorldSceneGraph';
|
||||
buildCustomWorldAnchorPackFromIntent,
|
||||
deriveCustomWorldLockStateFromIntent,
|
||||
normalizeCustomWorldCreatorIntent,
|
||||
normalizeCustomWorldLockState,
|
||||
} from '../services/customWorldCreatorIntent';
|
||||
import {
|
||||
CharacterBackstoryChapter,
|
||||
CharacterBackstoryRevealConfig,
|
||||
CustomWorldAnchorPack,
|
||||
CustomWorldItem,
|
||||
CustomWorldLandmark,
|
||||
CustomWorldNpc,
|
||||
@@ -29,6 +32,10 @@ import {
|
||||
DEFAULT_PRIVATE_CHAT_UNLOCK_AFFINITY,
|
||||
} from './affinityLevels';
|
||||
import {coerceWorldAttributeSchema} from './attributeValidation';
|
||||
import {
|
||||
type CustomWorldLandmarkDraft,
|
||||
normalizeCustomWorldLandmarks,
|
||||
} from './customWorldSceneGraph';
|
||||
|
||||
const CUSTOM_WORLD_LIBRARY_STORAGE_KEY = 'tavernrealms.custom-world-library.v1';
|
||||
const CUSTOM_WORLD_LIBRARY_VERSION = 1;
|
||||
@@ -592,6 +599,8 @@ function normalizeProfile(value: unknown): CustomWorldProfile | null {
|
||||
tone,
|
||||
playerGoal,
|
||||
templateWorldType,
|
||||
majorFactions: [],
|
||||
coreConflicts: [summary || playerGoal || settingText || name],
|
||||
attributeSchema: coerceWorldAttributeSchema(value.attributeSchema, generatedAttributeSchema),
|
||||
playableNpcs: Array.isArray(value.playableNpcs)
|
||||
? value.playableNpcs
|
||||
@@ -608,6 +617,29 @@ function normalizeProfile(value: unknown): CustomWorldProfile | null {
|
||||
landmarks: landmarkDrafts,
|
||||
storyNpcs,
|
||||
}),
|
||||
themePack: null,
|
||||
storyGraph: null,
|
||||
creatorIntent: normalizeCustomWorldCreatorIntent(value.creatorIntent),
|
||||
anchorPack:
|
||||
value.anchorPack && typeof value.anchorPack === 'object'
|
||||
? (value.anchorPack as CustomWorldAnchorPack)
|
||||
: buildCustomWorldAnchorPackFromIntent(
|
||||
normalizeCustomWorldCreatorIntent(value.creatorIntent),
|
||||
),
|
||||
lockState:
|
||||
value.lockState && isRecord(value.lockState)
|
||||
? normalizeCustomWorldLockState(value.lockState)
|
||||
: deriveCustomWorldLockStateFromIntent(
|
||||
normalizeCustomWorldCreatorIntent(value.creatorIntent),
|
||||
),
|
||||
generationMode:
|
||||
value.generationMode === 'fast' || value.generationMode === 'full'
|
||||
? value.generationMode
|
||||
: 'full',
|
||||
generationStatus:
|
||||
value.generationStatus === 'key_only' || value.generationStatus === 'complete'
|
||||
? value.generationStatus
|
||||
: 'complete',
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user