From 3b1495601174f6176c91d17dca57863032b1026e Mon Sep 17 00:00:00 2001 From: rsek Date: Sun, 25 Sep 2022 09:08:23 -0700 Subject: [PATCH] wip: schema revisions, abstract superbuilder --- _master-data/Ironsworn/Delve-Rarities.yaml | 67 +- _master-data/Ironsworn/Delve-Sites.yaml | 1254 ++-- .../Ironsworn/Oracles/Action_and_Theme.yaml | 468 +- .../Ironsworn/Oracles/Character-Delve.yaml | 198 +- _master-data/Ironsworn/Oracles/Character.yaml | 414 +- .../Ironsworn/Oracles/Combat_Event-Delve.yaml | 292 +- .../Ironsworn/Oracles/Feature-Delve.yaml | 282 +- .../Ironsworn/Oracles/Monstrosity-Delve.yaml | 346 +- .../Ironsworn/Oracles/Moves-Delve.yaml | 290 +- _master-data/Ironsworn/Oracles/Moves.yaml | 298 +- _master-data/Ironsworn/Oracles/Name.yaml | 854 +-- _master-data/Ironsworn/Oracles/Place.yaml | 364 +- .../Ironsworn/Oracles/Settlement.yaml | 700 +- .../Ironsworn/Oracles/Site_Name-Delve.yaml | 1102 +-- .../Ironsworn/Oracles/Site_Nature-Delve.yaml | 104 +- .../Ironsworn/Oracles/Threat-Delve.yaml | 396 +- .../Ironsworn/Oracles/Trap-Delve.yaml | 184 +- .../Ironsworn/Oracles/Turning_Point.yaml | 446 +- _master-data/Ironsworn/Truths.yaml | 61 +- dataforged-tools/.eslintrc.json | 1 - dataforged-tools/build/constants/index.d.ts | 4 + .../build/constants/index.d.ts.map | 2 +- dataforged-tools/build/constants/index.js | 4 + dataforged-tools/build/constants/index.js.map | 2 +- dataforged-tools/build/index.d.ts | 15 +- dataforged-tools/build/index.d.ts.map | 2 +- dataforged-tools/build/index.js | 19 +- dataforged-tools/build/index.js.map | 2 +- .../build/start-ironsworn.d.ts.map | 2 +- dataforged-tools/build/start-ironsworn.js | 8 +- dataforged-tools/build/start-ironsworn.js.map | 2 +- dataforged-tools/build/utils/buildAssets.d.ts | 10 - .../build/utils/buildAssets.d.ts.map | 1 - dataforged-tools/build/utils/buildAssets.js | 20 - .../build/utils/buildAssets.js.map | 1 - .../build/utils/buildDataforged.d.ts | 8 - .../build/utils/buildDataforged.d.ts.map | 1 - .../build/utils/buildDataforged.js | 53 - .../build/utils/buildDataforged.js.map | 1 - .../build/utils/buildEncounters.d.ts | 13 - .../build/utils/buildEncounters.d.ts.map | 1 - .../build/utils/buildEncounters.js | 43 - .../build/utils/buildEncounters.js.map | 1 - dataforged-tools/build/utils/buildImages.d.ts | 10 - .../build/utils/buildImages.d.ts.map | 1 - dataforged-tools/build/utils/buildImages.js | 15 - .../build/utils/buildImages.js.map | 1 - dataforged-tools/build/utils/buildMoves.d.ts | 6 - .../build/utils/buildMoves.d.ts.map | 1 - dataforged-tools/build/utils/buildMoves.js | 28 - .../build/utils/buildMoves.js.map | 1 - .../build/utils/buildOracles.d.ts | 7 - .../build/utils/buildOracles.d.ts.map | 1 - dataforged-tools/build/utils/buildOracles.js | 29 - .../build/utils/buildOracles.js.map | 1 - dataforged-tools/build/utils/buildTruths.d.ts | 12 - .../build/utils/buildTruths.d.ts.map | 1 - dataforged-tools/build/utils/buildTruths.js | 35 - .../build/utils/buildTruths.js.map | 1 - .../build/utils/dataforgedStats.d.ts | 8 +- .../build/utils/dataforgedStats.d.ts.map | 2 +- .../build/utils/dataforgedStats.js | 6 +- .../build/utils/dataforgedStats.js.map | 2 +- .../build/utils/getNameFromId.d.ts | 6 - .../build/utils/getNameFromId.d.ts.map | 1 - dataforged-tools/build/utils/getNameFromId.js | 9 - .../build/utils/getNameFromId.js.map | 1 - .../object_transform/extractRowContent.d.ts | 2 +- .../extractRowContent.d.ts.map | 2 +- .../object_transform/extractRowRolls.d.ts | 2 +- .../object_transform/extractRowRolls.d.ts.map | 2 +- .../object_transform/inferSetsAttributes.d.ts | 2 +- .../inferSetsAttributes.d.ts.map | 2 +- .../utils/object_transform/pickInput.d.ts | 6 +- .../utils/object_transform/pickInput.d.ts.map | 2 +- .../build/utils/object_transform/pickInput.js | 2 +- .../utils/object_transform/pickInput.js.map | 2 +- .../object_transform/templateOracle.d.ts | 2 +- .../object_transform/templateOracle.d.ts.map | 2 +- .../object_transform/templateOracleTable.d.ts | 2 +- .../templateOracleTable.d.ts.map | 2 +- .../process_yaml/concatWithYamlRefs.d.ts | 9 - .../process_yaml/concatWithYamlRefs.d.ts.map | 1 - .../utils/process_yaml/concatWithYamlRefs.js | 21 - .../process_yaml/concatWithYamlRefs.js.map | 1 - .../utils/process_yaml/loadYamlRefs.d.ts | 8 - .../utils/process_yaml/loadYamlRefs.d.ts.map | 1 - .../build/utils/process_yaml/loadYamlRefs.js | 17 - .../utils/process_yaml/loadYamlRefs.js.map | 1 - .../utils/process_yaml/loadYamlTemplates.d.ts | 7 - .../process_yaml/loadYamlTemplates.d.ts.map | 1 - .../utils/process_yaml/loadYamlTemplates.js | 16 - .../process_yaml/loadYamlTemplates.js.map | 1 - .../build/utils/sortIronsworn.d.ts | 2 +- .../build/utils/sortIronsworn.d.ts.map | 2 +- dataforged-tools/build/utils/sortIronsworn.js | 2 +- .../build/utils/sortIronsworn.js.map | 2 +- .../build/utils/types/AttributeHash.d.ts | 2 +- .../build/utils/types/AttributeHash.d.ts.map | 2 +- .../build/utils/validateColor.d.ts | 7 - .../build/utils/validateColor.d.ts.map | 1 - dataforged-tools/build/utils/validateColor.js | 9 - .../build/utils/validateColor.js.map | 1 - .../src/builders/CollectionBuilder.ts | 164 + .../src/builders/IronlandsBuilder.ts | 29 + .../src/builders/RootDataBuilder.ts | 0 .../builders/assets/AlterMomentumBuilder.ts | 3 +- .../src/builders/assets/AlterMoveBuilder.ts | 5 +- .../builders/assets/AssetAbilityBuilder.ts | 11 +- .../assets/AssetAlterPropertiesBuilder.ts | 3 +- .../src/builders/assets/AssetBuilder.ts | 11 +- .../src/builders/assets/AssetStateBuilder.ts | 3 +- .../src/builders/assets/AssetTypeBuilder.ts | 9 +- .../common/AttributeRequirementsBuilder.ts | 2 +- .../builders/common/ConditionMeterBuilder.ts | 5 +- .../common/CustomStatOptionBuilder.ts | 2 +- .../src/builders/common/DisplayBuilder.ts | 2 +- .../src/builders/common/InputBuilder.ts | 6 +- .../src/builders/common/InputSelectBuilder.ts | 5 +- .../src/builders/common/MeterBuilder.ts | 3 +- .../builders/common/RequirementsBuilder.ts | 3 +- .../builders/common/RollTemplateBuilder.ts | 3 +- .../src/builders/common/SourceBuilder.ts | 48 +- .../builders/common/SourceInheritorBuilder.ts | 2 +- .../src/builders/common/SuggestionsBuilder.ts | 3 +- .../src/builders/common/TitleBuilder.ts | 5 +- .../builders/cyclopedia/EncounterBuilder.ts | 3 +- .../cyclopedia/EncounterClassicBuilder.ts | 7 +- .../EncounterNatureClassicBuilder.ts | 10 +- .../cyclopedia/EncounterStarforgedBuilder.ts | 11 +- .../cyclopedia/EncounterVariantBuilder.ts | 5 +- .../cyclopedia/IronlandsRegionBuilder.ts | 9 +- .../builders/delve_site/DelveCardBuilder.ts | 8 +- .../src/builders/delve_site/index.ts | 1 + dataforged-tools/src/builders/index.ts | 5 +- .../src/builders/moves/CustomStatBuilder.ts | 3 +- .../src/builders/moves/MoveBuilder.ts | 12 +- .../src/builders/moves/MoveCategoryBuilder.ts | 9 +- .../moves/MoveCategoryDisplayBuilder.ts | 4 +- .../src/builders/moves/MoveTriggerBuilder.ts | 7 +- .../moves/MoveTriggerOptionBuilder.ts | 5 +- .../src/builders/moves/OutcomeBuilder.ts | 5 +- .../src/builders/moves/OutcomesBuilder.ts | 3 +- .../oracles/AttributeSetterBuilder.ts | 2 +- .../src/builders/oracles/GameObjectBuilder.ts | 3 +- .../builders/oracles/MultipleRollsBuilder.ts | 2 +- .../src/builders/oracles/OracleBuilder.ts | 18 +- .../builders/oracles/OracleContentBuilder.ts | 2 +- .../builders/oracles/OracleDisplayBuilder.ts | 5 +- .../src/builders/oracles/OracleSetBuilder.ts | 5 +- .../builders/oracles/OracleTableBuilder.ts | 6 +- .../builders/oracles/OracleTableRefBuilder.ts | 2 +- .../builders/oracles/OracleUsageBuilder.ts | 5 +- .../src/builders/oracles/RowBuilder.ts | 5 +- .../builders/oracles/TableColumnBuilder.ts | 4 +- .../builders/rarities/DelveRarityBuilder.ts | 5 +- .../src/builders/truths/TruthBuilder.ts | 7 +- .../builders/truths/TruthClassicBuilder.ts | 5 +- .../src/builders/truths/TruthOptionBuilder.ts | 3 +- .../truths/TruthOptionClassicBuilder.ts | 3 +- dataforged-tools/src/constants/index.ts | 5 + dataforged-tools/src/game-data.ts | 15 + .../src/game_objects/ActorRecord.ts | 2 +- .../src/game_objects/CharacterRecord.ts | 2 +- .../src/game_objects/CreatureRecord.ts | 4 +- .../src/game_objects/DerelictRecord.ts | 2 +- .../src/game_objects/DerelictZoneRecord.ts | 2 +- .../src/game_objects/FactionRecord.ts | 4 +- .../src/game_objects/GameObjectRecordBase.ts | 2 +- .../src/game_objects/PlaceRecord.ts | 2 +- .../src/game_objects/PlanetRecord.ts | 2 +- .../src/game_objects/PrecursorVaultRecord.ts | 2 +- .../src/game_objects/SettlementRecord.ts | 2 +- .../src/game_objects/StarshipRecord.ts | 2 +- dataforged-tools/src/index.ts | 23 +- .../src/localization/extractLocaleStrings.ts | 2 +- dataforged-tools/src/schema/index.ts | 2 + .../{schema_json => schema/json}/GameData.ts | 2 +- .../json}/assets/AlterMomentum.ts | 2 +- .../json}/assets/AlterMove.ts | 2 +- .../json}/assets/Asset.ts | 2 +- .../json}/assets/AssetAbility.ts | 2 +- .../json}/assets/AssetAlterProperties.ts | 3 +- .../json}/assets/AssetAttachment.ts | 2 +- .../json}/assets/AssetState.ts | 2 +- .../json}/assets/AssetType.ts | 2 +- .../json}/assets/AssetTypeName.ts | 0 .../json}/assets/AssetUsage.ts | 0 .../json}/assets/Input.ts | 2 +- .../json}/assets/InputSelect.ts | 2 +- .../json}/assets/InputSelectOption.ts | 2 +- .../src/schema/json/assets/index.ts | 18 + .../json}/common/ChallengeRank.ts | 0 .../json}/common/ClockSegments.ts | 0 .../json}/common/ClockType.ts | 0 .../json}/common/ConditionMeter.ts | 2 +- .../json}/common/CustomStat.ts | 2 +- .../json}/common/CustomStatOption.ts | 2 +- .../src/schema/json/common/Game.ts | 7 + .../json}/common/InputType.ts | 0 .../json}/common/Meter.ts | 2 +- .../json}/common/MeterAlias.ts | 0 .../json}/common/MeterCondition.ts | 0 .../json}/common/MeterType.ts | 0 .../json}/common/ProgressType.ts | 0 .../json}/common/Replacement.ts | 0 .../json}/common/RollableStat.ts | 2 +- .../json}/common/Stat.ts | 0 .../src/schema/json/common/index.ts | 21 + .../json}/cyclopedia/CyclopediaEntry.ts | 2 +- .../json}/cyclopedia/Encounter.ts | 2 +- .../json}/cyclopedia/EncounterBase.ts | 2 +- .../json}/cyclopedia/EncounterIronsworn.ts | 2 +- .../json}/cyclopedia/EncounterNature.ts | 0 .../cyclopedia/EncounterNatureClassicInfo.ts | 6 +- .../json}/cyclopedia/EncounterStarforged.ts | 2 +- .../json}/cyclopedia/EncounterTags.ts | 0 .../json}/cyclopedia/EncounterVariant.ts | 2 +- .../json}/cyclopedia/IronlandsRegion.ts | 2 +- .../src/schema/json/cyclopedia/index.ts | 15 + .../json}/delve_site/index.ts | 2 +- .../json}/game_objects/Attribute.ts | 2 +- .../json}/game_objects/AttributeChoices.ts | 2 +- .../json}/game_objects/AttributeKey.ts | 0 .../json}/game_objects/AttributeMaster.ts | 2 +- .../json}/game_objects/AttributeValue.ts | 2 +- .../json}/game_objects/GameObject.ts | 2 +- .../src/schema/json/game_objects/index.ts | 12 + dataforged-tools/src/schema/json/index.ts | 16 + .../json}/meta/Display.ts | 0 .../{schema_json => schema/json}/meta/Has.ts | 2 +- .../json}/meta/PartOfSpeechTag.ts | 0 .../json}/meta/Requirements.ts | 2 +- .../json}/meta/Source.ts | 0 .../json}/meta/Suggestions.ts | 2 +- .../{schema_json => schema/json}/meta/Url.ts | 0 .../src/schema/json/meta/index.ts | 12 + .../json}/moves/Move.ts | 4 +- .../json}/moves/MoveCategory.ts | 2 +- .../json}/moves/MoveOutcomeInfo.ts | 2 +- .../json}/moves/MoveReroll.ts | 2 +- .../json}/moves/MoveTrigger.ts | 2 +- .../json}/moves/MoveTriggerOption.ts | 2 +- .../json}/moves/Outcomes.ts | 2 +- .../json}/moves/RollMethod.ts | 0 .../src/schema/json/moves/index.ts | 13 + .../json}/oracles/MultipleRolls.ts | 0 .../json}/oracles/OracleBase.ts | 2 +- .../json}/oracles/OracleContent.ts | 2 +- .../json}/oracles/OracleDisplay.ts | 2 +- .../json}/oracles/OracleSet.ts | 2 +- .../json}/oracles/OracleTable.ts | 3 +- .../json}/oracles/OracleTableRow.ts | 2 +- .../json}/oracles/OracleUsage.ts | 2 +- .../json}/oracles/RollTemplate.ts | 2 +- .../json}/oracles/RollableOracles.ts | 0 .../json}/oracles/TableColumn.ts | 2 +- .../src/schema/json/oracles/index.ts | 15 + .../json}/rarities/IDelveRarity.ts | 2 +- .../src/schema/json/rarities/index.ts | 1 + .../json}/truths/Truth.ts | 2 +- .../json}/truths/TruthClassic.ts | 2 +- .../json}/truths/TruthOption.ts | 2 +- .../json}/truths/TruthOptionClassic.ts | 3 +- .../src/schema/json/truths/index.ts | 7 + .../yaml}/assets/YamlAlterMomentum.ts | 3 +- .../yaml}/assets/YamlAsset.ts | 3 +- .../src/schema/yaml/assets/index.ts | 3 + .../yaml}/common/YamlDataRoot.ts | 11 +- .../yaml}/common/YamlMeter.ts | 3 +- .../yaml}/common/YamlRequirements.ts | 2 +- .../schema/yaml/common/YamlRollTemplate.ts | 6 + .../yaml}/common/YamlSource.ts | 2 +- .../yaml}/common/YamlSuggestions.ts | 3 +- .../yaml}/common/YamlTitle.ts | 3 +- .../yaml}/common/YamlWithRef.ts | 0 .../src/schema/yaml/common/index.ts | 8 + .../yaml}/cyclopedia/YamlEncounter.ts | 3 +- .../cyclopedia/YamlEncounterIronsworn.ts | 3 +- .../cyclopedia/YamlEncounterStarforged.ts | 3 +- .../yaml}/cyclopedia/YamlEncounterVariant.ts | 3 +- .../yaml/cyclopedia/YamlIronswornRegion.ts | 7 + .../src/schema/yaml/cyclopedia/index.ts | 5 + .../yaml}/delve_site/YamlDelveCard.ts | 3 +- .../yaml}/delve_site/YamlDelveSite.ts | 3 +- .../src/schema/yaml/delve_site/index.ts | 2 + dataforged-tools/src/schema/yaml/index.ts | 9 + .../yaml}/moves/YamlMove.ts | 3 +- .../yaml}/moves/YamlMoveOutcome.ts | 3 +- .../yaml}/moves/YamlMoveTrigger.ts | 3 +- .../src/schema/yaml/moves/index.ts | 3 + .../yaml}/oracles/YamlOracleMetadata.ts | 3 +- .../yaml}/oracles/YamlOracleSet.ts | 3 +- .../yaml}/oracles/YamlOracleTable.ts | 3 +- .../yaml}/oracles/YamlOracleTemplate.ts | 2 +- .../src/schema/yaml/oracles/index.ts | 4 + .../schema/yaml/rarities/YamlDelveRarity.ts | 7 + .../src/schema/yaml/rarities/index.ts | 1 + .../yaml}/truths/YamlTruth.ts | 3 +- .../yaml}/truths/YamlTruthClassic.ts | 3 +- .../src/schema/yaml/truths/index.ts | 2 + .../src/{schema_yaml => schema/yaml}/utils.ts | 2 +- .../src/schema_json/assets/index.ts | 18 - .../src/schema_json/common/Gamespace.ts | 8 - .../src/schema_json/common/index.ts | 21 - .../src/schema_json/cyclopedia/index.ts | 15 - .../src/schema_json/game_objects/index.ts | 12 - dataforged-tools/src/schema_json/index.ts | 16 - .../src/schema_json/meta/index.ts | 12 - .../src/schema_json/moves/index.ts | 13 - .../src/schema_json/oracles/index.ts | 15 - .../src/schema_json/rarities/index.ts | 1 - .../src/schema_json/truths/index.ts | 7 - .../src/schema_yaml/assets/index.ts | 3 - .../schema_yaml/common/YamlRollTemplate.ts | 7 - .../src/schema_yaml/common/index.ts | 8 - .../cyclopedia/YamlIronswornRegion.ts | 8 - .../src/schema_yaml/cyclopedia/index.ts | 5 - .../src/schema_yaml/delve_site/index.ts | 2 - dataforged-tools/src/schema_yaml/index.ts | 9 - .../src/schema_yaml/moves/index.ts | 3 - .../src/schema_yaml/oracles/index.ts | 4 - .../schema_yaml/rarities/YamlDelveRarity.ts | 8 - .../src/schema_yaml/rarities/index.ts | 1 - .../src/schema_yaml/truths/index.ts | 2 - dataforged-tools/src/start-ironsworn.ts | 11 +- dataforged-tools/src/start-schema.ts | 11 +- dataforged-tools/src/start-starforged.ts | 18 +- .../src/utils/{ => builders}/buildAssets.ts | 11 +- .../utils/{ => builders}/buildDataforged.ts | 32 +- .../{ => builders}/buildDataforgedLegacy.ts | 0 .../{ => builders}/buildDelveSiteCards.ts | 6 +- .../utils/{ => builders}/buildEncounters.ts | 16 +- .../src/utils/{ => builders}/buildImages.ts | 0 .../{ => builders}/buildIronswornRegions.ts | 10 +- .../src/utils/{ => builders}/buildMarkdown.ts | 0 .../utils/{ => builders}/buildMoveMarkdown.ts | 2 +- .../src/utils/{ => builders}/buildMoves.ts | 6 +- .../{ => builders}/buildOracleMarkdown.ts | 0 .../src/utils/{ => builders}/buildOracles.ts | 10 +- .../src/utils/{ => builders}/buildTruths.ts | 12 +- dataforged-tools/src/utils/dataforgedStats.ts | 12 +- .../src/utils/extractAncestors.ts | 2 +- dataforged-tools/src/utils/getNameFromId.ts | 13 - dataforged-tools/src/utils/md/renderMove.ts | 2 +- .../src/utils/md/renderMoveCategory.ts | 2 +- .../src/utils/md/transformHyperlink.ts | 4 +- .../object_transform/extractRowContent.ts | 2 +- .../utils/object_transform/extractRowRolls.ts | 2 +- .../object_transform/inferSetsAttributes.ts | 2 +- .../src/utils/object_transform/pickInput.ts | 7 +- .../utils/object_transform/templateOracle.ts | 2 +- .../templateOracleMetadata.ts | 2 +- .../object_transform/templateOracleTable.ts | 2 +- .../src/utils/simulation/IronswornRoll.ts | 2 +- .../src/utils/simulation/PlayerCharacter.ts | 8 +- .../src/utils/simulation/SceneChallenge.ts | 2 +- .../src/utils/simulation/simulateRolls.ts | 2 +- dataforged-tools/src/utils/sortIronsworn.ts | 2 +- .../src/utils/types/AttributeHash.ts | 2 +- dataforged-tools/src/utils/types/Partial.ts | 2 +- .../utils/{ => validation}/validateColor.ts | 0 .../src/utils/validation/validateTable.ts | 2 +- .../concatWithYamlRefs.ts | 6 +- .../{process_yaml => yaml}/jsonToYaml.ts | 0 .../{process_yaml => yaml}/loadYamlRefs.ts | 0 .../loadYamlTemplates.ts | 0 src/types/index.d.ts | 6244 ++++++++++++----- 368 files changed, 9313 insertions(+), 7003 deletions(-) delete mode 100644 dataforged-tools/build/utils/buildAssets.d.ts delete mode 100644 dataforged-tools/build/utils/buildAssets.d.ts.map delete mode 100644 dataforged-tools/build/utils/buildAssets.js delete mode 100644 dataforged-tools/build/utils/buildAssets.js.map delete mode 100644 dataforged-tools/build/utils/buildDataforged.d.ts delete mode 100644 dataforged-tools/build/utils/buildDataforged.d.ts.map delete mode 100644 dataforged-tools/build/utils/buildDataforged.js delete mode 100644 dataforged-tools/build/utils/buildDataforged.js.map delete mode 100644 dataforged-tools/build/utils/buildEncounters.d.ts delete mode 100644 dataforged-tools/build/utils/buildEncounters.d.ts.map delete mode 100644 dataforged-tools/build/utils/buildEncounters.js delete mode 100644 dataforged-tools/build/utils/buildEncounters.js.map delete mode 100644 dataforged-tools/build/utils/buildImages.d.ts delete mode 100644 dataforged-tools/build/utils/buildImages.d.ts.map delete mode 100644 dataforged-tools/build/utils/buildImages.js delete mode 100644 dataforged-tools/build/utils/buildImages.js.map delete mode 100644 dataforged-tools/build/utils/buildMoves.d.ts delete mode 100644 dataforged-tools/build/utils/buildMoves.d.ts.map delete mode 100644 dataforged-tools/build/utils/buildMoves.js delete mode 100644 dataforged-tools/build/utils/buildMoves.js.map delete mode 100644 dataforged-tools/build/utils/buildOracles.d.ts delete mode 100644 dataforged-tools/build/utils/buildOracles.d.ts.map delete mode 100644 dataforged-tools/build/utils/buildOracles.js delete mode 100644 dataforged-tools/build/utils/buildOracles.js.map delete mode 100644 dataforged-tools/build/utils/buildTruths.d.ts delete mode 100644 dataforged-tools/build/utils/buildTruths.d.ts.map delete mode 100644 dataforged-tools/build/utils/buildTruths.js delete mode 100644 dataforged-tools/build/utils/buildTruths.js.map delete mode 100644 dataforged-tools/build/utils/getNameFromId.d.ts delete mode 100644 dataforged-tools/build/utils/getNameFromId.d.ts.map delete mode 100644 dataforged-tools/build/utils/getNameFromId.js delete mode 100644 dataforged-tools/build/utils/getNameFromId.js.map delete mode 100644 dataforged-tools/build/utils/process_yaml/concatWithYamlRefs.d.ts delete mode 100644 dataforged-tools/build/utils/process_yaml/concatWithYamlRefs.d.ts.map delete mode 100644 dataforged-tools/build/utils/process_yaml/concatWithYamlRefs.js delete mode 100644 dataforged-tools/build/utils/process_yaml/concatWithYamlRefs.js.map delete mode 100644 dataforged-tools/build/utils/process_yaml/loadYamlRefs.d.ts delete mode 100644 dataforged-tools/build/utils/process_yaml/loadYamlRefs.d.ts.map delete mode 100644 dataforged-tools/build/utils/process_yaml/loadYamlRefs.js delete mode 100644 dataforged-tools/build/utils/process_yaml/loadYamlRefs.js.map delete mode 100644 dataforged-tools/build/utils/process_yaml/loadYamlTemplates.d.ts delete mode 100644 dataforged-tools/build/utils/process_yaml/loadYamlTemplates.d.ts.map delete mode 100644 dataforged-tools/build/utils/process_yaml/loadYamlTemplates.js delete mode 100644 dataforged-tools/build/utils/process_yaml/loadYamlTemplates.js.map delete mode 100644 dataforged-tools/build/utils/validateColor.d.ts delete mode 100644 dataforged-tools/build/utils/validateColor.d.ts.map delete mode 100644 dataforged-tools/build/utils/validateColor.js delete mode 100644 dataforged-tools/build/utils/validateColor.js.map create mode 100644 dataforged-tools/src/builders/CollectionBuilder.ts create mode 100644 dataforged-tools/src/builders/IronlandsBuilder.ts create mode 100644 dataforged-tools/src/builders/RootDataBuilder.ts create mode 100644 dataforged-tools/src/builders/delve_site/index.ts create mode 100644 dataforged-tools/src/game-data.ts create mode 100644 dataforged-tools/src/schema/index.ts rename dataforged-tools/src/{schema_json => schema/json}/GameData.ts (89%) rename dataforged-tools/src/{schema_json => schema/json}/assets/AlterMomentum.ts (94%) rename dataforged-tools/src/{schema_json => schema/json}/assets/AlterMove.ts (93%) rename dataforged-tools/src/{schema_json => schema/json}/assets/Asset.ts (87%) rename dataforged-tools/src/{schema_json => schema/json}/assets/AssetAbility.ts (89%) rename dataforged-tools/src/{schema_json => schema/json}/assets/AssetAlterProperties.ts (87%) rename dataforged-tools/src/{schema_json => schema/json}/assets/AssetAttachment.ts (92%) rename dataforged-tools/src/{schema_json => schema/json}/assets/AssetState.ts (96%) rename dataforged-tools/src/{schema_json => schema/json}/assets/AssetType.ts (83%) rename dataforged-tools/src/{schema_json => schema/json}/assets/AssetTypeName.ts (100%) rename dataforged-tools/src/{schema_json => schema/json}/assets/AssetUsage.ts (100%) rename dataforged-tools/src/{schema_json => schema/json}/assets/Input.ts (96%) rename dataforged-tools/src/{schema_json => schema/json}/assets/InputSelect.ts (96%) rename dataforged-tools/src/{schema_json => schema/json}/assets/InputSelectOption.ts (92%) create mode 100644 dataforged-tools/src/schema/json/assets/index.ts rename dataforged-tools/src/{schema_json => schema/json}/common/ChallengeRank.ts (100%) rename dataforged-tools/src/{schema_json => schema/json}/common/ClockSegments.ts (100%) rename dataforged-tools/src/{schema_json => schema/json}/common/ClockType.ts (100%) rename dataforged-tools/src/{schema_json => schema/json}/common/ConditionMeter.ts (92%) rename dataforged-tools/src/{schema_json => schema/json}/common/CustomStat.ts (78%) rename dataforged-tools/src/{schema_json => schema/json}/common/CustomStatOption.ts (87%) create mode 100644 dataforged-tools/src/schema/json/common/Game.ts rename dataforged-tools/src/{schema_json => schema/json}/common/InputType.ts (100%) rename dataforged-tools/src/{schema_json => schema/json}/common/Meter.ts (92%) rename dataforged-tools/src/{schema_json => schema/json}/common/MeterAlias.ts (100%) rename dataforged-tools/src/{schema_json => schema/json}/common/MeterCondition.ts (100%) rename dataforged-tools/src/{schema_json => schema/json}/common/MeterType.ts (100%) rename dataforged-tools/src/{schema_json => schema/json}/common/ProgressType.ts (100%) rename dataforged-tools/src/{schema_json => schema/json}/common/Replacement.ts (100%) rename dataforged-tools/src/{schema_json => schema/json}/common/RollableStat.ts (70%) rename dataforged-tools/src/{schema_json => schema/json}/common/Stat.ts (100%) create mode 100644 dataforged-tools/src/schema/json/common/index.ts rename dataforged-tools/src/{schema_json => schema/json}/cyclopedia/CyclopediaEntry.ts (89%) rename dataforged-tools/src/{schema_json => schema/json}/cyclopedia/Encounter.ts (85%) rename dataforged-tools/src/{schema_json => schema/json}/cyclopedia/EncounterBase.ts (90%) rename dataforged-tools/src/{schema_json => schema/json}/cyclopedia/EncounterIronsworn.ts (81%) rename dataforged-tools/src/{schema_json => schema/json}/cyclopedia/EncounterNature.ts (100%) rename dataforged-tools/src/{schema_json => schema/json}/cyclopedia/EncounterNatureClassicInfo.ts (94%) rename dataforged-tools/src/{schema_json => schema/json}/cyclopedia/EncounterStarforged.ts (78%) rename dataforged-tools/src/{schema_json => schema/json}/cyclopedia/EncounterTags.ts (100%) rename dataforged-tools/src/{schema_json => schema/json}/cyclopedia/EncounterVariant.ts (89%) rename dataforged-tools/src/{schema_json => schema/json}/cyclopedia/IronlandsRegion.ts (94%) create mode 100644 dataforged-tools/src/schema/json/cyclopedia/index.ts rename dataforged-tools/src/{schema_json => schema/json}/delve_site/index.ts (98%) rename dataforged-tools/src/{schema_json => schema/json}/game_objects/Attribute.ts (96%) rename dataforged-tools/src/{schema_json => schema/json}/game_objects/AttributeChoices.ts (68%) rename dataforged-tools/src/{schema_json => schema/json}/game_objects/AttributeKey.ts (100%) rename dataforged-tools/src/{schema_json => schema/json}/game_objects/AttributeMaster.ts (96%) rename dataforged-tools/src/{schema_json => schema/json}/game_objects/AttributeValue.ts (56%) rename dataforged-tools/src/{schema_json => schema/json}/game_objects/GameObject.ts (84%) create mode 100644 dataforged-tools/src/schema/json/game_objects/index.ts create mode 100644 dataforged-tools/src/schema/json/index.ts rename dataforged-tools/src/{schema_json => schema/json}/meta/Display.ts (100%) rename dataforged-tools/src/{schema_json => schema/json}/meta/Has.ts (97%) rename dataforged-tools/src/{schema_json => schema/json}/meta/PartOfSpeechTag.ts (100%) rename dataforged-tools/src/{schema_json => schema/json}/meta/Requirements.ts (81%) rename dataforged-tools/src/{schema_json => schema/json}/meta/Source.ts (100%) rename dataforged-tools/src/{schema_json => schema/json}/meta/Suggestions.ts (93%) rename dataforged-tools/src/{schema_json => schema/json}/meta/Url.ts (100%) create mode 100644 dataforged-tools/src/schema/json/meta/index.ts rename dataforged-tools/src/{schema_json => schema/json}/moves/Move.ts (81%) rename dataforged-tools/src/{schema_json => schema/json}/moves/MoveCategory.ts (88%) rename dataforged-tools/src/{schema_json => schema/json}/moves/MoveOutcomeInfo.ts (98%) rename dataforged-tools/src/{schema_json => schema/json}/moves/MoveReroll.ts (95%) rename dataforged-tools/src/{schema_json => schema/json}/moves/MoveTrigger.ts (97%) rename dataforged-tools/src/{schema_json => schema/json}/moves/MoveTriggerOption.ts (88%) rename dataforged-tools/src/{schema_json => schema/json}/moves/Outcomes.ts (80%) rename dataforged-tools/src/{schema_json => schema/json}/moves/RollMethod.ts (100%) create mode 100644 dataforged-tools/src/schema/json/moves/index.ts rename dataforged-tools/src/{schema_json => schema/json}/oracles/MultipleRolls.ts (100%) rename dataforged-tools/src/{schema_json => schema/json}/oracles/OracleBase.ts (96%) rename dataforged-tools/src/{schema_json => schema/json}/oracles/OracleContent.ts (86%) rename dataforged-tools/src/{schema_json => schema/json}/oracles/OracleDisplay.ts (93%) rename dataforged-tools/src/{schema_json => schema/json}/oracles/OracleSet.ts (98%) rename dataforged-tools/src/{schema_json => schema/json}/oracles/OracleTable.ts (85%) rename dataforged-tools/src/{schema_json => schema/json}/oracles/OracleTableRow.ts (98%) rename dataforged-tools/src/{schema_json => schema/json}/oracles/OracleUsage.ts (94%) rename dataforged-tools/src/{schema_json => schema/json}/oracles/RollTemplate.ts (95%) rename dataforged-tools/src/{schema_json => schema/json}/oracles/RollableOracles.ts (100%) rename dataforged-tools/src/{schema_json => schema/json}/oracles/TableColumn.ts (99%) create mode 100644 dataforged-tools/src/schema/json/oracles/index.ts rename dataforged-tools/src/{schema_json => schema/json}/rarities/IDelveRarity.ts (79%) create mode 100644 dataforged-tools/src/schema/json/rarities/index.ts rename dataforged-tools/src/{schema_json => schema/json}/truths/Truth.ts (95%) rename dataforged-tools/src/{schema_json => schema/json}/truths/TruthClassic.ts (95%) rename dataforged-tools/src/{schema_json => schema/json}/truths/TruthOption.ts (86%) rename dataforged-tools/src/{schema_json => schema/json}/truths/TruthOptionClassic.ts (72%) create mode 100644 dataforged-tools/src/schema/json/truths/index.ts rename dataforged-tools/src/{schema_yaml => schema/yaml}/assets/YamlAlterMomentum.ts (81%) rename dataforged-tools/src/{schema_yaml => schema/yaml}/assets/YamlAsset.ts (91%) create mode 100644 dataforged-tools/src/schema/yaml/assets/index.ts rename dataforged-tools/src/{schema_yaml => schema/yaml}/common/YamlDataRoot.ts (77%) rename dataforged-tools/src/{schema_yaml => schema/yaml}/common/YamlMeter.ts (50%) rename dataforged-tools/src/{schema_yaml => schema/yaml}/common/YamlRequirements.ts (79%) create mode 100644 dataforged-tools/src/schema/yaml/common/YamlRollTemplate.ts rename dataforged-tools/src/{schema_yaml => schema/yaml}/common/YamlSource.ts (62%) rename dataforged-tools/src/{schema_yaml => schema/yaml}/common/YamlSuggestions.ts (68%) rename dataforged-tools/src/{schema_yaml => schema/yaml}/common/YamlTitle.ts (54%) rename dataforged-tools/src/{schema_yaml => schema/yaml}/common/YamlWithRef.ts (100%) create mode 100644 dataforged-tools/src/schema/yaml/common/index.ts rename dataforged-tools/src/{schema_yaml => schema/yaml}/cyclopedia/YamlEncounter.ts (54%) rename dataforged-tools/src/{schema_yaml => schema/yaml}/cyclopedia/YamlEncounterIronsworn.ts (69%) rename dataforged-tools/src/{schema_yaml => schema/yaml}/cyclopedia/YamlEncounterStarforged.ts (57%) rename dataforged-tools/src/{schema_yaml => schema/yaml}/cyclopedia/YamlEncounterVariant.ts (64%) create mode 100644 dataforged-tools/src/schema/yaml/cyclopedia/YamlIronswornRegion.ts create mode 100644 dataforged-tools/src/schema/yaml/cyclopedia/index.ts rename dataforged-tools/src/{schema_yaml => schema/yaml}/delve_site/YamlDelveCard.ts (87%) rename dataforged-tools/src/{schema_yaml => schema/yaml}/delve_site/YamlDelveSite.ts (52%) create mode 100644 dataforged-tools/src/schema/yaml/delve_site/index.ts create mode 100644 dataforged-tools/src/schema/yaml/index.ts rename dataforged-tools/src/{schema_yaml => schema/yaml}/moves/YamlMove.ts (73%) rename dataforged-tools/src/{schema_yaml => schema/yaml}/moves/YamlMoveOutcome.ts (85%) rename dataforged-tools/src/{schema_yaml => schema/yaml}/moves/YamlMoveTrigger.ts (78%) create mode 100644 dataforged-tools/src/schema/yaml/moves/index.ts rename dataforged-tools/src/{schema_yaml => schema/yaml}/oracles/YamlOracleMetadata.ts (81%) rename dataforged-tools/src/{schema_yaml => schema/yaml}/oracles/YamlOracleSet.ts (67%) rename dataforged-tools/src/{schema_yaml => schema/yaml}/oracles/YamlOracleTable.ts (77%) rename dataforged-tools/src/{schema_yaml => schema/yaml}/oracles/YamlOracleTemplate.ts (94%) create mode 100644 dataforged-tools/src/schema/yaml/oracles/index.ts create mode 100644 dataforged-tools/src/schema/yaml/rarities/YamlDelveRarity.ts create mode 100644 dataforged-tools/src/schema/yaml/rarities/index.ts rename dataforged-tools/src/{schema_yaml => schema/yaml}/truths/YamlTruth.ts (74%) rename dataforged-tools/src/{schema_yaml => schema/yaml}/truths/YamlTruthClassic.ts (65%) create mode 100644 dataforged-tools/src/schema/yaml/truths/index.ts rename dataforged-tools/src/{schema_yaml => schema/yaml}/utils.ts (96%) delete mode 100644 dataforged-tools/src/schema_json/assets/index.ts delete mode 100644 dataforged-tools/src/schema_json/common/Gamespace.ts delete mode 100644 dataforged-tools/src/schema_json/common/index.ts delete mode 100644 dataforged-tools/src/schema_json/cyclopedia/index.ts delete mode 100644 dataforged-tools/src/schema_json/game_objects/index.ts delete mode 100644 dataforged-tools/src/schema_json/index.ts delete mode 100644 dataforged-tools/src/schema_json/meta/index.ts delete mode 100644 dataforged-tools/src/schema_json/moves/index.ts delete mode 100644 dataforged-tools/src/schema_json/oracles/index.ts delete mode 100644 dataforged-tools/src/schema_json/rarities/index.ts delete mode 100644 dataforged-tools/src/schema_json/truths/index.ts delete mode 100644 dataforged-tools/src/schema_yaml/assets/index.ts delete mode 100644 dataforged-tools/src/schema_yaml/common/YamlRollTemplate.ts delete mode 100644 dataforged-tools/src/schema_yaml/common/index.ts delete mode 100644 dataforged-tools/src/schema_yaml/cyclopedia/YamlIronswornRegion.ts delete mode 100644 dataforged-tools/src/schema_yaml/cyclopedia/index.ts delete mode 100644 dataforged-tools/src/schema_yaml/delve_site/index.ts delete mode 100644 dataforged-tools/src/schema_yaml/index.ts delete mode 100644 dataforged-tools/src/schema_yaml/moves/index.ts delete mode 100644 dataforged-tools/src/schema_yaml/oracles/index.ts delete mode 100644 dataforged-tools/src/schema_yaml/rarities/YamlDelveRarity.ts delete mode 100644 dataforged-tools/src/schema_yaml/rarities/index.ts delete mode 100644 dataforged-tools/src/schema_yaml/truths/index.ts rename dataforged-tools/src/utils/{ => builders}/buildAssets.ts (83%) rename dataforged-tools/src/utils/{ => builders}/buildDataforged.ts (57%) rename dataforged-tools/src/utils/{ => builders}/buildDataforgedLegacy.ts (100%) rename dataforged-tools/src/utils/{ => builders}/buildDelveSiteCards.ts (74%) rename dataforged-tools/src/utils/{ => builders}/buildEncounters.ts (84%) rename dataforged-tools/src/utils/{ => builders}/buildImages.ts (100%) rename dataforged-tools/src/utils/{ => builders}/buildIronswornRegions.ts (74%) rename dataforged-tools/src/utils/{ => builders}/buildMarkdown.ts (100%) rename dataforged-tools/src/utils/{ => builders}/buildMoveMarkdown.ts (93%) rename dataforged-tools/src/utils/{ => builders}/buildMoves.ts (86%) rename dataforged-tools/src/utils/{ => builders}/buildOracleMarkdown.ts (100%) rename dataforged-tools/src/utils/{ => builders}/buildOracles.ts (75%) rename dataforged-tools/src/utils/{ => builders}/buildTruths.ts (83%) delete mode 100644 dataforged-tools/src/utils/getNameFromId.ts rename dataforged-tools/src/utils/{ => validation}/validateColor.ts (100%) rename dataforged-tools/src/utils/{process_yaml => yaml}/concatWithYamlRefs.ts (82%) rename dataforged-tools/src/utils/{process_yaml => yaml}/jsonToYaml.ts (100%) rename dataforged-tools/src/utils/{process_yaml => yaml}/loadYamlRefs.ts (100%) rename dataforged-tools/src/utils/{process_yaml => yaml}/loadYamlTemplates.ts (100%) diff --git a/_master-data/Ironsworn/Delve-Rarities.yaml b/_master-data/Ironsworn/Delve-Rarities.yaml index e64a6f4d9..857bcc358 100644 --- a/_master-data/Ironsworn/Delve-Rarities.yaml +++ b/_master-data/Ironsworn/Delve-Rarities.yaml @@ -1,8 +1,12 @@ +Source: + Authors: + - Shawn Tomkin + Title: "Ironsworn: Delve" + License: https://creativecommons.org/licenses/by-nc-sa/4.0/ Rarities: Ayethin’s Journal: Asset: Ironsworn/Assets/Path/Alchemist Source: - Title: "Ironsworn: Delve" Page: 182 # Icon: https://game-icons.net/1x1/lorc/papers.html XP: 5 @@ -11,7 +15,6 @@ Rarities: Black Fang: Asset: Ironsworn/Assets/Path/Animal_Kin Source: - Title: "Ironsworn: Delve" Page: 182 # Icon: https://game-icons.net/1x1/lorc/saber-tooth.html XP: 3 @@ -20,7 +23,6 @@ Rarities: Resolute Banner: Asset: Ironsworn/Assets/Path/Banner-Sworn Source: - Title: "Ironsworn: Delve" Page: 182 # Icon: https://game-icons.net/1x1/delapouite/knight-banner.html # but with the cross element removed @@ -30,7 +32,6 @@ Rarities: Cairn Stone of the Sundered: Asset: Ironsworn/Assets/Path/Battle-Scarred Source: - Title: "Ironsworn: Delve" Page: 182 # Icon: https://game-icons.net/1x1/lorc/rock.html XP: 3 @@ -41,7 +42,6 @@ Rarities: Bracer of the First Blood: Asset: Ironsworn/Assets/Path/Blade-Bound Source: - Title: "Ironsworn: Delve" Page: 183 # Icon: https://game-icons.net/1x1/delapouite/bracer.html XP: 4 @@ -52,7 +52,6 @@ Rarities: Waterskin of Fellowship: Asset: Ironsworn/Assets/Path/Bonded Source: - Title: "Ironsworn: Delve" Page: 183 # Icon: https://game-icons.net/1x1/delapouite/magic-potion.html XP: 3 @@ -63,7 +62,6 @@ Rarities: Scarves of the Northern Lights: Asset: Ironsworn/Assets/Path/Dancer Source: - Title: "Ironsworn: Delve" Page: 183 # Icon: null XP: 3 @@ -74,7 +72,6 @@ Rarities: Founder’s Reliquary: Asset: Ironsworn/Assets/Path/Devotant Source: - Title: "Ironsworn: Delve" Page: 184 # Icon: https://game-icons.net/1x1/delapouite/covered-jar.html XP: 3 @@ -83,7 +80,6 @@ Rarities: Sigil of the Broken Circlet: Asset: Ironsworn/Assets/Path/Empowered Source: - Title: "Ironsworn: Delve" Page: 184 # Icon: null XP: 3 @@ -92,7 +88,6 @@ Rarities: Coin of Favor: Asset: Ironsworn/Assets/Path/Fortune_Hunter Source: - Title: "Ironsworn: Delve" Page: 184 # Icon: https://game-icons.net/1x1/lorc/crown-coin.html # modified @@ -102,7 +97,6 @@ Rarities: Silverstone Pestle: Asset: Ironsworn/Assets/Path/Herbalist Source: - Title: "Ironsworn: Delve" Page: 184 # Icon: null XP: 3 @@ -111,7 +105,6 @@ Rarities: Unbreakable Torc: Asset: Ironsworn/Assets/Path/Honorbound Source: - Title: "Ironsworn: Delve" Page: 185 # Icon: https://game-icons.net/1x1/cathelineau/torc.html XP: 3 @@ -120,7 +113,6 @@ Rarities: Blackguard’s Baldric: Asset: Ironsworn/Assets/Path/Improviser Source: - Title: "Ironsworn: Delve" Page: 185 # Icon: https://game-icons.net/1x1/lucasms/belt.html XP: 4 @@ -129,7 +121,6 @@ Rarities: Basilisk Cloak: Asset: Ironsworn/Assets/Path/Infiltrator Source: - Title: "Ironsworn: Delve" Page: 185 # Icon: null XP: 5 @@ -138,7 +129,6 @@ Rarities: Horn of the Mammoth: Asset: Ironsworn/Assets/Path/Loyalist Source: - Title: "Ironsworn: Delve" Page: 185 # Icon: https://game-icons.net/1x1/lorc/hunting-horn.html # modified @@ -150,7 +140,6 @@ Rarities: Progenitor Shard: Asset: Ironsworn/Assets/Path/Masked Source: - Title: "Ironsworn: Delve" Page: 186 # Icon: https://game-icons.net/1x1/lorc/beech.html XP: 5 @@ -159,7 +148,6 @@ Rarities: Sundered Sword: Asset: Ironsworn/Assets/Path/Oathbreaker Source: - Title: "Ironsworn: Delve" Page: 186 # Icon: null XP: 3 @@ -168,7 +156,6 @@ Rarities: Mark of the Exile: Asset: Ironsworn/Assets/Path/Outcast Source: - Title: "Ironsworn: Delve" Page: 186 # Icon: null XP: 3 @@ -179,7 +166,6 @@ Rarities: Tattoo of Many Faces: Asset: Ironsworn/Assets/Path/Pretender Source: - Title: "Ironsworn: Delve" Page: 187 # Icon: https://game-icons.net/1x1/lorc/spiked-halo.html XP: 5 @@ -188,7 +174,6 @@ Rarities: Shroud of Retribution: Asset: Ironsworn/Assets/Path/Revenant Source: - Title: "Ironsworn: Delve" Page: 187 # Icon: https://game-icons.net/1x1/delapouite/rolled-cloth.html XP: 3 @@ -197,7 +182,6 @@ Rarities: Horsemaster Helm: Asset: Ironsworn/Assets/Path/Rider Source: - Title: "Ironsworn: Delve" Page: 187 # Icon: https://game-icons.net/1x1/lorc/crested-helmet.html XP: 4 @@ -206,7 +190,6 @@ Rarities: Book of the Cipher: Asset: Ironsworn/Assets/Path/Ritualist Source: - Title: "Ironsworn: Delve" Page: 187 # Icon: https://game-icons.net/1x1/delapouite/secret-book.html XP: 3 @@ -215,7 +198,6 @@ Rarities: Barrow Clasp: Asset: Ironsworn/Assets/Path/Shadow-Kin Source: - Title: "Ironsworn: Delve" Page: 188 # Icon: https://game-icons.net/1x1/delapouite/skeletal-hand.html XP: 3 @@ -226,7 +208,6 @@ Rarities: Seeing Stone: Asset: Ironsworn/Assets/Path/Sighted Source: - Title: "Ironsworn: Delve" Page: 188 # Icon: null XP: 4 @@ -235,7 +216,6 @@ Rarities: Slayer’s Medallion: Asset: Ironsworn/Assets/Path/Slayer Source: - Title: "Ironsworn: Delve" Page: 188 # Icon: https://game-icons.net/1x1/lorc/shining-claw.html XP: 3 @@ -246,7 +226,6 @@ Rarities: Mirror of the Eidolon: Asset: Ironsworn/Assets/Path/Spirit-Bound Source: - Title: "Ironsworn: Delve" Page: 189 # Icon: null # possibly derived from https://game-icons.net/1x1/lorc/broken-tablet.html ? @@ -258,7 +237,6 @@ Rarities: Goldwhyn’s Denouement: Asset: Ironsworn/Assets/Path/Storyweaver Source: - Title: "Ironsworn: Delve" Page: 189 # Icon: null XP: 4 @@ -267,7 +245,6 @@ Rarities: Opal of Whispers: Asset: Ironsworn/Assets/Path/Trickster Source: - Title: "Ironsworn: Delve" Page: 189 # Icon: https://game-icons.net/1x1/lorc/vibrating-ball.html XP: 4 @@ -276,7 +253,6 @@ Rarities: Helm of the Unbroken: Asset: Ironsworn/Assets/Path/Veteran Source: - Title: "Ironsworn: Delve" Page: # Icon: null XP: 3 @@ -287,7 +263,6 @@ Rarities: Leviathan’s Lament: Asset: Ironsworn/Assets/Path/Waterborn Source: - Title: "Ironsworn: Delve" Page: 190 # Icon: null XP: 3 @@ -298,7 +273,6 @@ Rarities: Bough of the Surest Path: Asset: Ironsworn/Assets/Path/Wayfinder Source: - Title: "Ironsworn: Delve" Page: 190 # Icon: null # possibly derived from https://game-icons.net/1x1/delapouite/wood-stick.html @@ -310,7 +284,6 @@ Rarities: Whetstone of the Bear: Asset: Ironsworn/Assets/Path/Weaponmaster Source: - Title: "Ironsworn: Delve" Page: 191 # Icon: null XP: 3 @@ -321,7 +294,6 @@ Rarities: Vignette of the Weald: Asset: Ironsworn/Assets/Path/Wildblood Source: - Title: "Ironsworn: Delve" Page: 191 # Icon: null XP: 4 @@ -332,7 +304,6 @@ Rarities: Artisan’s Gloves: Asset: Ironsworn/Assets/Path/Wright Source: - Title: "Ironsworn: Delve" Page: 191 # Icon: https://game-icons.net/1x1/delapouite/gloves.html XP: 3 @@ -341,7 +312,6 @@ Rarities: Farsight Quiver: Asset: Ironsworn/Assets/Combat_Talent/Archer Source: - Title: "Ironsworn: Delve" Page: 192 # Icon: https://game-icons.net/1x1/lorc/arrow-flights.html XP: 4 @@ -350,7 +320,6 @@ Rarities: Mantle of Many Beasts: Asset: Ironsworn/Assets/Combat_Talent/Berserker Source: - Title: "Ironsworn: Delve" Page: 192 # Icon: https://game-icons.net/1x1/lorc/triple-claws.html XP: 5 @@ -359,7 +328,6 @@ Rarities: Iron Fist: Asset: Ironsworn/Assets/Combat_Talent/Brawler Source: - Title: "Ironsworn: Delve" Page: 192 # Icon: https://game-icons.net/1x1/lorc/fist.html XP: 5 @@ -368,7 +336,6 @@ Rarities: Dagger of the Blooded: Asset: Ironsworn/Assets/Combat_Talent/Cutthroat Source: - Title: "Ironsworn: Delve" Page: 192 # Icon: https://game-icons.net/1x1/lorc/dripping-blade.html XP: 3 @@ -377,7 +344,6 @@ Rarities: Iron Dyad: Asset: Ironsworn/Assets/Combat_Talent/Duelist Source: - Title: "Ironsworn: Delve" Page: 193 # Icon: null XP: 3 @@ -386,7 +352,6 @@ Rarities: Raptor’s Talon: Asset: Ironsworn/Assets/Combat_Talent/Fletcher Source: - Title: "Ironsworn: Delve" Page: 193 # Icon: null XP: 4 @@ -395,7 +360,6 @@ Rarities: Starfall Hauberk: Asset: Ironsworn/Assets/Combat_Talent/Ironclad Source: - Title: "Ironsworn: Delve" Page: 193 # Icon: null XP: 5 @@ -406,7 +370,6 @@ Rarities: Rover’s Staff: Asset: Ironsworn/Assets/Combat_Talent/Long-Arm Source: - Title: "Ironsworn: Delve" Page: 193 # Icon: null # derived from https://game-icons.net/1x1/delapouite/bo.html @@ -416,7 +379,6 @@ Rarities: Heart of the Aegis: Asset: Ironsworn/Assets/Combat_Talent/Shield-Bearer Source: - Title: "Ironsworn: Delve" Page: 194 # Icon: null XP: 4 @@ -425,7 +387,6 @@ Rarities: Dragon’s Bite: Asset: Ironsworn/Assets/Combat_Talent/Skirmisher Source: - Title: "Ironsworn: Delve" Page: 194 # Icon: null XP: 4 @@ -434,7 +395,6 @@ Rarities: Giant Bane: Asset: Ironsworn/Assets/Combat_Talent/Slinger Source: - Title: "Ironsworn: Delve" Page: 194 # Icon: https://game-icons.net/1x1/lorc/striking-balls.html XP: 4 @@ -445,7 +405,6 @@ Rarities: Warbringer: Asset: Ironsworn/Assets/Combat_Talent/Sunderer Source: - Title: "Ironsworn: Delve" Page: 194 # Icon: null XP: 4 @@ -454,7 +413,6 @@ Rarities: Honing Sheath: Asset: Ironsworn/Assets/Combat_Talent/Swordmaster Source: - Title: "Ironsworn: Delve" Page: 195 # Icon: null # possibly derived from https://game-icons.net/1x1/lorc/all-for-one.html @@ -464,7 +422,6 @@ Rarities: Hammer of Reckoning: Asset: Ironsworn/Assets/Combat_Talent/Thunder-Bringer Source: - Title: "Ironsworn: Delve" Page: 195 # Icon: null # possibly derived from https://game-icons.net/1x1/delapouite/thor-hammer.html @@ -474,7 +431,6 @@ Rarities: Crow’s Patron: Asset: Ironsworn/Assets/Ritual/Augur Source: - Title: "Ironsworn: Delve" Page: 196 # Icon: https://game-icons.net/1x1/lorc/feather.html XP: 3 @@ -483,7 +439,6 @@ Rarities: Breath of Life: Asset: Ironsworn/Assets/Ritual/Awakening Source: - Title: "Ironsworn: Delve" Page: 196 # Icon: https://game-icons.net/1x1/lorc/bottle-vapors.html XP: 4 @@ -494,7 +449,6 @@ Rarities: Moonshadow Ring: Asset: Ironsworn/Assets/Ritual/Bind Source: - Title: "Ironsworn: Delve" Page: 196 # Icon: https://game-icons.net/1x1/lorc/moon.html XP: 5 @@ -503,7 +457,6 @@ Rarities: Incense of Beckoning: Asset: Ironsworn/Assets/Ritual/Communion Source: - Title: "Ironsworn: Delve" Page: 196 # Icon: null # derived from https://game-icons.net/1x1/lorc/incense.html @@ -513,7 +466,6 @@ Rarities: Riddlestone: Asset: Ironsworn/Assets/Ritual/Divination Source: - Title: "Ironsworn: Delve" Page: 197 # Icon: https://game-icons.net/1x1/lorc/rune-stone.html XP: 3 @@ -524,7 +476,6 @@ Rarities: Invoker’s Lodestone: Asset: Ironsworn/Assets/Ritual/Invoke Source: - Title: "Ironsworn: Delve" Page: 197 # Icon: null # derived from https://game-icons.net/1x1/lorc/stone-spear.html @@ -534,7 +485,6 @@ Rarities: Raven’s Song: Asset: Ironsworn/Assets/Ritual/Keen Source: - Title: "Ironsworn: Delve" Page: 197 # Icon: null XP: 5 @@ -543,7 +493,6 @@ Rarities: Wolf’s Feast: Asset: Ironsworn/Assets/Ritual/Leech Source: - Title: "Ironsworn: Delve" Page: 197 # Icon: https://game-icons.net/1x1/lorc/wolf-head.html XP: 3 @@ -552,7 +501,6 @@ Rarities: Daybreak Stone: Asset: Ironsworn/Assets/Ritual/Lightbearer Source: - Title: "Ironsworn: Delve" Page: 198 # Icon: null XP: 4 @@ -561,7 +509,6 @@ Rarities: Beholder’s Dust: Asset: Ironsworn/Assets/Ritual/Scry Source: - Title: "Ironsworn: Delve" Page: 198 # Icon: https://game-icons.net/1x1/lorc/celebration-fire.html XP: 3 @@ -572,7 +519,6 @@ Rarities: Ring of Secret Paths: Asset: Ironsworn/Assets/Ritual/Shadow-Walk Source: - Title: "Ironsworn: Delve" Page: 198 # Icon: https://game-icons.net/1x1/delapouite/ring.html XP: 4 @@ -581,7 +527,6 @@ Rarities: Chime of Secrets: Asset: Ironsworn/Assets/Ritual/Sway Source: - Title: "Ironsworn: Delve" Page: 198 # Icon: https://game-icons.net/1x1/lorc/wind-slap.html XP: 3 @@ -590,7 +535,6 @@ Rarities: Beads of Many Domains: Asset: Ironsworn/Assets/Ritual/Talisman Source: - Title: "Ironsworn: Delve" Page: 199 # Icon: # from https://game-icons.net/1x1/delapouite/prayer-beads.html @@ -602,7 +546,6 @@ Rarities: Wayfarer’s Promise: Asset: Ironsworn/Assets/Ritual/Tether Source: - Title: "Ironsworn: Delve" Page: 199 # Icon: null XP: 4 diff --git a/_master-data/Ironsworn/Delve-Sites.yaml b/_master-data/Ironsworn/Delve-Sites.yaml index b872cd1bd..e98cf2ca0 100644 --- a/_master-data/Ironsworn/Delve-Sites.yaml +++ b/_master-data/Ironsworn/Delve-Sites.yaml @@ -1,664 +1,650 @@ -Alva's Rest: - Source: - Title: "Ironsworn: Delve" - Page: 96 - Rank: 2 - Theme: Ironsworn/Themes/Fortified - Domain: Ironsworn/Domains/Barrow - Denizens: - - Result: Raiders - Rarity: Very common - Encounter: Ironsworn/Encounters/Ironlanders/Raider - - Result: Zealot - Rarity: Common - Encounter: Ironsworn/Encounters/Ironlanders/Zealot - - Result: Mystic - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Ironlanders/Mystic - - Result: Bonewalker - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Horrors/Bonewalker - - Result: Blighthound - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Horrors/Blighthound - - Result: Alva - Rarity: Rare - Encounter: Ironsworn/Encounters/Horrors/Wight - - Result: Bonehorde - Rarity: Rare - Encounter: Ironsworn/Encounters/Horrors/Bonehorde - Description: |- - In life, Alva the Reaver was a leader of raiders and a merciless fighter, revered and respected by her followers. In death, she has become much more. Alva was laid to rest months ago after falling to the blade of a village defender. Driven to lead and protect her war-kin even beyond death, she returned as a wight, and resumed command of the raiding band. They established an outpost in this barrow which once served as her tomb. +Source: + Title: "Ironsworn: Delve" + License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + Authors: + - Shawn Tomkin +Delve Sites: + Alva's Rest: + Source: + Page: 96 + Rank: 2 + Theme: Ironsworn/Themes/Fortified + Domain: Ironsworn/Domains/Barrow + Denizens: + - Result: Raiders + Rarity: Very common + Encounter: Ironsworn/Encounters/Ironlanders/Raider + - Result: Zealot + Rarity: Common + Encounter: Ironsworn/Encounters/Ironlanders/Zealot + - Result: Mystic + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Ironlanders/Mystic + - Result: Bonewalker + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Horrors/Bonewalker + - Result: Blighthound + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Horrors/Blighthound + - Result: Alva + Rarity: Rare + Encounter: Ironsworn/Encounters/Horrors/Wight + - Result: Bonehorde + Rarity: Rare + Encounter: Ironsworn/Encounters/Horrors/Bonehorde + Description: |- + In life, Alva the Reaver was a leader of raiders and a merciless fighter, revered and respected by her followers. In death, she has become much more. Alva was laid to rest months ago after falling to the blade of a village defender. Driven to lead and protect her war-kin even beyond death, she returned as a wight, and resumed command of the raiding band. They established an outpost in this barrow which once served as her tomb. - The barrow brims with traps and hazards. Raiders wielding shield and spear lurk around every corner. Alva is also protected by a band of zealots, adorned in white cloaks and bone masks, who believe she is destined to fulfill some dark destiny. + The barrow brims with traps and hazards. Raiders wielding shield and spear lurk around every corner. Alva is also protected by a band of zealots, adorned in white cloaks and bone masks, who believe she is destined to fulfill some dark destiny. - The raiders strike out at villages, returning to the barrow with their spoils to appease their undead leader. The raids grow more frequent, and the nearby settlements grow desperate. What can be done to stop Alva’s reign of terror? -Bleakroot Depths: - Source: - Title: "Ironsworn: Delve" - Page: 96 - Rank: 3 - Theme: Ironsworn/Themes/Wild - Domain: Ironsworn/Domains/Frozen_Cavern - Denizens: - - Result: Wolf - Rarity: Very common - Encounter: Ironsworn/Encounters/Animals/Wolf - - Result: Bladewing - Rarity: Common - Encounter: Ironsworn/Encounters/Animals/Bladewing - - Result: Cave Lion - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Animals/Cave_Lion - - Result: Bear - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Animals/Bear - - Result: Common folk - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Ironlanders/Common_Folk - - Result: Hunter - Rarity: Rare - Encounter: Ironsworn/Encounters/Ironlanders/Hunter - - Result: Elder beast - Rarity: Rare - Encounter: Ironsworn/Encounters/Beasts/Elder_Beast - - Result: Primordial - Rarity: Unforeseen - Encounter: Ironsworn/Encounters/Firstborn/Primordial - Description: |- - The roots of the trees run deep into the veins of the earth, tangling amid the frozen tunnels of Bleakroot Depths. The site is perilous, but provides the only passage between the remote villages of Idleburrow and Lora’s Rise. Those settlements depend on each other for trade and protection amid the perilous heights of the Tempest Hills. + The raiders strike out at villages, returning to the barrow with their spoils to appease their undead leader. The raids grow more frequent, and the nearby settlements grow desperate. What can be done to stop Alva’s reign of terror? + Bleakroot Depths: + Source: + Page: 96 + Rank: 3 + Theme: Ironsworn/Themes/Wild + Domain: Ironsworn/Domains/Frozen_Cavern + Denizens: + - Result: Wolf + Rarity: Very common + Encounter: Ironsworn/Encounters/Animals/Wolf + - Result: Bladewing + Rarity: Common + Encounter: Ironsworn/Encounters/Animals/Bladewing + - Result: Cave Lion + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Animals/Cave_Lion + - Result: Bear + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Animals/Bear + - Result: Common folk + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Ironlanders/Common_Folk + - Result: Hunter + Rarity: Rare + Encounter: Ironsworn/Encounters/Ironlanders/Hunter + - Result: Elder beast + Rarity: Rare + Encounter: Ironsworn/Encounters/Beasts/Elder_Beast + - Result: Primordial + Rarity: Unforeseen + Encounter: Ironsworn/Encounters/Firstborn/Primordial + Description: |- + The roots of the trees run deep into the veins of the earth, tangling amid the frozen tunnels of Bleakroot Depths. The site is perilous, but provides the only passage between the remote villages of Idleburrow and Lora’s Rise. Those settlements depend on each other for trade and protection amid the perilous heights of the Tempest Hills. - Recently, the beasts of the hills have taken to the tunnels, drawn there inexplicably. Within, they become frenzied and wild. They ambush all who dare enter Bleakroot Depths, cutting off this critical route. What primal force is at work here? -Bonewilds: - Source: - Title: "Ironsworn: Delve" - Page: 97 - Rank: 3 - Theme: Ironsworn/Themes/Haunted - Domain: Ironsworn/Domains/Tanglewood - Denizens: - - Result: Bonewalker - Rarity: Very common - Encounter: Ironsworn/Encounters/Horrors/Bonewalker - - Result: Haunt - Rarity: Common - Encounter: Ironsworn/Encounters/Horrors/Haunt - - Result: Wolf - Rarity: Common - Encounter: Ironsworn/Encounters/Animals/Wolf - - Result: Blighthound - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Horrors/Blighthound - - Result: Bonehorde - Rarity: Rare - Encounter: Ironsworn/Encounters/Horrors/Bonehorde - - Result: Blood thorn - Rarity: Rare - Encounter: Ironsworn/Encounters/Anomalies/Blood_Thorn - - Result: Husk - Rarity: Unforeseen - Encounter: Ironsworn/Encounters/Ironlanders/Husk - Description: |- - This dense forest flourishes atop the remains of an ancient battlefield. Two armies clashed here long ago, fighting and killing over some forgotten dispute. Now, it is strewn with the artifacts and bones of the fallen. Rusted swords, broken spears, and dented helms protrude from the mossy ground, and skulls peer out from the knotted bark of trees. The intense corruption of bloodshed seeps into the roots of this place, and the tormented spirits rise to inhabit its vines and branches. + Recently, the beasts of the hills have taken to the tunnels, drawn there inexplicably. Within, they become frenzied and wild. They ambush all who dare enter Bleakroot Depths, cutting off this critical route. What primal force is at work here? + Bonewilds: + Source: + Page: 97 + Rank: 3 + Theme: Ironsworn/Themes/Haunted + Domain: Ironsworn/Domains/Tanglewood + Denizens: + - Result: Bonewalker + Rarity: Very common + Encounter: Ironsworn/Encounters/Horrors/Bonewalker + - Result: Haunt + Rarity: Common + Encounter: Ironsworn/Encounters/Horrors/Haunt + - Result: Wolf + Rarity: Common + Encounter: Ironsworn/Encounters/Animals/Wolf + - Result: Blighthound + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Horrors/Blighthound + - Result: Bonehorde + Rarity: Rare + Encounter: Ironsworn/Encounters/Horrors/Bonehorde + - Result: Blood thorn + Rarity: Rare + Encounter: Ironsworn/Encounters/Anomalies/Blood_Thorn + - Result: Husk + Rarity: Unforeseen + Encounter: Ironsworn/Encounters/Ironlanders/Husk + Description: |- + This dense forest flourishes atop the remains of an ancient battlefield. Two armies clashed here long ago, fighting and killing over some forgotten dispute. Now, it is strewn with the artifacts and bones of the fallen. Rusted swords, broken spears, and dented helms protrude from the mossy ground, and skulls peer out from the knotted bark of trees. The intense corruption of bloodshed seeps into the roots of this place, and the tormented spirits rise to inhabit its vines and branches. - Skeletal remains seem to reach from their resting places among gnarled roots, and the wind through the branches is a mournful call. The sap of these trees weeps red and thick as blood. What evil sustains the specter of death here? -Darkfall Caves: - Source: - Title: "Ironsworn: Delve" - Page: 97 - Rank: 5 - Theme: Ironsworn/Themes/Ancient - Domain: Ironsworn/Domains/Cavern - Denizens: - - Result: Nightmare Spider - Rarity: Very common - Encounter: Ironsworn/Encounters/Animals/Nightmare_Spider - - Result: Bladewing - Rarity: Common - Encounter: Ironsworn/Encounters/Animals/Bladewing - - Result: Deep Rat - Rarity: Common - Encounter: Ironsworn/Encounters/Animals/Deep_Rat - - Result: Broken - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Ironlanders/Broken - - Result: Chitter - Rarity: Rare - Encounter: Ironsworn/Encounters/Beasts/Chitter - - Result: Trog - Rarity: Rare - Encounter: Ironsworn/Encounters/Animals/Trog - - Result: Wyrm - Rarity: Unforeseen - Encounter: Ironsworn/Encounters/Beasts/Wyrm - Description: |- - Local legend tells of a vast, sprawling cavern with heights as great as a mountain, and depths as fathomless as the ocean. It is a place, some say, carved by the hands of old gods. + Skeletal remains seem to reach from their resting places among gnarled roots, and the wind through the branches is a mournful call. The sap of these trees weeps red and thick as blood. What evil sustains the specter of death here? + Darkfall Caves: + Source: + Page: 97 + Rank: 5 + Theme: Ironsworn/Themes/Ancient + Domain: Ironsworn/Domains/Cavern + Denizens: + - Result: Nightmare Spider + Rarity: Very common + Encounter: Ironsworn/Encounters/Animals/Nightmare_Spider + - Result: Bladewing + Rarity: Common + Encounter: Ironsworn/Encounters/Animals/Bladewing + - Result: Deep Rat + Rarity: Common + Encounter: Ironsworn/Encounters/Animals/Deep_Rat + - Result: Broken + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Ironlanders/Broken + - Result: Chitter + Rarity: Rare + Encounter: Ironsworn/Encounters/Beasts/Chitter + - Result: Trog + Rarity: Rare + Encounter: Ironsworn/Encounters/Animals/Trog + - Result: Wyrm + Rarity: Unforeseen + Encounter: Ironsworn/Encounters/Beasts/Wyrm + Description: |- + Local legend tells of a vast, sprawling cavern with heights as great as a mountain, and depths as fathomless as the ocean. It is a place, some say, carved by the hands of old gods. - This subterranean expanse can be reached from the surface, but only by traversing a labyrinth of plunging tunnels and tight crawlspaces known as Darkfall Caves. There are vestiges of a long-lost people in the passages, echoes of a time when others walked these paths, but today only skittering and skulking things dwell here. Nightmare spiders are a particularly common danger. They subsist on bats, rats, and insects—but are all too likely to attack a careless explorer. They ambush from above, their venom delivering horrific dreams to any who manage to escape. + This subterranean expanse can be reached from the surface, but only by traversing a labyrinth of plunging tunnels and tight crawlspaces known as Darkfall Caves. There are vestiges of a long-lost people in the passages, echoes of a time when others walked these paths, but today only skittering and skulking things dwell here. Nightmare spiders are a particularly common danger. They subsist on bats, rats, and insects—but are all too likely to attack a careless explorer. They ambush from above, their venom delivering horrific dreams to any who manage to escape. - The darkness within is absolute. The descent unending. What secrets lie in the unexplored heart of this place? -Deeprot Bog: - Source: - Title: "Ironsworn: Delve" - Page: 98 - Rank: 2 - Theme: Ironsworn/Themes/Hallowed - Domain: Ironsworn/Domains/Shadowfen - Denizens: - - Result: Zealot - Rarity: Very common - Encounter: Ironsworn/Encounters/Ironlanders/Zealot - - Result: Marsh rat - Rarity: Common - Encounter: Ironsworn/Encounters/Animals/Marsh_Rat - - Result: Harrow spider - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Beasts/Harrow_Spider - - Result: Bog rot - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Horror/Bog_Rot - - Result: Basilisk - Rarity: Rare - Encounter: Ironsworn/Encounters/Beasts/Basilisk - - Result: Sodden - Rarity: Rare - Encounter: Ironsworn/Encounters/Horrors/Sodden - - Result: Chimera - Rarity: Unforeseen - Encounter: Ironsworn/Encounters/Horrors/Chimera - Description: |- - The marshes of Deeprot Bog sit within a low valley, surrounded by impassible cliffs. The only accessible approach to this place is through a Ravaged Cavern, carved into the heart of the enclosing hills. It is a dangerous path, prone to floods and collapse. + The darkness within is absolute. The descent unending. What secrets lie in the unexplored heart of this place? + Deeprot Bog: + Source: + Page: 98 + Rank: 2 + Theme: Ironsworn/Themes/Hallowed + Domain: Ironsworn/Domains/Shadowfen + Denizens: + - Result: Zealot + Rarity: Very common + Encounter: Ironsworn/Encounters/Ironlanders/Zealot + - Result: Marsh rat + Rarity: Common + Encounter: Ironsworn/Encounters/Animals/Marsh_Rat + - Result: Harrow spider + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Beasts/Harrow_Spider + - Result: Bog rot + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Horror/Bog_Rot + - Result: Basilisk + Rarity: Rare + Encounter: Ironsworn/Encounters/Beasts/Basilisk + - Result: Sodden + Rarity: Rare + Encounter: Ironsworn/Encounters/Horrors/Sodden + - Result: Chimera + Rarity: Unforeseen + Encounter: Ironsworn/Encounters/Horrors/Chimera + Description: |- + The marshes of Deeprot Bog sit within a low valley, surrounded by impassible cliffs. The only accessible approach to this place is through a Ravaged Cavern, carved into the heart of the enclosing hills. It is a dangerous path, prone to floods and collapse. - Within the bog itself, amid the black waters and tangled wilds of the fen, the cult of the One Beneath Us practices their rituals. Utterly devoted to the strange deity of decay, the cultists formerly kept to themselves. But recently, they’ve struck out, traveling by boat through the cavern passage. They gather supplies and new adherents from local settlements—through force if necessary. + Within the bog itself, amid the black waters and tangled wilds of the fen, the cult of the One Beneath Us practices their rituals. Utterly devoted to the strange deity of decay, the cultists formerly kept to themselves. But recently, they’ve struck out, traveling by boat through the cavern passage. They gather supplies and new adherents from local settlements—through force if necessary. - A perpetual storm seems to hang over the marsh, its dark clouds roiling. Could the cultists serving the One Beneath Us be reaching a zenith in their work? -Egan’s Folly: - Source: - Title: "Ironsworn: Delve" - Page: 98 - Rank: 4 - Theme: Ironsworn/Themes/Haunted - Domain: Ironsworn/Domains/Pass - Denizens: - - Result: Frostbound - Rarity: Very common - Encounter: Ironsworn/Encounters/Horrors/Frostbound - - Result: Haunt - Rarity: Common - Encounter: Ironsworn/Encounters/Horrors/Haunt - - Result: Mammoth - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Beasts/Mammoth - - Result: Giant - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Firstborn/Giant - - Result: Wolf - Rarity: Rare - Encounter: Ironsworn/Encounters/Animals/Wolf - - Result: Cave Lion - Rarity: Rare - Encounter: Ironsworn/Encounters/Animals/Cave_Lion - - Result: Tempest - Rarity: Unforeseen - Encounter: Ironsworn/Encounters/Anomalies/Tempest - Description: |- - The pathfinder known as Egan prided himself on guiding Ironlanders through treacherous lands. Five years ago, he agreed to lead a group of folk headed for a mining settlement through an icebound pass. He departed too late in the season, and winter fell upon the mountains with brutal force. The expedition never emerged. + A perpetual storm seems to hang over the marsh, its dark clouds roiling. Could the cultists serving the One Beneath Us be reaching a zenith in their work? + Egan’s Folly: + Source: + Page: 98 + Rank: 4 + Theme: Ironsworn/Themes/Haunted + Domain: Ironsworn/Domains/Pass + Denizens: + - Result: Frostbound + Rarity: Very common + Encounter: Ironsworn/Encounters/Horrors/Frostbound + - Result: Haunt + Rarity: Common + Encounter: Ironsworn/Encounters/Horrors/Haunt + - Result: Mammoth + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Beasts/Mammoth + - Result: Giant + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Firstborn/Giant + - Result: Wolf + Rarity: Rare + Encounter: Ironsworn/Encounters/Animals/Wolf + - Result: Cave Lion + Rarity: Rare + Encounter: Ironsworn/Encounters/Animals/Cave_Lion + - Result: Tempest + Rarity: Unforeseen + Encounter: Ironsworn/Encounters/Anomalies/Tempest + Description: |- + The pathfinder known as Egan prided himself on guiding Ironlanders through treacherous lands. Five years ago, he agreed to lead a group of folk headed for a mining settlement through an icebound pass. He departed too late in the season, and winter fell upon the mountains with brutal force. The expedition never emerged. - What horrors befell the group can only be guessed. All that remained of their makeshift camps were long-cold fire pits, crystalline patches of frozen blood, and gnawed bones. It’s said the spirits of those travelers still haunt the pass now known as Egan’s Folly. Travelers report strange and unsettling sounds echoing through the crags. Dark forms and hungry eyes appear half-glimpsed within blinding snowstorms. What happened here? Is there some way to put the tormented souls to rest? + What horrors befell the group can only be guessed. All that remained of their makeshift camps were long-cold fire pits, crystalline patches of frozen blood, and gnawed bones. It’s said the spirits of those travelers still haunt the pass now known as Egan’s Folly. Travelers report strange and unsettling sounds echoing through the crags. Dark forms and hungry eyes appear half-glimpsed within blinding snowstorms. What happened here? Is there some way to put the tormented souls to rest? -Foulwater Plunge: - Source: - Title: "Ironsworn: Delve" - Page: 99 - Rank: 3 - Theme: Ironsworn/Themes/Corrupted - Domain: Ironsworn/Domains/Sea_Cave - Denizens: - - Result: Zealot - Rarity: Very common - Encounter: Ironsworn/Encounters/Ironlanders/Zealot - - Result: Nightspawn - Rarity: Common - Encounter: Ironsworn/Encounters/Beasts/Nightspawn - - Result: Merrow - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Firstborn/Merrow - - Result: Shroud crab - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Animals/Shroud_Crab - - Result: Mother nightspawn - Rarity: Rare - Encounter: Ironsworn/Encounters/Beasts/Nightspawn - - Result: Husk - Rarity: Rare - Encounter: Ironsworn/Encounters/Ironlanders/Husk - - Result: Maelstrom - Rarity: Unforeseen - Encounter: Ironsworn/Encounters/Anomalies/Maelstrom - Description: |- - On the Ragged Coast, countless caves riddle the fjords, carved over eons by the relentless tides. One such cave hosts a misshapen beast of unknown origin: a nightspawn, birthed from hellish depths to prey on the fishers and sailors of the coast. The monster’s presence taints the waters of the cave, blackening them, tinging them with an acrid odor. Moreover, nearby aquatic life takes on qualities of the nightspawn, reshaped into aberrant forms by its creeping vileness. These monstrosities drift farther and farther from the cave, spreading the corruption to ships and settlements. + Foulwater Plunge: + Source: + Page: 99 + Rank: 3 + Theme: Ironsworn/Themes/Corrupted + Domain: Ironsworn/Domains/Sea_Cave + Denizens: + - Result: Zealot + Rarity: Very common + Encounter: Ironsworn/Encounters/Ironlanders/Zealot + - Result: Nightspawn + Rarity: Common + Encounter: Ironsworn/Encounters/Beasts/Nightspawn + - Result: Merrow + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Firstborn/Merrow + - Result: Shroud crab + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Animals/Shroud_Crab + - Result: Mother nightspawn + Rarity: Rare + Encounter: Ironsworn/Encounters/Beasts/Nightspawn + - Result: Husk + Rarity: Rare + Encounter: Ironsworn/Encounters/Ironlanders/Husk + - Result: Maelstrom + Rarity: Unforeseen + Encounter: Ironsworn/Encounters/Anomalies/Maelstrom + Description: |- + On the Ragged Coast, countless caves riddle the fjords, carved over eons by the relentless tides. One such cave hosts a misshapen beast of unknown origin: a nightspawn, birthed from hellish depths to prey on the fishers and sailors of the coast. The monster’s presence taints the waters of the cave, blackening them, tinging them with an acrid odor. Moreover, nearby aquatic life takes on qualities of the nightspawn, reshaped into aberrant forms by its creeping vileness. These monstrosities drift farther and farther from the cave, spreading the corruption to ships and settlements. - Recently, folk have undertaken pilgrimages to this sea cave. They say the nightspawn calls to them, like a mother to its children. What has become of them in that vile place? -Frostmark: - Source: - Title: "Ironsworn: Delve" - Page: 99 - Rank: 3 - Theme: Ironsworn/Themes/Fortified - Domain: Ironsworn/Domains/Icereach - Denizens: - - Result: Raiders - Rarity: Very common - Encounter: Ironsworn/Encounters/Ironlanders/Raiders - - Result: Wolf - Rarity: Common - Encounter: Ironsworn/Encounters/Animals/Wolf - - Result: Broken - Rarity: Common - Encounter: Ironsworn/Encounters/Ironlanders/Broken - - Result: Bear - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Animals/Bear - - Result: Frostbound - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Horrors/Frostbound - - Result: Tempest - Rarity: Rare - Encounter: Ironsworn/Encounters/Anomalies/Tempest - - Result: Rhaskar - Rarity: Rare - Encounter: Ironsworn/Encounters/Beasts/Rhaskar - - Result: Primordial - Rarity: Unforeseen - Encounter: Ironsworn/Encounters/Firstborn/Primordial - Description: |- - A clan of raiders established a settlement on this icereach. Their village, Thilda’s Hold, sits high atop a high frozen crag. Elsewhere, they’ve built several work camps and outposts. In the spring, when the surrounding waters thaw, they board their longboats to raid along the coast. + Recently, folk have undertaken pilgrimages to this sea cave. They say the nightspawn calls to them, like a mother to its children. What has become of them in that vile place? + Frostmark: + Source: + Page: 99 + Rank: 3 + Theme: Ironsworn/Themes/Fortified + Domain: Ironsworn/Domains/Icereach + Denizens: + - Result: Raiders + Rarity: Very common + Encounter: Ironsworn/Encounters/Ironlanders/Raiders + - Result: Wolf + Rarity: Common + Encounter: Ironsworn/Encounters/Animals/Wolf + - Result: Broken + Rarity: Common + Encounter: Ironsworn/Encounters/Ironlanders/Broken + - Result: Bear + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Animals/Bear + - Result: Frostbound + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Horrors/Frostbound + - Result: Tempest + Rarity: Rare + Encounter: Ironsworn/Encounters/Anomalies/Tempest + - Result: Rhaskar + Rarity: Rare + Encounter: Ironsworn/Encounters/Beasts/Rhaskar + - Result: Primordial + Rarity: Unforeseen + Encounter: Ironsworn/Encounters/Firstborn/Primordial + Description: |- + A clan of raiders established a settlement on this icereach. Their village, Thilda’s Hold, sits high atop a high frozen crag. Elsewhere, they’ve built several work camps and outposts. In the spring, when the surrounding waters thaw, they board their longboats to raid along the coast. - Reaching the clan’s remote village requires difficult overland travel. In warmer seasons, a skilled seafarer can navigate the ice-strewn waterways that cut through Frostmark like ragged scars. + Reaching the clan’s remote village requires difficult overland travel. In warmer seasons, a skilled seafarer can navigate the ice-strewn waterways that cut through Frostmark like ragged scars. - A large tribe of broken also live here, sheltered in an Ancient Frozen Cavern. In a recent nighttime attack on Thilda’s Hold, they killed many of the raiders, including the clan leader’s son. What will the raider’s do in retaliation? -Greathammer Deep: - Source: - Title: "Ironsworn: Delve" - Page: 100 - Rank: 4 - Theme: Ironsworn/Themes/Ravaged - Domain: Ironsworn/Domains/Mine - Denizens: - - Result: Frostbound giant - Rarity: Common - Encounter: Ironsworn/Encounters/Horrors/Frostbound - - Result: Primordial - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Firstborn/Primordial - - Result: Iron-wracked beast - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Beasts/Iron-wracked_Beast - - Result: Haunt - Rarity: Rare - Encounter: Ironsworn/Encounters/Horrors/Haunt - - Result: Nightspawn - Rarity: Rare - Encounter: Ironsworn/Encounters/Beasts/Nightspawn - - Result: Wyrm - Rarity: Unforeseen - Encounter: Ironsworn/Encounters/Beasts/Wyrm - Description: |- - In ancient days, a lineage of giants lived beyond the Veiled Mountains in the great expanse we now call the Shattered Wastes. The cavernous entrance to this abandoned mine sits at the summit of an icy mount. In the frozen depths, the giants once mined for ore and fashioned great weapons. Today, their abandoned tools and preserved corpses are all that remain of their legacy. + A large tribe of broken also live here, sheltered in an Ancient Frozen Cavern. In a recent nighttime attack on Thilda’s Hold, they killed many of the raiders, including the clan leader’s son. What will the raider’s do in retaliation? + Greathammer Deep: + Source: + Page: 100 + Rank: 4 + Theme: Ironsworn/Themes/Ravaged + Domain: Ironsworn/Domains/Mine + Denizens: + - Result: Frostbound giant + Rarity: Common + Encounter: Ironsworn/Encounters/Horrors/Frostbound + - Result: Primordial + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Firstborn/Primordial + - Result: Iron-wracked beast + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Beasts/Iron-wracked_Beast + - Result: Haunt + Rarity: Rare + Encounter: Ironsworn/Encounters/Horrors/Haunt + - Result: Nightspawn + Rarity: Rare + Encounter: Ironsworn/Encounters/Beasts/Nightspawn + - Result: Wyrm + Rarity: Unforeseen + Encounter: Ironsworn/Encounters/Beasts/Wyrm + Description: |- + In ancient days, a lineage of giants lived beyond the Veiled Mountains in the great expanse we now call the Shattered Wastes. The cavernous entrance to this abandoned mine sits at the summit of an icy mount. In the frozen depths, the giants once mined for ore and fashioned great weapons. Today, their abandoned tools and preserved corpses are all that remain of their legacy. - Exploration of this place is treacherous. The mine is shaken by frequent earthquakes, causing cave-ins and pitfalls. The cold is as piercing and deadly as the sharpest blade. Horrid things lurk amid the echoing shadows. + Exploration of this place is treacherous. The mine is shaken by frequent earthquakes, causing cave-ins and pitfalls. The cold is as piercing and deadly as the sharpest blade. Horrid things lurk amid the echoing shadows. - Some say the giants unleashed a long-buried power. Did this cause the cataclysm which sealed these northern lands in perpetual ice? -Holdfast Barrow: - Source: - Title: "Ironsworn: Delve" - Page: 100 - Rank: 3 - Theme: Ironsworn/Themes/Haunted - Domain: Ironsworn/Domains/Barrow - Denizens: - - Result: Bonewalker - Rarity: Very common - Encounter: Ironsworn/Encounters/Horrors/Bonewalker - - Result: Haunt - Rarity: Common - Encounter: Ironsworn/Encounters/Horrors/Haunt - - Result: Bonehorde - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Horrors/Bonehorde - - Result: Blighthound - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Horrors/Blighthound - - Result: Iron revenant - Rarity: Rare - Encounter: Ironsworn/Encounters/Horrors/Iron_Revenant - - Result: Zhan the Bloodied - Rarity: Rare - Description: |- - A power-hungry warrior known as Zhan the Bloodied arrived on the shores of the Ironlands with the first refugees. Seeing an opportunity to take control of the struggling settlements and weary people, he assembled a warband and waged a cruel campaign to establish himself as the ruler of this new land. Many hundreds died under his sword or by his command. Finally, in a battle against some brave folk defending their steading, he was defeated. With his dying breath, he swore he would return to force the people of the Ironlands to serve under his banner. + Some say the giants unleashed a long-buried power. Did this cause the cataclysm which sealed these northern lands in perpetual ice? + Holdfast Barrow: + Source: + Page: 100 + Rank: 3 + Theme: Ironsworn/Themes/Haunted + Domain: Ironsworn/Domains/Barrow + Denizens: + - Result: Bonewalker + Rarity: Very common + Encounter: Ironsworn/Encounters/Horrors/Bonewalker + - Result: Haunt + Rarity: Common + Encounter: Ironsworn/Encounters/Horrors/Haunt + - Result: Bonehorde + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Horrors/Bonehorde + - Result: Blighthound + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Horrors/Blighthound + - Result: Iron revenant + Rarity: Rare + Encounter: Ironsworn/Encounters/Horrors/Iron_Revenant + - Result: Zhan the Bloodied + Rarity: Rare + Description: |- + A power-hungry warrior known as Zhan the Bloodied arrived on the shores of the Ironlands with the first refugees. Seeing an opportunity to take control of the struggling settlements and weary people, he assembled a warband and waged a cruel campaign to establish himself as the ruler of this new land. Many hundreds died under his sword or by his command. Finally, in a battle against some brave folk defending their steading, he was defeated. With his dying breath, he swore he would return to force the people of the Ironlands to serve under his banner. - Zhan’s body was entombed in a deep barrow. The members of his warband, even those who still lived, were sealed in that place along with him. A heavy stone and warding rites blocked the entrance. + Zhan’s body was entombed in a deep barrow. The members of his warband, even those who still lived, were sealed in that place along with him. A heavy stone and warding rites blocked the entrance. - Time passed. Memories of Zhan’s reign of terror faded into legend. But some say he still lurks in the depths of the barrow, biding his time. If the seal is broken, will Zhan find a way to fulfill his undying vow? -Hollowmount Island: - Source: - Title: "Ironsworn: Delve" - Page: 101 - Rank: 4 - Theme: Ironsworn/Themes/Ancient - Domain: Ironsworn/Domains/Underkeep - Denizens: - - Result: Raider - Rarity: Very common - Encounter: Ironsworn/Encounters/Ironlanders/Raider - - Result: Bonewalker - Rarity: Common - Encounter: Ironsworn/Encounters/Horrors/Bonewalker - - Result: Trog - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Animals/Trog - - Result: Haunt - Rarity: Rare - Encounter: Ironsworn/Encounters/Horrors/Haunt - - Result: Kayu the Bold - Rarity: Rare - - Result: Nightspawn - Rarity: Unforeseen - Encounter: Ironsworn/Encounters/Beasts/Nightspawn - Description: |- - The only access to landfall on this imposing, storm-swept island is through a narrow bay called the Demon’s Throat. Sailing this passage requires careful navigation around jagged, hull-shattering rocks. For the skilled and the lucky, relative calm awaits in the inner bay anchorage, which is sheltered by a massive overhanging cliff. Ancient tone steps lead from the shore into a grand doorway in the side of the rock face. + Time passed. Memories of Zhan’s reign of terror faded into legend. But some say he still lurks in the depths of the barrow, biding his time. If the seal is broken, will Zhan find a way to fulfill his undying vow? + Hollowmount Island: + Source: + Page: 101 + Rank: 4 + Theme: Ironsworn/Themes/Ancient + Domain: Ironsworn/Domains/Underkeep + Denizens: + - Result: Raider + Rarity: Very common + Encounter: Ironsworn/Encounters/Ironlanders/Raider + - Result: Bonewalker + Rarity: Common + Encounter: Ironsworn/Encounters/Horrors/Bonewalker + - Result: Trog + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Animals/Trog + - Result: Haunt + Rarity: Rare + Encounter: Ironsworn/Encounters/Horrors/Haunt + - Result: Kayu the Bold + Rarity: Rare + - Result: Nightspawn + Rarity: Unforeseen + Encounter: Ironsworn/Encounters/Beasts/Nightspawn + Description: |- + The only access to landfall on this imposing, storm-swept island is through a narrow bay called the Demon’s Throat. Sailing this passage requires careful navigation around jagged, hull-shattering rocks. For the skilled and the lucky, relative calm awaits in the inner bay anchorage, which is sheltered by a massive overhanging cliff. Ancient tone steps lead from the shore into a grand doorway in the side of the rock face. - Beyond the doorway, vast passages and chambers are carved through the center of Hollowmount Island. This underkeep, undiscovered until recently, preserves the secrets and history of a long-forgotten people. + Beyond the doorway, vast passages and chambers are carved through the center of Hollowmount Island. This underkeep, undiscovered until recently, preserves the secrets and history of a long-forgotten people. - Last year, a band of raiders took up residence within the outer halls of the underkeep. When not attacking coastal settlements, they live in comfort and without concern for their defenses. Who else, other than their own leader—a skilled sailor they call Kayu the Bold—is foolish enough to make landfall here? But they have neglected to consider the dangers that may lie within. Will the raiders fall prey to the deadly traps and long-dead guardians which protect the secrets of this place? -Icebound Reach: - Source: - Title: "Ironsworn: Delve" - Page: 101 - Rank: 4 - Theme: Ironsworn/Themes/Wild - Domain: Ironsworn/Domains/Icereach - Denizens: - - Result: Wolf - Rarity: Very common - Encounter: Ironsworn/Encounters/Animals/Wolf - - Result: Bear - Rarity: Common - Encounter: Ironsworn/Encounters/Animals/Bear - - Result: Atanya - Rarity: Common - Encounter: Ironsworn/Encounters/Firstborn/Atanya - - Result: Shroud Crab - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Animals/Shroud_Crab - - Result: Common folk - sailors - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Ironlanders/Common_Folk - - Result: Wyvern - Rarity: Rare - Encounter: Ironsworn/Encounters/Beasts/Wyvern - - Result: Rhaskar - Rarity: Rare - Encounter: Ironsworn/Encounters/Beasts/Rhaskar - Description: |- - Ironlander ships, laden with ore from the north, often navigate the waters of a channel which bisects this vast icereach. This sea passage was once faster and less hazardous than overland routes. However, worsening winters have trapped ships in the expanding ice, forcing the crews to try to survive the cold season alone and isolated. Wrecked ships, their hulls exposed like broken ribs, stand as grim monuments to those who did not prevail. + Last year, a band of raiders took up residence within the outer halls of the underkeep. When not attacking coastal settlements, they live in comfort and without concern for their defenses. Who else, other than their own leader—a skilled sailor they call Kayu the Bold—is foolish enough to make landfall here? But they have neglected to consider the dangers that may lie within. Will the raiders fall prey to the deadly traps and long-dead guardians which protect the secrets of this place? + Icebound Reach: + Source: + Page: 101 + Rank: 4 + Theme: Ironsworn/Themes/Wild + Domain: Ironsworn/Domains/Icereach + Denizens: + - Result: Wolf + Rarity: Very common + Encounter: Ironsworn/Encounters/Animals/Wolf + - Result: Bear + Rarity: Common + Encounter: Ironsworn/Encounters/Animals/Bear + - Result: Atanya + Rarity: Common + Encounter: Ironsworn/Encounters/Firstborn/Atanya + - Result: Shroud Crab + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Animals/Shroud_Crab + - Result: Common folk - sailors + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Ironlanders/Common_Folk + - Result: Wyvern + Rarity: Rare + Encounter: Ironsworn/Encounters/Beasts/Wyvern + - Result: Rhaskar + Rarity: Rare + Encounter: Ironsworn/Encounters/Beasts/Rhaskar + Description: |- + Ironlander ships, laden with ore from the north, often navigate the waters of a channel which bisects this vast icereach. This sea passage was once faster and less hazardous than overland routes. However, worsening winters have trapped ships in the expanding ice, forcing the crews to try to survive the cold season alone and isolated. Wrecked ships, their hulls exposed like broken ribs, stand as grim monuments to those who did not prevail. - The animals and beasts who dwell here fight their own battles for survival. The mightiest of these is a massive rhaskar which defends this frozen land against intruders. Is safe passage through Icebound Reach forever lost to us? -Lastrock Mine: - Source: - Title: "Ironsworn: Delve" - Page: 102 - Rank: 3 - Theme: Ironsworn/Themes/Infested - Domain: Ironsworn/Domains/Mine - Denizens: - - Result: Chitter - Rarity: Very common - Encounter: Ironsworn/Encounters/Beasts/Chitter - - Result: Deep rat - Rarity: Common - Encounter: Ironsworn/Encounters/Animals/Deep_Rat - - Result: Nightmare spider - Rarity: Common - Encounter: Ironsworn/Encounters/Animals/Nightmare_Spider - - Result: Trog - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Animals/Trog - - Result: Bladewing - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Animals/Bladewing - - Result: Common folk - miner - Rarity: Rare - Encounter: Ironsworn/Encounters/Ironlanders/Common_Folk - Description: |- - The miners of Lastrock depend on the iron in their hills to maintain trade alliances with neighboring settlements. The mine is decades old, founded before the village itself. But a new tunnel broke into a cavern and allowed a horde of chitters, starving and frenzied, to swarm into the tunnels. Several miners fell to the swarm; others have not been seen since the invasion. + The animals and beasts who dwell here fight their own battles for survival. The mightiest of these is a massive rhaskar which defends this frozen land against intruders. Is safe passage through Icebound Reach forever lost to us? + Lastrock Mine: + Source: + Page: 102 + Rank: 3 + Theme: Ironsworn/Themes/Infested + Domain: Ironsworn/Domains/Mine + Denizens: + - Result: Chitter + Rarity: Very common + Encounter: Ironsworn/Encounters/Beasts/Chitter + - Result: Deep rat + Rarity: Common + Encounter: Ironsworn/Encounters/Animals/Deep_Rat + - Result: Nightmare spider + Rarity: Common + Encounter: Ironsworn/Encounters/Animals/Nightmare_Spider + - Result: Trog + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Animals/Trog + - Result: Bladewing + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Animals/Bladewing + - Result: Common folk - miner + Rarity: Rare + Encounter: Ironsworn/Encounters/Ironlanders/Common_Folk + Description: |- + The miners of Lastrock depend on the iron in their hills to maintain trade alliances with neighboring settlements. The mine is decades old, founded before the village itself. But a new tunnel broke into a cavern and allowed a horde of chitters, starving and frenzied, to swarm into the tunnels. Several miners fell to the swarm; others have not been seen since the invasion. - Other creatures followed the chitters into the tunnels, and the place is overrun. The Lastrock miners can’t return to work until the infestation is cleared. Also, there are reports of distant cries for help echoing through the abandoned chambers. Did some of the missing miners survive? -Redhome Sanctum: - Source: - Title: "Ironsworn: Delve" - Page: 102 - Rank: 4 - Theme: Ironsworn/Themes/Corrupted - Domain: Ironsworn/Domains/Underkeep - Denizens: - - Result: Deep rat - Rarity: Very common - Encounter: Ironsworn/Encounters/Animals/Deep_Rat - - Result: Nightspawn - Rarity: Common - Encounter: Ironsworn/Encounters/Beasts/Nightspawn - - Result: Nightmare spider - Rarity: Common - Encounter: Ironsworn/Encounters/Animals/Nightmare_Spider - - Result: Trog - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Animals/Trog - - Result: Chimera - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Horrors/Chimera - - Result: Bonewalker - Rarity: Rare - Encounter: Ironsworn/Encounters/Horrors/Bonewalker - Description: |- - The people of Redhome are known for their hospitality. The village is unusually prosperous, and the folk are willing to share that abundance with friend and stranger alike. All are welcome during the frequent festivals and celebrations. Many travelers speak fondly of their time spent in Redhome, and of a bounty of food, drink, song, and fellowship. It is the Old World reborn, they say, a wellspring of hope in a harsh land. + Other creatures followed the chitters into the tunnels, and the place is overrun. The Lastrock miners can’t return to work until the infestation is cleared. Also, there are reports of distant cries for help echoing through the abandoned chambers. Did some of the missing miners survive? + Redhome Sanctum: + Source: + Page: 102 + Rank: 4 + Theme: Ironsworn/Themes/Corrupted + Domain: Ironsworn/Domains/Underkeep + Denizens: + - Result: Deep rat + Rarity: Very common + Encounter: Ironsworn/Encounters/Animals/Deep_Rat + - Result: Nightspawn + Rarity: Common + Encounter: Ironsworn/Encounters/Beasts/Nightspawn + - Result: Nightmare spider + Rarity: Common + Encounter: Ironsworn/Encounters/Animals/Nightmare_Spider + - Result: Trog + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Animals/Trog + - Result: Chimera + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Horrors/Chimera + - Result: Bonewalker + Rarity: Rare + Encounter: Ironsworn/Encounters/Horrors/Bonewalker + Description: |- + The people of Redhome are known for their hospitality. The village is unusually prosperous, and the folk are willing to share that abundance with friend and stranger alike. All are welcome during the frequent festivals and celebrations. Many travelers speak fondly of their time spent in Redhome, and of a bounty of food, drink, song, and fellowship. It is the Old World reborn, they say, a wellspring of hope in a harsh land. - But there is a darker truth here. The settlement was built directly on top of an age-old underkeep. Within the longhouse, a sealed and guarded stone pit is a gateway to the labyrinthine underdark. The villagers perform a nightly rite by slaying an animal or beast and casting the corpse into the depths. This keeps the denizens of the underkeep at bay, they say, but many are not so sure. Some complain of lost memories and dark dreams of their time in the village. Others sing laments for loved ones who did not return from a sojourn there. What secrets do the folk of Redhome protect? -Sinking Temple: - Source: - Title: "Ironsworn: Delve" - Page: 103 - Rank: 4 - Theme: Ironsworn/Themes/Ravaged - Domain: Ironsworn/Domains/Ruin - Denizens: - - Result: Merrow - Rarity: Very common - Encounter: Ironsworn/Encounters/Firstborn/Merrow - - Result: Shroud crab - Rarity: Common - Encounter: Ironsworn/Encounters/Animals/Shroud_Crab - - Result: Sodden - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Horrors/Sodden - - Result: Maelstrom - Rarity: Rare - Encounter: Ironsworn/Encounters/Anomalies/Maelstrom - - Result: Primordial - Rarity: Rare - Encounter: Ironsworn/Encounters/Firstborn/Primordial - - Result: Kraken - Rarity: Unforeseen - Encounter: Ironsworn/Encounters/Beasts/Kraken - Description: |- - A massive ruin, ancient and abandoned, stands silent and still along the coast. Once, a lost people worshiped gods of the sea in this place. Today, the ground beneath it gives way, toppling the temple into the ocean and flooding its lower chambers. + But there is a darker truth here. The settlement was built directly on top of an age-old underkeep. Within the longhouse, a sealed and guarded stone pit is a gateway to the labyrinthine underdark. The villagers perform a nightly rite by slaying an animal or beast and casting the corpse into the depths. This keeps the denizens of the underkeep at bay, they say, but many are not so sure. Some complain of lost memories and dark dreams of their time in the village. Others sing laments for loved ones who did not return from a sojourn there. What secrets do the folk of Redhome protect? + Sinking Temple: + Source: + Page: 103 + Rank: 4 + Theme: Ironsworn/Themes/Ravaged + Domain: Ironsworn/Domains/Ruin + Denizens: + - Result: Merrow + Rarity: Very common + Encounter: Ironsworn/Encounters/Firstborn/Merrow + - Result: Shroud crab + Rarity: Common + Encounter: Ironsworn/Encounters/Animals/Shroud_Crab + - Result: Sodden + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Horrors/Sodden + - Result: Maelstrom + Rarity: Rare + Encounter: Ironsworn/Encounters/Anomalies/Maelstrom + - Result: Primordial + Rarity: Rare + Encounter: Ironsworn/Encounters/Firstborn/Primordial + - Result: Kraken + Rarity: Unforeseen + Encounter: Ironsworn/Encounters/Beasts/Kraken + Description: |- + A massive ruin, ancient and abandoned, stands silent and still along the coast. Once, a lost people worshiped gods of the sea in this place. Today, the ground beneath it gives way, toppling the temple into the ocean and flooding its lower chambers. - Ironlanders pilgrimage here to pay respect to those old gods. They cast cherished items into the sea and pray for calm waters and safe voyages for their kin. Recently, these pilgrims found the ruin overrun with savage merrow, invading from the ocean’s depths. + Ironlanders pilgrimage here to pay respect to those old gods. They cast cherished items into the sea and pray for calm waters and safe voyages for their kin. Recently, these pilgrims found the ruin overrun with savage merrow, invading from the ocean’s depths. - What brings the merrow to this place, and what hidden dangers lurk within its deluged chambers? -Smoldering Wood: - Source: - Title: "Ironsworn: Delve" - Page: 103 - Rank: 3 - Theme: Ironsworn/Themes/Ravaged - Domain: Ironsworn/Domains/Tanglewood - Denizens: - - Result: Varou - Rarity: Very common - Encounter: Ironsworn/Encounters/Firstborn/Varou - - Result: Bear - Rarity: Common - Encounter: Ironsworn/Encounters/Animals/Bear - - Result: Wolf - Rarity: Common - Encounter: Ironsworn/Encounters/Animals/Wolf - - Result: Boar - Rarity: Common - Encounter: Ironsworn/Encounters/Animals/Boar - - Result: Gnarl - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Beasts/Gnarl - - Result: Elder beast - Rarity: Rare - Encounter: Ironsworn/Encounters/Beasts/Elder_Beast - - Result: Blood thorn - Rarity: Unforeseen - Encounter: Ironsworn/Encounters/Anomalies/Blood_Thorn - Description: |- - Two years ago, a primordial of charred stone and raging fire was killed, hunted to its end by Ironlanders protecting their village. As the creature fell, disintegrating into ash, it sowed the land with its primal fire. Now, the trees smolder with spectral flame, giving off a choking heat and noxious smoke. The creatures of this place are driven to madness by this perpetual, ghostly blaze, and a tribe of Varou seek vengeance for what was destroyed. + What brings the merrow to this place, and what hidden dangers lurk within its deluged chambers? + Smoldering Wood: + Source: + Page: 103 + Rank: 3 + Theme: Ironsworn/Themes/Ravaged + Domain: Ironsworn/Domains/Tanglewood + Denizens: + - Result: Varou + Rarity: Very common + Encounter: Ironsworn/Encounters/Firstborn/Varou + - Result: Bear + Rarity: Common + Encounter: Ironsworn/Encounters/Animals/Bear + - Result: Wolf + Rarity: Common + Encounter: Ironsworn/Encounters/Animals/Wolf + - Result: Boar + Rarity: Common + Encounter: Ironsworn/Encounters/Animals/Boar + - Result: Gnarl + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Beasts/Gnarl + - Result: Elder beast + Rarity: Rare + Encounter: Ironsworn/Encounters/Beasts/Elder_Beast + - Result: Blood thorn + Rarity: Unforeseen + Encounter: Ironsworn/Encounters/Anomalies/Blood_Thorn + Description: |- + Two years ago, a primordial of charred stone and raging fire was killed, hunted to its end by Ironlanders protecting their village. As the creature fell, disintegrating into ash, it sowed the land with its primal fire. Now, the trees smolder with spectral flame, giving off a choking heat and noxious smoke. The creatures of this place are driven to madness by this perpetual, ghostly blaze, and a tribe of Varou seek vengeance for what was destroyed. - Mystics speak of visions of the primordial’s heart at the center of the wood. Will removing this heart cure the forest of its curse of flame? -Stillgrave Mire: - Source: - Title: "Ironsworn: Delve" - Page: 104 - Rank: 3 - Theme: Ironsworn/Themes/Haunted - Domain: Ironsworn/Domains/Shadowfen - Denizens: - - Result: Elf - Rarity: Very common - Encounter: Ironsworn/Encounters/Firstborn/Elf - - Result: Bonewalker - Rarity: Common - Encounter: Ironsworn/Encounters/Horrors/Bonewalker - - Result: Hollow - Rarity: Common - Encounter: Ironsworn/Encounters/Horrors/Hollow - - Result: Haunt - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Horrors/Haunt - - Result: Marsh rat - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Animals/Marsh_Rat - - Result: Chimera - Rarity: Rare - Encounter: Ironsworn/Encounters/Horrors/Chimera - - Result: Basilisk - Rarity: Rare - Encounter: Ironsworn/Encounters/Beasts/Basilisk - - Result: Primordial - Rarity: Unforeseen - Encounter: Ironsworn/Encounters/Firstborn/Primordial - Description: |- - In this flooded lowland forest, two clans of elves fight each other in an unending war. The reason for this conflict is long forgotten. Only the hate remains. The power of that hate infects this place like a sickness, seeping into the waters and contaminating the woods. It gives a horrid new life to those who die here, and fallen elves soon rise again to fight alongside their kin. They are called the twice-born. + Mystics speak of visions of the primordial’s heart at the center of the wood. Will removing this heart cure the forest of its curse of flame? + Stillgrave Mire: + Source: + Page: 104 + Rank: 3 + Theme: Ironsworn/Themes/Haunted + Domain: Ironsworn/Domains/Shadowfen + Denizens: + - Result: Elf + Rarity: Very common + Encounter: Ironsworn/Encounters/Firstborn/Elf + - Result: Bonewalker + Rarity: Common + Encounter: Ironsworn/Encounters/Horrors/Bonewalker + - Result: Hollow + Rarity: Common + Encounter: Ironsworn/Encounters/Horrors/Hollow + - Result: Haunt + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Horrors/Haunt + - Result: Marsh rat + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Animals/Marsh_Rat + - Result: Chimera + Rarity: Rare + Encounter: Ironsworn/Encounters/Horrors/Chimera + - Result: Basilisk + Rarity: Rare + Encounter: Ironsworn/Encounters/Beasts/Basilisk + - Result: Primordial + Rarity: Unforeseen + Encounter: Ironsworn/Encounters/Firstborn/Primordial + Description: |- + In this flooded lowland forest, two clans of elves fight each other in an unending war. The reason for this conflict is long forgotten. Only the hate remains. The power of that hate infects this place like a sickness, seeping into the waters and contaminating the woods. It gives a horrid new life to those who die here, and fallen elves soon rise again to fight alongside their kin. They are called the twice-born. - In some skirmishes, the dead outnumber the living. Soon, perhaps only the twice-born will remain. What can be done to end this forever war? -Stonesong Spire: - Source: - Title: "Ironsworn: Delve" - Page: 104 - Rank: 4 - Theme: Ironsworn/Themes/Hallowed - Domain: Ironsworn/Domains/Stronghold - Denizens: - - Result: Zealot - Rarity: Very common - Encounter: Ironsworn/Encounters/Ironlanders/Zealot - - Result: Common folk - Rarity: Common - Encounter: Ironsworn/Encounters/Ironlanders/Common_Folk - - Result: Warrior - Rarity: Common - Encounter: Ironsworn/Encounters/Ironlanders/Warrior - - Result: Mystic - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Ironlanders/Mystic - - Result: Haunt - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Horrors/Haunt - - Result: Thrall - Rarity: Rare - Encounter: Ironsworn/Encounters/Horrors/Thrall - - Result: Kord the Stonewright - Rarity: Rare - Description: |- - Visions of a once-great fortress drew Kord the Stonewright to a deep lake in the northern Havens. There, he discovered the stones scattered in shallow waters and buried in mud near the shore—all that was left of the ancient place which haunted his dreams. Piece by piece, he recovered the remains of the fortress, transplanting the stones laboriously to an island at the lake’s center. + In some skirmishes, the dead outnumber the living. Soon, perhaps only the twice-born will remain. What can be done to end this forever war? + Stonesong Spire: + Source: + Page: 104 + Rank: 4 + Theme: Ironsworn/Themes/Hallowed + Domain: Ironsworn/Domains/Stronghold + Denizens: + - Result: Zealot + Rarity: Very common + Encounter: Ironsworn/Encounters/Ironlanders/Zealot + - Result: Common folk + Rarity: Common + Encounter: Ironsworn/Encounters/Ironlanders/Common_Folk + - Result: Warrior + Rarity: Common + Encounter: Ironsworn/Encounters/Ironlanders/Warrior + - Result: Mystic + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Ironlanders/Mystic + - Result: Haunt + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Horrors/Haunt + - Result: Thrall + Rarity: Rare + Encounter: Ironsworn/Encounters/Horrors/Thrall + - Result: Kord the Stonewright + Rarity: Rare + Description: |- + Visions of a once-great fortress drew Kord the Stonewright to a deep lake in the northern Havens. There, he discovered the stones scattered in shallow waters and buried in mud near the shore—all that was left of the ancient place which haunted his dreams. Piece by piece, he recovered the remains of the fortress, transplanting the stones laboriously to an island at the lake’s center. - Most laughed at this crazy venture. But some joined Kord, drawn to this place by a compulsion they can’t understand or explain. Guided by the stonewright’s unwavering vision, they rebuilt the vaults of the fortress and its tall central spire. Today, nearly two decades later, the workforce numbers in the hundreds. They live in ramshackle camps encircling the fortress and on the lakeshore. Many protect the place with spear and shield. The stones sing to them, they say, and with each block mortared in place the words become clearer. Folk of this area call them the builders. + Most laughed at this crazy venture. But some joined Kord, drawn to this place by a compulsion they can’t understand or explain. Guided by the stonewright’s unwavering vision, they rebuilt the vaults of the fortress and its tall central spire. Today, nearly two decades later, the workforce numbers in the hundreds. They live in ramshackle camps encircling the fortress and on the lakeshore. Many protect the place with spear and shield. The stones sing to them, they say, and with each block mortared in place the words become clearer. Folk of this area call them the builders. - The strange tower, nearly complete, now looms over the valley. There’s a hum in the air, an expectant energy like the lull before a great storm. What is about to happen? -Topplekeep: - Source: - Title: "Ironsworn: Delve" - Page: 105 - Rank: 2 - Theme: Ironsworn/Themes/Infested - Domain: Ironsworn/Domains/Ruin - Denizens: - - Result: Bladewing - Rarity: Very common - Encounter: Ironsworn/Encounters/Animals/Bladewing - - Result: Marsh Rat - Rarity: Common - Encounter: Ironsworn/Encounters/Animals/Marsh_Rat - - Result: Harrow Spider - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Beasts/Harrow_Spider - - Result: Sodden - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Horrors/Sodden - - Result: Troll - Rarity: Rare - Encounter: Ironsworn/Encounters/Firstborn/Troll - - Result: Carrion Newt - Rarity: Rare - Encounter: Ironsworn/Encounters/Animals/Carrion_Newt - Description: |- - The skeletal structure of Topplekeep strikes an unsettling silhouette. It is a crumbling, tilting ruin, once a mighty fortress to some forgotten warlord. Time and weather have had their way with the place, eroding it down to its bones as it sinks deeper into the yielding ground and brackish waterways of the surrounding Wild Shadowfen. Many of its passages and rooms are flooded with foul, stagnant water. + The strange tower, nearly complete, now looms over the valley. There’s a hum in the air, an expectant energy like the lull before a great storm. What is about to happen? + Topplekeep: + Source: + Page: 105 + Rank: 2 + Theme: Ironsworn/Themes/Infested + Domain: Ironsworn/Domains/Ruin + Denizens: + - Result: Bladewing + Rarity: Very common + Encounter: Ironsworn/Encounters/Animals/Bladewing + - Result: Marsh Rat + Rarity: Common + Encounter: Ironsworn/Encounters/Animals/Marsh_Rat + - Result: Harrow Spider + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Beasts/Harrow_Spider + - Result: Sodden + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Horrors/Sodden + - Result: Troll + Rarity: Rare + Encounter: Ironsworn/Encounters/Firstborn/Troll + - Result: Carrion Newt + Rarity: Rare + Encounter: Ironsworn/Encounters/Animals/Carrion_Newt + Description: |- + The skeletal structure of Topplekeep strikes an unsettling silhouette. It is a crumbling, tilting ruin, once a mighty fortress to some forgotten warlord. Time and weather have had their way with the place, eroding it down to its bones as it sinks deeper into the yielding ground and brackish waterways of the surrounding Wild Shadowfen. Many of its passages and rooms are flooded with foul, stagnant water. - A colony of bladewings, emerging to hunt under cover of darkness, roost within this place. Wayward travelers and opportunistic treasure-seekers provide ample prey for the beasts, and gnawed bones litter the dilapidated ruin. It’s said the trove of the warlord lies in the heart of Topplekeep, and perhaps could be reached at night, when the bladewings hunt. But this is a fool’s errand. More than just the bladewings lurk in this place. What other dangers lie within? -Trail of Spirits: - Source: - Title: "Ironsworn: Delve" - Page: 105 - Rank: 4 - Theme: Ironsworn/Themes/Ancient - Domain: Ironsworn/Domains/Pass - Denizens: - - Result: Broken - Rarity: Very common - Encounter: Ironsworn/Encounters/Ironlanders/Broken - - Result: Giant - Rarity: Common - Encounter: Ironsworn/Encounters/Firstborn/Giant - - Result: Frostbound - Rarity: Uncommon - Encounter: Ironsworn/Encounters/Horrors/Frostbound - - Result: Wyvern - Rarity: Rare - Encounter: Ironsworn/Encounters/Beasts/Wyvern - - Result: Circle of stones - Rarity: Rare - Encounter: Ironsworn/Encounters/Anomalies/Circle_of_Stones - - Result: Bear - Rarity: Rare - Encounter: Ironsworn/Encounters/Animals/Bear - - Result: Primordial - Rarity: Unforeseen - Encounter: Ironsworn/Encounters/Firstborn/Primordial - Description: |- - A long-dead civilization once used this path through the Veiled Mountains as a trade road. Their crumbling outposts, forts, and waystones, half-buried in snow and fallen glacial stones, mark the way. Some say you can still hear their voices and songs carried on the wind; echoes of lives long lost. + A colony of bladewings, emerging to hunt under cover of darkness, roost within this place. Wayward travelers and opportunistic treasure-seekers provide ample prey for the beasts, and gnawed bones litter the dilapidated ruin. It’s said the trove of the warlord lies in the heart of Topplekeep, and perhaps could be reached at night, when the bladewings hunt. But this is a fool’s errand. More than just the bladewings lurk in this place. What other dangers lie within? + Trail of Spirits: + Source: + Page: 105 + Rank: 4 + Theme: Ironsworn/Themes/Ancient + Domain: Ironsworn/Domains/Pass + Denizens: + - Result: Broken + Rarity: Very common + Encounter: Ironsworn/Encounters/Ironlanders/Broken + - Result: Giant + Rarity: Common + Encounter: Ironsworn/Encounters/Firstborn/Giant + - Result: Frostbound + Rarity: Uncommon + Encounter: Ironsworn/Encounters/Horrors/Frostbound + - Result: Wyvern + Rarity: Rare + Encounter: Ironsworn/Encounters/Beasts/Wyvern + - Result: Circle of stones + Rarity: Rare + Encounter: Ironsworn/Encounters/Anomalies/Circle_of_Stones + - Result: Bear + Rarity: Rare + Encounter: Ironsworn/Encounters/Animals/Bear + - Result: Primordial + Rarity: Unforeseen + Encounter: Ironsworn/Encounters/Firstborn/Primordial + Description: |- + A long-dead civilization once used this path through the Veiled Mountains as a trade road. Their crumbling outposts, forts, and waystones, half-buried in snow and fallen glacial stones, mark the way. Some say you can still hear their voices and songs carried on the wind; echoes of lives long lost. - A clan of giants now live here, drawn to the remains of this once-powerful place like travelers huddling close to a dying fire. They defend the pass against a massive tribe of broken who lurk within the caves and ruins of this frozen land. What purpose do the giants have here, and what can be done to aid their defense against the broken? \ No newline at end of file + A clan of giants now live here, drawn to the remains of this once-powerful place like travelers huddling close to a dying fire. They defend the pass against a massive tribe of broken who lurk within the caves and ruins of this frozen land. What purpose do the giants have here, and what can be done to aid their defense against the broken? \ No newline at end of file diff --git a/_master-data/Ironsworn/Oracles/Action_and_Theme.yaml b/_master-data/Ironsworn/Oracles/Action_and_Theme.yaml index 45ebc37ba..582313760 100644 --- a/_master-data/Ironsworn/Oracles/Action_and_Theme.yaml +++ b/_master-data/Ironsworn/Oracles/Action_and_Theme.yaml @@ -1,233 +1,235 @@ -Action and Theme: - Title: - Canonical: Action and Theme - Source: - Authors: [Shawn Tomkin] - Title: Ironsworn Rulebook - Page: 174 - License: https://creativecommons.org/licenses/by-sa/4.0/ - Tables: - Action: - Title: - Canonical: "Oracle 1: Action" - Standard: Action - Usage: - Suggestions: - Oracle rolls: - - Ironsworn/Oracles/Action_and_Theme/Theme - Description: Use this table to inspire a discovery, event, character goal, or situation. A roll on this table can be combined with a Theme to provide an action and a subject. Then, interpret the result based on the context of the question and your current situation. - Source: - Page: 174 - Table: - - [1, 1, Scheme] - - [2, 2, Clash] - - [3, 3, Weaken] - - [4, 4, Initiate] - - [5, 5, Create] - - [6, 6, Swear] - - [7, 7, Avenge] - - [8, 8, Guard] - - [9, 9, Defeat] - - [10, 10, Control] - - [11, 11, Break] - - [12, 12, Risk] - - [13, 13, Surrender] - - [14, 14, Inspect] - - [15, 15, Raid] - - [16, 16, Evade] - - [17, 17, Assault] - - [18, 18, Deflect] - - [19, 19, Threaten] - - [20, 20, Attack] - - [21, 21, Leave] - - [22, 22, Preserve] - - [23, 23, Manipulate] - - [24, 24, Remove] - - [25, 25, Eliminate] - - [26, 26, Withdraw] - - [27, 27, Abandon] - - [28, 28, Investigate] - - [29, 29, Hold] - - [30, 30, Focus] - - [31, 31, Uncover] - - [32, 32, Breach] - - [33, 33, Aid] - - [34, 34, Uphold] - - [35, 35, Falter] - - [36, 36, Suppress] - - [37, 37, Hunt] - - [38, 38, Share] - - [39, 39, Destroy] - - [40, 40, Avoid] - - [41, 41, Reject] - - [42, 42, Demand] - - [43, 43, Explore] - - [44, 44, Bolster] - - [45, 45, Seize] - - [46, 46, Mourn] - - [47, 47, Reveal] - - [48, 48, Gather] - - [49, 49, Defy] - - [50, 50, Transform] - - [51, 51, Persevere] - - [52, 52, Serve] - - [53, 53, Begin] - - [54, 54, Move] - - [55, 55, Coordinate] - - [56, 56, Resist] - - [57, 57, Await] - - [58, 58, Impress] - - [59, 59, Take] - - [60, 60, Oppose] - - [61, 61, Capture] - - [62, 62, Overwhelm] - - [63, 63, Challenge] - - [64, 64, Acquire] - - [65, 65, Protect] - - [66, 66, Finish] - - [67, 67, Strengthen] - - [68, 68, Restore] - - [69, 69, Advance] - - [70, 70, Command] - - [71, 71, Refuse] - - [72, 72, Find] - - [73, 73, Deliver] - - [74, 74, Hide] - - [75, 75, Fortify] - - [76, 76, Betray] - - [77, 77, Secure] - - [78, 78, Arrive] - - [79, 79, Affect] - - [80, 80, Change] - - [81, 81, Defend] - - [82, 82, Debate] - - [83, 83, Support] - - [84, 84, Follow] - - [85, 85, Construct] - - [86, 86, Locate] - - [87, 87, Endure] - - [88, 88, Release] - - [89, 89, Lose] - - [90, 90, Reduce] - - [91, 91, Escalate] - - [92, 92, Distract] - - [93, 93, Journey] - - [94, 94, Escort] - - [95, 95, Learn] - - [96, 96, Communicate] - - [97, 97, Depart] - - [98, 98, Search] - - [99, 99, Charge] - - [100, 100, Summon] - Theme: - Title: - Canonical: "Oracle 2: Theme" - Standard: Theme - Usage: - Suggestions: - Oracle rolls: - - Ironsworn/Oracles/Action_and_Theme/Action - Description: As with the Action oracle, this is an interpretative table which you can use to answer questions or generate new situations. Combined, the Action and Theme tables provide creative prompts suitable for most situations and questions. In fact, with some creative interpretations, it’s entirely possible to play with only these two tables. - Source: - Page: 175 - Table: - - [1, 1, Risk] - - [2, 2, Ability] - - [3, 3, Price] - - [4, 4, Ally] - - [5, 5, Battle] - - [6, 6, Safety] - - [7, 7, Survival] - - [8, 8, Weapon] - - [9, 9, Wound] - - [10, 10, Shelter] - - [11, 11, Leader] - - [12, 12, Fear] - - [13, 13, Time] - - [14, 14, Duty] - - [15, 15, Secret] - - [16, 16, Innocence] - - [17, 17, Renown] - - [18, 18, Direction] - - [19, 19, Death] - - [20, 20, Honor] - - [21, 21, Labor] - - [22, 22, Solution] - - [23, 23, Tool] - - [24, 24, Balance] - - [25, 25, Love] - - [26, 26, Barrier] - - [27, 27, Creation] - - [28, 28, Decay] - - [29, 29, Trade] - - [30, 30, Bond] - - [31, 31, Hope] - - [32, 32, Superstition] - - [33, 33, Peace] - - [34, 34, Deception] - - [35, 35, History] - - [36, 36, World] - - [37, 37, Vow] - - [38, 38, Protection] - - [39, 39, Nature] - - [40, 40, Opinion] - - [41, 41, Burden] - - [42, 42, Vengeance] - - [43, 43, Opportunity] - - [44, 44, Faction] - - [45, 45, Danger] - - [46, 46, Corruption] - - [47, 47, Freedom] - - [48, 48, Debt] - - [49, 49, Hate] - - [50, 50, Possession] - - [51, 51, Stranger] - - [52, 52, Passage] - - [53, 53, Land] - - [54, 54, Creature] - - [55, 55, Disease] - - [56, 56, Advantage] - - [57, 57, Blood] - - [58, 58, Language] - - [59, 59, Rumor] - - [60, 60, Weakness] - - [61, 61, Greed] - - [62, 62, Family] - - [63, 63, Resource] - - [64, 64, Structure] - - [65, 65, Dream] - - [66, 66, Community] - - [67, 67, War] - - [68, 68, Portent] - - [69, 69, Prize] - - [70, 70, Destiny] - - [71, 71, Momentum] - - [72, 72, Power] - - [73, 73, Memory] - - [74, 74, Ruin] - - [75, 75, Mysticism] - - [76, 76, Rival] - - [77, 77, Problem] - - [78, 78, Idea] - - [79, 79, Revenge] - - [80, 80, Health] - - [81, 81, Fellowship] - - [82, 82, Enemy] - - [83, 83, Religion] - - [84, 84, Spirit] - - [85, 85, Fame] - - [86, 86, Desolation] - - [87, 87, Strength] - - [88, 88, Knowledge] - - [89, 89, Truth] - - [90, 90, Quest] - - [91, 91, Pride] - - [92, 92, Loss] - - [93, 93, Law] - - [94, 94, Path] - - [95, 95, Warning] - - [96, 96, Relationship] - - [97, 97, Wealth] - - [98, 98, Home] - - [99, 99, Strategy] - - [100, 100, Supply] +Source: + Authors: [Shawn Tomkin] + Title: Ironsworn Rulebook + License: https://creativecommons.org/licenses/by-sa/4.0/ +Oracle Sets: + Action and Theme: + Source: + Page: 174 + Title: + Canonical: Action and Theme + Tables: + Action: + Title: + Canonical: "Oracle 1: Action" + Standard: Action + Usage: + Suggestions: + Oracle rolls: + - Ironsworn/Oracles/Action_and_Theme/Theme + Description: Use this table to inspire a discovery, event, character goal, or situation. A roll on this table can be combined with a Theme to provide an action and a subject. Then, interpret the result based on the context of the question and your current situation. + Source: + Page: 174 + Table: + - [1, 1, Scheme] + - [2, 2, Clash] + - [3, 3, Weaken] + - [4, 4, Initiate] + - [5, 5, Create] + - [6, 6, Swear] + - [7, 7, Avenge] + - [8, 8, Guard] + - [9, 9, Defeat] + - [10, 10, Control] + - [11, 11, Break] + - [12, 12, Risk] + - [13, 13, Surrender] + - [14, 14, Inspect] + - [15, 15, Raid] + - [16, 16, Evade] + - [17, 17, Assault] + - [18, 18, Deflect] + - [19, 19, Threaten] + - [20, 20, Attack] + - [21, 21, Leave] + - [22, 22, Preserve] + - [23, 23, Manipulate] + - [24, 24, Remove] + - [25, 25, Eliminate] + - [26, 26, Withdraw] + - [27, 27, Abandon] + - [28, 28, Investigate] + - [29, 29, Hold] + - [30, 30, Focus] + - [31, 31, Uncover] + - [32, 32, Breach] + - [33, 33, Aid] + - [34, 34, Uphold] + - [35, 35, Falter] + - [36, 36, Suppress] + - [37, 37, Hunt] + - [38, 38, Share] + - [39, 39, Destroy] + - [40, 40, Avoid] + - [41, 41, Reject] + - [42, 42, Demand] + - [43, 43, Explore] + - [44, 44, Bolster] + - [45, 45, Seize] + - [46, 46, Mourn] + - [47, 47, Reveal] + - [48, 48, Gather] + - [49, 49, Defy] + - [50, 50, Transform] + - [51, 51, Persevere] + - [52, 52, Serve] + - [53, 53, Begin] + - [54, 54, Move] + - [55, 55, Coordinate] + - [56, 56, Resist] + - [57, 57, Await] + - [58, 58, Impress] + - [59, 59, Take] + - [60, 60, Oppose] + - [61, 61, Capture] + - [62, 62, Overwhelm] + - [63, 63, Challenge] + - [64, 64, Acquire] + - [65, 65, Protect] + - [66, 66, Finish] + - [67, 67, Strengthen] + - [68, 68, Restore] + - [69, 69, Advance] + - [70, 70, Command] + - [71, 71, Refuse] + - [72, 72, Find] + - [73, 73, Deliver] + - [74, 74, Hide] + - [75, 75, Fortify] + - [76, 76, Betray] + - [77, 77, Secure] + - [78, 78, Arrive] + - [79, 79, Affect] + - [80, 80, Change] + - [81, 81, Defend] + - [82, 82, Debate] + - [83, 83, Support] + - [84, 84, Follow] + - [85, 85, Construct] + - [86, 86, Locate] + - [87, 87, Endure] + - [88, 88, Release] + - [89, 89, Lose] + - [90, 90, Reduce] + - [91, 91, Escalate] + - [92, 92, Distract] + - [93, 93, Journey] + - [94, 94, Escort] + - [95, 95, Learn] + - [96, 96, Communicate] + - [97, 97, Depart] + - [98, 98, Search] + - [99, 99, Charge] + - [100, 100, Summon] + Theme: + Title: + Canonical: "Oracle 2: Theme" + Standard: Theme + Source: + Page: 175 + Usage: + Suggestions: + Oracle rolls: + - Ironsworn/Oracles/Action_and_Theme/Action + Description: As with the Action oracle, this is an interpretative table which you can use to answer questions or generate new situations. Combined, the Action and Theme tables provide creative prompts suitable for most situations and questions. In fact, with some creative interpretations, it’s entirely possible to play with only these two tables. + Table: + - [1, 1, Risk] + - [2, 2, Ability] + - [3, 3, Price] + - [4, 4, Ally] + - [5, 5, Battle] + - [6, 6, Safety] + - [7, 7, Survival] + - [8, 8, Weapon] + - [9, 9, Wound] + - [10, 10, Shelter] + - [11, 11, Leader] + - [12, 12, Fear] + - [13, 13, Time] + - [14, 14, Duty] + - [15, 15, Secret] + - [16, 16, Innocence] + - [17, 17, Renown] + - [18, 18, Direction] + - [19, 19, Death] + - [20, 20, Honor] + - [21, 21, Labor] + - [22, 22, Solution] + - [23, 23, Tool] + - [24, 24, Balance] + - [25, 25, Love] + - [26, 26, Barrier] + - [27, 27, Creation] + - [28, 28, Decay] + - [29, 29, Trade] + - [30, 30, Bond] + - [31, 31, Hope] + - [32, 32, Superstition] + - [33, 33, Peace] + - [34, 34, Deception] + - [35, 35, History] + - [36, 36, World] + - [37, 37, Vow] + - [38, 38, Protection] + - [39, 39, Nature] + - [40, 40, Opinion] + - [41, 41, Burden] + - [42, 42, Vengeance] + - [43, 43, Opportunity] + - [44, 44, Faction] + - [45, 45, Danger] + - [46, 46, Corruption] + - [47, 47, Freedom] + - [48, 48, Debt] + - [49, 49, Hate] + - [50, 50, Possession] + - [51, 51, Stranger] + - [52, 52, Passage] + - [53, 53, Land] + - [54, 54, Creature] + - [55, 55, Disease] + - [56, 56, Advantage] + - [57, 57, Blood] + - [58, 58, Language] + - [59, 59, Rumor] + - [60, 60, Weakness] + - [61, 61, Greed] + - [62, 62, Family] + - [63, 63, Resource] + - [64, 64, Structure] + - [65, 65, Dream] + - [66, 66, Community] + - [67, 67, War] + - [68, 68, Portent] + - [69, 69, Prize] + - [70, 70, Destiny] + - [71, 71, Momentum] + - [72, 72, Power] + - [73, 73, Memory] + - [74, 74, Ruin] + - [75, 75, Mysticism] + - [76, 76, Rival] + - [77, 77, Problem] + - [78, 78, Idea] + - [79, 79, Revenge] + - [80, 80, Health] + - [81, 81, Fellowship] + - [82, 82, Enemy] + - [83, 83, Religion] + - [84, 84, Spirit] + - [85, 85, Fame] + - [86, 86, Desolation] + - [87, 87, Strength] + - [88, 88, Knowledge] + - [89, 89, Truth] + - [90, 90, Quest] + - [91, 91, Pride] + - [92, 92, Loss] + - [93, 93, Law] + - [94, 94, Path] + - [95, 95, Warning] + - [96, 96, Relationship] + - [97, 97, Wealth] + - [98, 98, Home] + - [99, 99, Strategy] + - [100, 100, Supply] diff --git a/_master-data/Ironsworn/Oracles/Character-Delve.yaml b/_master-data/Ironsworn/Oracles/Character-Delve.yaml index 71009124b..14972632d 100644 --- a/_master-data/Ironsworn/Oracles/Character-Delve.yaml +++ b/_master-data/Ironsworn/Oracles/Character-Delve.yaml @@ -1,98 +1,100 @@ -Character: - Title: - Canonical: Character - Summary: Set the initial disposition for a character, or reveal what activity they are focused on when you first encounter them. - Source: - Authors: - - Shawn Tomkin - Title: "Ironsworn: Delve" - Page: 213 - License: https://creativecommons.org/licenses/by-nc-sa/4.0/ - Tables: - Activity: - Title: - Canonical: "Character: Activity" - Standard: Activity - Description: To give an NPC or faction a task or objective, use the Activity oracle. For more detail, you can combine this prompt with the [Focus](Ironsworn/Oracles/Feature/Focus) oracle or [Theme](Ironsworn/Oracles/Action_and_Theme/Theme) oracle. - Usage: - Suggestions: - Oracle rolls: - - Ironsworn/Oracles/Feature/Focus - - Ironsworn/Oracles/Action_and_Theme/Theme - Source: - Title: "Ironsworn: Delve" - Page: 213 - Table: - - [1, 2, Guarding] - - [3, 4, Preserving] - - [5, 6, Constructing] - - [7, 8, Mending] - - [9, 10, Assisting] - - [11, 12, Securing] - - [13, 14, Learning] - - [15, 16, Sneaking] - - [17, 18, Fleeing] - - [19, 20, Sacrificing] - - [21, 22, Creating] - - [23, 24, Luring] - - [25, 26, Hunting] - - [27, 28, Seizing] - - [29, 30, Bargaining] - - [31, 32, Mimicking] - - [33, 34, Tricking] - - [35, 36, Tracking] - - [37, 38, Escorting] - - [39, 40, Hiding] - - [41, 42, Raiding] - - [43, 44, Socializing] - - [45, 46, Exploring] - - [47, 48, Journeying] - - [49, 50, Supporting] - - [51, 52, Avoiding] - - [53, 54, Disabling] - - [55, 56, Leading] - - [57, 58, Assaulting] - - [59, 60, Ensnaring] - - [61, 62, Defending] - - [63, 64, Recovering] - - [65, 66, Patrolling] - - [67, 68, Resting] - - [69, 70, Distracting] - - [71, 72, Leaving] - - [73, 74, Fighting] - - [75, 76, Ambushing] - - [77, 78, Controlling] - - [79, 80, Observing] - - [81, 82, Gathering] - - [83, 84, Suffering] - - [85, 86, Threatening] - - [87, 88, Searching] - - [89, 90, Destroying] - - [91, 92, Restoring] - - [93, 94, Consuming] - - [95, 96, Removing] - - [97, 98, Inspecting] - - [99, 100, Summoning] - Disposition: - Title: - Canonical: "Character: Disposition" - Standard: Disposition - Summary: Use this oracle when you want to define the initial tone of an encounter with an NPC or faction. - Usage: - Initial: true - Source: - Title: "Ironsworn: Delve" - Page: 213 - Table: - - [1, 6, Helpful] - - [7, 13, Friendly] - - [14, 20, Cooperative] - - [21, 28, Curious] - - [29, 36, Indifferent] - - [37, 47, Suspicious] - - [48, 57, Wanting] - - [58, 67, Desperate] - - [68, 76, Demanding] - - [77, 85, Unfriendly] - - [86, 93, Threatening] - - [94, 100, Hostile] +Source: + Authors: + - Shawn Tomkin + Title: "Ironsworn: Delve" + License: https://creativecommons.org/licenses/by-nc-sa/4.0/ +Oracle Sets: + Character: + Title: + Canonical: Character + Summary: Set the initial disposition for a character, or reveal what activity they are focused on when you first encounter them. + Source: + Page: 213 + Tables: + Activity: + Title: + Canonical: "Character: Activity" + Standard: Activity + Description: To give an NPC or faction a task or objective, use the Activity oracle. For more detail, you can combine this prompt with the [Focus](Ironsworn/Oracles/Feature/Focus) oracle or [Theme](Ironsworn/Oracles/Action_and_Theme/Theme) oracle. + Usage: + Suggestions: + Oracle rolls: + - Ironsworn/Oracles/Feature/Focus + - Ironsworn/Oracles/Action_and_Theme/Theme + Source: + Title: "Ironsworn: Delve" + Page: 213 + Table: + - [1, 2, Guarding] + - [3, 4, Preserving] + - [5, 6, Constructing] + - [7, 8, Mending] + - [9, 10, Assisting] + - [11, 12, Securing] + - [13, 14, Learning] + - [15, 16, Sneaking] + - [17, 18, Fleeing] + - [19, 20, Sacrificing] + - [21, 22, Creating] + - [23, 24, Luring] + - [25, 26, Hunting] + - [27, 28, Seizing] + - [29, 30, Bargaining] + - [31, 32, Mimicking] + - [33, 34, Tricking] + - [35, 36, Tracking] + - [37, 38, Escorting] + - [39, 40, Hiding] + - [41, 42, Raiding] + - [43, 44, Socializing] + - [45, 46, Exploring] + - [47, 48, Journeying] + - [49, 50, Supporting] + - [51, 52, Avoiding] + - [53, 54, Disabling] + - [55, 56, Leading] + - [57, 58, Assaulting] + - [59, 60, Ensnaring] + - [61, 62, Defending] + - [63, 64, Recovering] + - [65, 66, Patrolling] + - [67, 68, Resting] + - [69, 70, Distracting] + - [71, 72, Leaving] + - [73, 74, Fighting] + - [75, 76, Ambushing] + - [77, 78, Controlling] + - [79, 80, Observing] + - [81, 82, Gathering] + - [83, 84, Suffering] + - [85, 86, Threatening] + - [87, 88, Searching] + - [89, 90, Destroying] + - [91, 92, Restoring] + - [93, 94, Consuming] + - [95, 96, Removing] + - [97, 98, Inspecting] + - [99, 100, Summoning] + Disposition: + Title: + Canonical: "Character: Disposition" + Standard: Disposition + Summary: Use this oracle when you want to define the initial tone of an encounter with an NPC or faction. + Usage: + Initial: true + Source: + Title: "Ironsworn: Delve" + Page: 213 + Table: + - [1, 6, Helpful] + - [7, 13, Friendly] + - [14, 20, Cooperative] + - [21, 28, Curious] + - [29, 36, Indifferent] + - [37, 47, Suspicious] + - [48, 57, Wanting] + - [58, 67, Desperate] + - [68, 76, Demanding] + - [77, 85, Unfriendly] + - [86, 93, Threatening] + - [94, 100, Hostile] diff --git a/_master-data/Ironsworn/Oracles/Character.yaml b/_master-data/Ironsworn/Oracles/Character.yaml index f7cd1b0a4..5b2a2902e 100644 --- a/_master-data/Ironsworn/Oracles/Character.yaml +++ b/_master-data/Ironsworn/Oracles/Character.yaml @@ -1,204 +1,210 @@ -Character: - Title: - Canonical: Character - Source: - Authors: ["Shawn Tomkin"] - Title: Ironsworn Rulebook - Page: 182 - License: https://creativecommons.org/licenses/by-nc-sa/4.0/ - Tables: - Role: - Title: - Canonical: "Oracle 10: Character Role" - Standard: Character Role - Short: Role - _idFragment: Role - Description: Use this oracle to define the background for a character, or to generate a random encounter. - Source: - Page: 182 - Table: - - [1, 2, Criminal] - - [3, 4, Healer] - - [5, 6, Bandit] - - [7, 9, Guide] - - [10, 12, Performer] - - [13, 15, Miner] - - [16, 18, Mercenary] - - [19, 21, Outcast] - - [22, 24, Vagrant] - - [25, 27, Forester] - - [28, 30, Traveler] - - [31, 33, Mystic] - - [34, 36, Priest] - - [37, 39, Sailor] - - [40, 42, Pilgrim] - - [43, 45, Thief] - - [46, 48, Adventurer] - - [49, 51, Forager] - - [52, 54, Leader] - - [55, 58, Guard] - - [59, 62, Artisan] - - [63, 66, Scout] - - [67, 70, Herder] - - [71, 74, Fisher] - - [75, 79, Warrior] - - [80, 84, Hunter] - - [85, 89, Raider] - - [90, 94, Trader] - - [95, 99, Farmer] - - [100, 100, Unusual role, Suggestions: {Oracle rolls: [Ironsworn/Oracles/Action_and_Theme/Action, Ironsworn/Oracles/Action_and_Theme/Theme]}] - Goal: - Title: - Short: Goal - Canonical: "Oracle 11: Character Goal" - Standard: Character Goal - _idFragment: Goal - Description: Use this oracle to define the primary motivation of an NPC or a faction. It can also be used to kick-off a personal quest for your own character. - Source: - Page: 182 - Table: - - [1, 3, Obtain an object] - - [4, 6, Make an agreement] - - [7, 9, Build a relationship] - - [10, 12, Undermine a relationship] - - [13, 15, Seek a truth] - - [16, 18, Pay a debt] - - [19, 21, Refute a falsehood] - - [22, 24, Harm a rival] - - [25, 27, Cure an ill] - - [28, 30, Find a person] - - [31, 33, Find a home] - - [34, 36, Seize power] - - [37, 39, Restore a relationship] - - [40, 42, Create an item] - - [43, 45, Travel to a place] - - [46, 48, Secure provisions] - - [49, 51, Rebel against power] - - [52, 54, Collect a debt] - - [55, 57, Protect a secret] - - [58, 60, Spread faith] - - [61, 63, Enrich themselves] - - [64, 66, Protect a person] - - [67, 69, Protect the status quo] - - [70, 72, Advance status] - - [73, 75, Defend a place] - - [76, 78, Avenge a wrong] - - [79, 81, Fulfill a duty] - - [82, 84, Gain knowledge] - - [85, 87, Prove worthiness] - - [88, 90, Find redemption] - - [91, 92, Escape from something] - - [93, 95, Resolve a dispute] - - [96, 100, *result:RollTwice] - Descriptor: - Title: - Short: Descriptor - Canonical: "Oracle 12: Character Descriptor" - Standard: Character Descriptor - _idFragment: Descriptor - Description: Use this oracle to help flesh out a character’s personality or physical characteristics. Roll more than once to add additional detail. - Usage: - Max rolls: 3 # a bit arbitrary, but reasonable - Source: - Page: 183 - Table: - - [1, 1, Stoic] - - [2, 2, Attractive] - - [3, 3, Passive] - - [4, 4, Aloof] - - [5, 5, Affectionate] - - [6, 6, Generous] - - [7, 7, Smug] - - [8, 8, Armed] - - [9, 9, Clever] - - [10, 10, Brave] - - [11, 11, Ugly] - - [12, 12, Sociable] - - [13, 13, Doomed] - - [14, 14, Connected] - - [15, 15, Bold] - - [16, 16, Jealous] - - [17, 17, Angry] - - [18, 18, Active] - - [19, 19, Suspicious] - - [20, 20, Hostile] - - [21, 21, Hardhearted] - - [22, 22, Successful] - - [23, 23, Talented] - - [24, 24, Experienced] - - [25, 25, Deceitful] - - [26, 26, Ambitious] - - [27, 27, Aggressive] - - [28, 28, Conceited] - - [29, 29, Proud] - - [30, 30, Stern] - - [31, 31, Dependent] - - [32, 32, Wary] - - [33, 33, Strong] - - [34, 34, Insightful] - - [35, 35, Dangerous] - - [36, 36, Quirky] - - [37, 37, Cheery] - - [38, 38, Disfigured] - - [39, 39, Intolerant] - - [40, 40, Skilled] - - [41, 41, Stingy] - - [42, 42, Timid] - - [43, 43, Insensitive] - - [44, 44, Wild] - - [45, 45, Bitter] - - [46, 46, Cunning] - - [47, 47, Remorseful] - - [48, 48, Kind] - - [49, 49, Charming] - - [50, 50, Oblivious] - - [51, 51, Critical] - - [52, 52, Cautious] - - [53, 53, Resourceful] - - [54, 54, Weary] - - [55, 55, Wounded] - - [56, 56, Anxious] - - [57, 57, Powerful] - - [58, 58, Athletic] - - [59, 59, Driven] - - [60, 60, Cruel] - - [61, 61, Quiet] - - [62, 62, Honest] - - [63, 63, Infamous] - - [64, 64, Dying] - - [65, 65, Reclusive] - - [66, 66, Artistic] - - [67, 67, Disabled] - - [68, 68, Confused] - - [69, 69, Manipulative] - - [70, 70, Relaxed] - - [71, 71, Stealthy] - - [72, 72, Confident] - - [73, 73, Weak] - - [74, 74, Friendly] - - [75, 75, Wise] - - [76, 76, Influential] - - [77, 77, Young] - - [78, 78, Adventurous] - - [79, 79, Oppressed] - - [80, 80, Vengeful] - - [81, 81, Cooperative] - - [82, 82, Armored] - - [83, 83, Apathetic] - - [84, 84, Determined] - - [85, 85, Loyal] - - [86, 86, Sick] - - [87, 87, Religious] - - [88, 88, Selfish] - - [89, 89, Old] - - [90, 90, Fervent] - - [91, 91, Violent] - - [92, 92, Agreeable] - - [93, 93, Hot-tempered] - - [94, 94, Stubborn] - - [95, 95, Incompetent] - - [96, 96, Greedy] - - [97, 97, Cowardly] - - [98, 98, Obsessed] - - [99, 99, Careless] - - [100, 100, Ironsworn] +Source: + Authors: + - Shawn Tomkin + Title: Ironsworn Rulebook + License: https://creativecommons.org/licenses/by-sa/4.0/ +Oracle Sets: + Character: + Title: + Canonical: Character + Source: + Authors: ["Shawn Tomkin"] + Title: Ironsworn Rulebook + Page: 182 + License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + Tables: + Role: + Title: + Canonical: "Oracle 10: Character Role" + Standard: Character Role + Short: Role + _idFragment: Role + Description: Use this oracle to define the background for a character, or to generate a random encounter. + Source: + Page: 182 + Table: + - [1, 2, Criminal] + - [3, 4, Healer] + - [5, 6, Bandit] + - [7, 9, Guide] + - [10, 12, Performer] + - [13, 15, Miner] + - [16, 18, Mercenary] + - [19, 21, Outcast] + - [22, 24, Vagrant] + - [25, 27, Forester] + - [28, 30, Traveler] + - [31, 33, Mystic] + - [34, 36, Priest] + - [37, 39, Sailor] + - [40, 42, Pilgrim] + - [43, 45, Thief] + - [46, 48, Adventurer] + - [49, 51, Forager] + - [52, 54, Leader] + - [55, 58, Guard] + - [59, 62, Artisan] + - [63, 66, Scout] + - [67, 70, Herder] + - [71, 74, Fisher] + - [75, 79, Warrior] + - [80, 84, Hunter] + - [85, 89, Raider] + - [90, 94, Trader] + - [95, 99, Farmer] + - [100, 100, Unusual role, Suggestions: {Oracle rolls: [Ironsworn/Oracles/Action_and_Theme/Action, Ironsworn/Oracles/Action_and_Theme/Theme]}] + Goal: + Title: + Short: Goal + Canonical: "Oracle 11: Character Goal" + Standard: Character Goal + _idFragment: Goal + Description: Use this oracle to define the primary motivation of an NPC or a faction. It can also be used to kick-off a personal quest for your own character. + Source: + Page: 182 + Table: + - [1, 3, Obtain an object] + - [4, 6, Make an agreement] + - [7, 9, Build a relationship] + - [10, 12, Undermine a relationship] + - [13, 15, Seek a truth] + - [16, 18, Pay a debt] + - [19, 21, Refute a falsehood] + - [22, 24, Harm a rival] + - [25, 27, Cure an ill] + - [28, 30, Find a person] + - [31, 33, Find a home] + - [34, 36, Seize power] + - [37, 39, Restore a relationship] + - [40, 42, Create an item] + - [43, 45, Travel to a place] + - [46, 48, Secure provisions] + - [49, 51, Rebel against power] + - [52, 54, Collect a debt] + - [55, 57, Protect a secret] + - [58, 60, Spread faith] + - [61, 63, Enrich themselves] + - [64, 66, Protect a person] + - [67, 69, Protect the status quo] + - [70, 72, Advance status] + - [73, 75, Defend a place] + - [76, 78, Avenge a wrong] + - [79, 81, Fulfill a duty] + - [82, 84, Gain knowledge] + - [85, 87, Prove worthiness] + - [88, 90, Find redemption] + - [91, 92, Escape from something] + - [93, 95, Resolve a dispute] + - [96, 100, *result:RollTwice] + Descriptor: + Title: + Short: Descriptor + Canonical: "Oracle 12: Character Descriptor" + Standard: Character Descriptor + _idFragment: Descriptor + Description: Use this oracle to help flesh out a character’s personality or physical characteristics. Roll more than once to add additional detail. + Usage: + Max rolls: 3 # a bit arbitrary, but reasonable + Source: + Page: 183 + Table: + - [1, 1, Stoic] + - [2, 2, Attractive] + - [3, 3, Passive] + - [4, 4, Aloof] + - [5, 5, Affectionate] + - [6, 6, Generous] + - [7, 7, Smug] + - [8, 8, Armed] + - [9, 9, Clever] + - [10, 10, Brave] + - [11, 11, Ugly] + - [12, 12, Sociable] + - [13, 13, Doomed] + - [14, 14, Connected] + - [15, 15, Bold] + - [16, 16, Jealous] + - [17, 17, Angry] + - [18, 18, Active] + - [19, 19, Suspicious] + - [20, 20, Hostile] + - [21, 21, Hardhearted] + - [22, 22, Successful] + - [23, 23, Talented] + - [24, 24, Experienced] + - [25, 25, Deceitful] + - [26, 26, Ambitious] + - [27, 27, Aggressive] + - [28, 28, Conceited] + - [29, 29, Proud] + - [30, 30, Stern] + - [31, 31, Dependent] + - [32, 32, Wary] + - [33, 33, Strong] + - [34, 34, Insightful] + - [35, 35, Dangerous] + - [36, 36, Quirky] + - [37, 37, Cheery] + - [38, 38, Disfigured] + - [39, 39, Intolerant] + - [40, 40, Skilled] + - [41, 41, Stingy] + - [42, 42, Timid] + - [43, 43, Insensitive] + - [44, 44, Wild] + - [45, 45, Bitter] + - [46, 46, Cunning] + - [47, 47, Remorseful] + - [48, 48, Kind] + - [49, 49, Charming] + - [50, 50, Oblivious] + - [51, 51, Critical] + - [52, 52, Cautious] + - [53, 53, Resourceful] + - [54, 54, Weary] + - [55, 55, Wounded] + - [56, 56, Anxious] + - [57, 57, Powerful] + - [58, 58, Athletic] + - [59, 59, Driven] + - [60, 60, Cruel] + - [61, 61, Quiet] + - [62, 62, Honest] + - [63, 63, Infamous] + - [64, 64, Dying] + - [65, 65, Reclusive] + - [66, 66, Artistic] + - [67, 67, Disabled] + - [68, 68, Confused] + - [69, 69, Manipulative] + - [70, 70, Relaxed] + - [71, 71, Stealthy] + - [72, 72, Confident] + - [73, 73, Weak] + - [74, 74, Friendly] + - [75, 75, Wise] + - [76, 76, Influential] + - [77, 77, Young] + - [78, 78, Adventurous] + - [79, 79, Oppressed] + - [80, 80, Vengeful] + - [81, 81, Cooperative] + - [82, 82, Armored] + - [83, 83, Apathetic] + - [84, 84, Determined] + - [85, 85, Loyal] + - [86, 86, Sick] + - [87, 87, Religious] + - [88, 88, Selfish] + - [89, 89, Old] + - [90, 90, Fervent] + - [91, 91, Violent] + - [92, 92, Agreeable] + - [93, 93, Hot-tempered] + - [94, 94, Stubborn] + - [95, 95, Incompetent] + - [96, 96, Greedy] + - [97, 97, Cowardly] + - [98, 98, Obsessed] + - [99, 99, Careless] + - [100, 100, Ironsworn] diff --git a/_master-data/Ironsworn/Oracles/Combat_Event-Delve.yaml b/_master-data/Ironsworn/Oracles/Combat_Event-Delve.yaml index daf678a86..ca7ea004d 100644 --- a/_master-data/Ironsworn/Oracles/Combat_Event-Delve.yaml +++ b/_master-data/Ironsworn/Oracles/Combat_Event-Delve.yaml @@ -1,145 +1,151 @@ -Combat Event: - Title: - Canonical: Combat Event - Summary: Determine the actions of a character, creature, or force during a fight. - Description: |- - Use the Combat Event oracles to answer questions about the actions of a foe or enemy force. You can use these oracles instead of—or in addition to—the [Combat Action](Ironsworn/Oracles/Turning_Point/Combat_Action) oracle. +Source: + Authors: + - Shawn Tomkin + Title: "Ironsworn: Delve" + License: https://creativecommons.org/licenses/by-nc-sa/4.0/ +Oracle Sets: + Combat Event: + Title: + Canonical: Combat Event + Summary: Determine the actions of a character, creature, or force during a fight. + Description: |- + Use the Combat Event oracles to answer questions about the actions of a foe or enemy force. You can use these oracles instead of—or in addition to—the [Combat Action](Ironsworn/Oracles/Turning_Point/Combat_Action) oracle. - Roll once each on the [Method](Ironsworn/Oracles/Combat_Event/Method) oracle and the [Target](Ironsworn/Oracles/Combat_Event/Target) oracle. Then, interpret the response as appropriate to the current situation and the nature of your foe. + Roll once each on the [Method](Ironsworn/Oracles/Combat_Event/Method) oracle and the [Target](Ironsworn/Oracles/Combat_Event/Target) oracle. Then, interpret the response as appropriate to the current situation and the nature of your foe. - For example, you are fighting a rhaskar, a bear-like beast. It has initiative, and you want to know what it does next. You [Ask the Oracle](Ask the Oracle), rolling [Method](Ironsworn/Oracles/Combat_Event/Method) and [Target](Ironsworn/Oracles/Combat_Event/Target). The oracle responds, “Await Weakness.” You envision the rhaskar circling you, its keen eyes narrowing as it looks for an opening in your defenses. You must [Face Danger](Face Danger) to avoid being outmaneuvered. - Usage: - Suggestions: - Oracle rolls: - - Ironsworn/Oracles/Turning_Point/Combat_Action - Source: - Authors: - - Shawn Tomkin - Title: "Ironsworn: Delve" - Page: 218 - License: https://creativecommons.org/licenses/by-nc-sa/4.0/ - Tables: - Method: - Title: - Canonical: "Combat Event: Method" - Short: Method - _idFragment: Method - Usage: - Suggestions: - Oracle rolls: - - Ironsworn/Oracles/Combat_Event/Target - Source: - Page: 218 - Table: - - [1, 2, Defy] - - [3, 4, Break] - - [5, 6, Trick] - - [7, 8, Evade] - - [9, 10, Protect] - - [11, 12, Overwhelm] - - [13, 14, Persevere] - - [15, 16, Assist] - - [17, 18, Await] - - [19, 20, Abort] - - [21, 22, Block] - - [23, 24, Collide] - - [25, 26, Focus] - - [27, 28, Advance] - - [29, 30, Breach] - - [31, 32, Endure] - - [33, 34, Assault] - - [35, 36, Charge] - - [37, 38, Escalate] - - [39, 40, Sunder] - - [41, 42, Shatter] - - [43, 44, Aim] - - [45, 46, Stagger] - - [47, 48, Counter] - - [49, 50, Seize] - - [51, 52, Impact] - - [53, 54, Entangle] - - [55, 56, Hold] - - [57, 58, Deflect] - - [59, 60, Drop] - - [61, 62, Lose] - - [63, 64, Sweep] - - [65, 66, Secure] - - [67, 68, Cover] - - [69, 70, Withdraw] - - [71, 72, Clash] - - [73, 74, Amplify] - - [75, 76, Batter] - - [77, 78, Feint] - - [79, 80, Shove] - - [81, 82, Embed] - - [83, 84, Affect] - - [85, 86, Probe] - - [87, 88, Force] - - [89, 90, Intensify] - - [91, 92, Distract] - - [93, 94, Challenge] - - [95, 96, Brawl] - - [97, 98, Coordinate] - - [99, 100, Overrun] - Target: - Title: - Canonical: "Combat Event: Target" - Short: Target - _idFragment: Target - Usage: - Suggestions: - Oracle rolls: - - Ironsworn/Oracles/Combat_Event/Method - Source: - Page: 219 - Table: - - [1, 2, Control] - - [3, 4, Defense] - - [5, 6, Limbs] - - [7, 8, Focus] - - [9, 10, Advantage] - - [11, 12, Range] - - [13, 14, Stress] - - [15, 16, Sense] - - [17, 18, Weakness] - - [19, 20, Opening] - - [21, 22, Fear] - - [23, 24, Instinct] - - [25, 26, Footing] - - [27, 28, Maneuver] - - [29, 30, Reach] - - [31, 32, Harm] - - [33, 34, Finesse] - - [35, 36, Weapon] - - [37, 38, Environment] - - [39, 40, Technique] - - [41, 42, Surprise] - - [43, 44, Pride] - - [45, 46, Wound] - - [47, 48, Precision] - - [49, 50, Ally] - - [51, 52, Ground] - - [53, 54, Courage] - - [55, 56, Companion] - - [57, 58, Object] - - [59, 60, Momentum] - - [61, 62, Speed] - - [63, 64, Strength] - - [65, 66, Supply] - - [67, 68, Terrain] - - [69, 70, Armor] - - [71, 72, Skill] - - [73, 74, Body] - - [75, 76, Protection] - - [77, 78, Resolve] - - [79, 80, Ferocity] - - [81, 82, Shield] - - [83, 84, Ammo] - - [85, 86, Anger] - - [87, 88, Opportunity] - - [89, 90, Balance] - - [91, 92, Position] - - [93, 94, Barrier] - - [95, 96, Strategy] - - [97, 98, Grasp] - - [99, 100, Power] + For example, you are fighting a rhaskar, a bear-like beast. It has initiative, and you want to know what it does next. You [Ask the Oracle](Ask the Oracle), rolling [Method](Ironsworn/Oracles/Combat_Event/Method) and [Target](Ironsworn/Oracles/Combat_Event/Target). The oracle responds, “Await Weakness.” You envision the rhaskar circling you, its keen eyes narrowing as it looks for an opening in your defenses. You must [Face Danger](Face Danger) to avoid being outmaneuvered. + Usage: + Suggestions: + Oracle rolls: + - Ironsworn/Oracles/Turning_Point/Combat_Action + Source: + Authors: + - Shawn Tomkin + Title: "Ironsworn: Delve" + Page: 218 + License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + Tables: + Method: + Title: + Canonical: "Combat Event: Method" + Short: Method + _idFragment: Method + Usage: + Suggestions: + Oracle rolls: + - Ironsworn/Oracles/Combat_Event/Target + Source: + Page: 218 + Table: + - [1, 2, Defy] + - [3, 4, Break] + - [5, 6, Trick] + - [7, 8, Evade] + - [9, 10, Protect] + - [11, 12, Overwhelm] + - [13, 14, Persevere] + - [15, 16, Assist] + - [17, 18, Await] + - [19, 20, Abort] + - [21, 22, Block] + - [23, 24, Collide] + - [25, 26, Focus] + - [27, 28, Advance] + - [29, 30, Breach] + - [31, 32, Endure] + - [33, 34, Assault] + - [35, 36, Charge] + - [37, 38, Escalate] + - [39, 40, Sunder] + - [41, 42, Shatter] + - [43, 44, Aim] + - [45, 46, Stagger] + - [47, 48, Counter] + - [49, 50, Seize] + - [51, 52, Impact] + - [53, 54, Entangle] + - [55, 56, Hold] + - [57, 58, Deflect] + - [59, 60, Drop] + - [61, 62, Lose] + - [63, 64, Sweep] + - [65, 66, Secure] + - [67, 68, Cover] + - [69, 70, Withdraw] + - [71, 72, Clash] + - [73, 74, Amplify] + - [75, 76, Batter] + - [77, 78, Feint] + - [79, 80, Shove] + - [81, 82, Embed] + - [83, 84, Affect] + - [85, 86, Probe] + - [87, 88, Force] + - [89, 90, Intensify] + - [91, 92, Distract] + - [93, 94, Challenge] + - [95, 96, Brawl] + - [97, 98, Coordinate] + - [99, 100, Overrun] + Target: + Title: + Canonical: "Combat Event: Target" + Short: Target + _idFragment: Target + Usage: + Suggestions: + Oracle rolls: + - Ironsworn/Oracles/Combat_Event/Method + Source: + Page: 219 + Table: + - [1, 2, Control] + - [3, 4, Defense] + - [5, 6, Limbs] + - [7, 8, Focus] + - [9, 10, Advantage] + - [11, 12, Range] + - [13, 14, Stress] + - [15, 16, Sense] + - [17, 18, Weakness] + - [19, 20, Opening] + - [21, 22, Fear] + - [23, 24, Instinct] + - [25, 26, Footing] + - [27, 28, Maneuver] + - [29, 30, Reach] + - [31, 32, Harm] + - [33, 34, Finesse] + - [35, 36, Weapon] + - [37, 38, Environment] + - [39, 40, Technique] + - [41, 42, Surprise] + - [43, 44, Pride] + - [45, 46, Wound] + - [47, 48, Precision] + - [49, 50, Ally] + - [51, 52, Ground] + - [53, 54, Courage] + - [55, 56, Companion] + - [57, 58, Object] + - [59, 60, Momentum] + - [61, 62, Speed] + - [63, 64, Strength] + - [65, 66, Supply] + - [67, 68, Terrain] + - [69, 70, Armor] + - [71, 72, Skill] + - [73, 74, Body] + - [75, 76, Protection] + - [77, 78, Resolve] + - [79, 80, Ferocity] + - [81, 82, Shield] + - [83, 84, Ammo] + - [85, 86, Anger] + - [87, 88, Opportunity] + - [89, 90, Balance] + - [91, 92, Position] + - [93, 94, Barrier] + - [95, 96, Strategy] + - [97, 98, Grasp] + - [99, 100, Power] diff --git a/_master-data/Ironsworn/Oracles/Feature-Delve.yaml b/_master-data/Ironsworn/Oracles/Feature-Delve.yaml index 6030b145b..1814c4920 100644 --- a/_master-data/Ironsworn/Oracles/Feature-Delve.yaml +++ b/_master-data/Ironsworn/Oracles/Feature-Delve.yaml @@ -1,139 +1,145 @@ -Feature: - Title: - Canonical: Feature - Source: - Authors: - - Shawn Tomkin - Title: "Ironsworn: Delve" - Page: 204 - License: https://creativecommons.org/licenses/by-nc-sa/4.0/ - Summary: Use the [Aspect](Ironsworn/Oracles/Feature/Aspect) and [Focus](Ironsworn/Oracles/Feature/Focus) oracles to answer questions or provide inspiration for a location or event within a site. - Description: |- - Use the [Aspect](Ironsworn/Oracles/Feature/Aspect) and [Focus](Ironsworn/Oracles/Feature/Focus) oracles to generate the details of a location or event within a site, or to answer questions about the site’s nature or history. +Source: + Authors: + - Shawn Tomkin + Title: "Ironsworn: Delve" + License: https://creativecommons.org/licenses/by-nc-sa/4.0/ +Oracle Sets: + Feature: + Title: + Canonical: Feature + Source: + Authors: + - Shawn Tomkin + Title: "Ironsworn: Delve" + Page: 204 + License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + Summary: Use the [Aspect](Ironsworn/Oracles/Feature/Aspect) and [Focus](Ironsworn/Oracles/Feature/Focus) oracles to answer questions or provide inspiration for a location or event within a site. + Description: |- + Use the [Aspect](Ironsworn/Oracles/Feature/Aspect) and [Focus](Ironsworn/Oracles/Feature/Focus) oracles to generate the details of a location or event within a site, or to answer questions about the site’s nature or history. - The basic function of these oracles is similar to the Action(Ironsworn/Oracles/Action) and Theme(Ironsworn/Oracles/Theme) oracles in Ironsworn Core. They are abstract word prompts you can interpret as appropriate to the current situation and setting. For example, you are traveling through a [Wild](Ironsworn/Themes/Wild) [Tanglewood](Ironsworn/Domains/Tanglewood) and roll “Something unusual or unexpected” on the domain feature table. You then [Ask the Oracle](Ironsworn/Move/Fate/Ask_the_Oracle) what you discover using the [Aspect](Ironsworn/Oracles/Feature/Aspect) and [Focus](Ironsworn/Oracles/Feature/Focus) tables. The oracle responds, “Depleted Environment.” Interpreting this answer, you envision coming upon an expanse of cleared forest. All that remains of this once thick woodland is rotted stumps. What happened here? Perhaps the answer lies ahead... - Tables: - Aspect: - Title: - Canonical: "Feature: Aspect" - Short: Aspect - _idFragment: Aspect - Usage: - Suggestions: - Oracle rolls: - - Ironsworn/Oracles/Feature/Focus - Source: - Page: 204 - Table: - - [1, 2, Blocked] - - [3, 4, Crafted] - - [5, 6, Ancient] - - [7, 8, Sunken] - - [9, 10, Trapped] - - [11, 12, Secret] - - [13, 14, Toxic] - - [15, 16, Ruined] - - [17, 18, Defended] - - [19, 20, Decaying] - - [21, 22, Marked] - - [23, 24, Guarded] - - [25, 26, Inaccessible] - - [27, 28, Foreboding] - - [29, 30, Veiled] - - [31, 32, Deep] - - [33, 34, Depleted] - - [35, 36, Foul] - - [37, 38, Elevated] - - [39, 40, Moving] - - [41, 42, Unnatural] - - [43, 44, Active] - - [45, 46, Confined] - - [47, 48, Fortified] - - [49, 50, Collapsed] - - [51, 52, Isolated] - - [53, 54, Destroyed] - - [55, 56, Open] - - [57, 58, Sacred] - - [59, 60, Flooded] - - [61, 62, Complex] - - [63, 64, Abundant] - - [65, 66, Hidden] - - [67, 68, Expansive] - - [69, 70, Mysterious] - - [71, 72, Unstable] - - [73, 74, Fragile] - - [75, 76, Broken] - - [77, 78, Ensnaring] - - [79, 80, Pillaged] - - [81, 82, Sealed] - - [83, 84, Makeshift] - - [85, 86, Treacherous] - - [87, 88, Natural] - - [89, 90, Dead] - - [91, 92, Unusual] - - [93, 94, Abandoned] - - [95, 96, Deadly] - - [97, 98, Forgotten] - - [99, 100, Mystical] - Focus: - Title: - Canonical: "Feature: Focus" - Short: Focus - _idFragment: Focus - Usage: - Suggestions: - Oracle rolls: - - Ironsworn/Oracles/Feature/Aspect - Source: - Page: 205 - Table: - - [1, 2, Attack] - - [3, 4, Threshold] - - [5, 6, Boundary] - - [7, 8, Alarm] - - [9, 10, Exit] - - [11, 12, Passage] - - [13, 14, Crossing] - - [15, 16, Trigger] - - [17, 18, Trap] - - [19, 20, Hideaway] - - [21, 22, Nature] - - [23, 24, Sign] - - [25, 26, Refuge] - - [27, 28, Valuables] - - [29, 30, Breach] - - [31, 32, Route] - - [33, 34, Location] - - [35, 36, Trail] - - [37, 38, Supply] - - [39, 40, History] - - [41, 42, Prisoner] - - [43, 44, Habitation] - - [45, 46, Debris] - - [47, 48, Creature] - - [49, 50, Lair] - - [51, 52, Person] - - [53, 54, Enclosure] - - [55, 56, Remains] - - [57, 58, Water] - - [59, 60, Message] - - [61, 62, Darkness] - - [63, 64, Opening] - - [65, 66, Weapon] - - [67, 68, Entry] - - [69, 70, Illumination] - - [71, 72, Obstacle] - - [73, 74, Craft] - - [75, 76, Container] - - [77, 78, Information] - - [79, 80, Grave] - - [81, 82, Equipment] - - [83, 84, Shelter] - - [85, 86, Denizen] - - [87, 88, Environment] - - [89, 90, Material] - - [91, 92, Resource] - - [93, 94, Corruption] - - [95, 96, Death] - - [97, 98, Function] - - [99, 100, Power] + The basic function of these oracles is similar to the Action(Ironsworn/Oracles/Action) and Theme(Ironsworn/Oracles/Theme) oracles in Ironsworn Core. They are abstract word prompts you can interpret as appropriate to the current situation and setting. For example, you are traveling through a [Wild](Ironsworn/Themes/Wild) [Tanglewood](Ironsworn/Domains/Tanglewood) and roll “Something unusual or unexpected” on the domain feature table. You then [Ask the Oracle](Ironsworn/Move/Fate/Ask_the_Oracle) what you discover using the [Aspect](Ironsworn/Oracles/Feature/Aspect) and [Focus](Ironsworn/Oracles/Feature/Focus) tables. The oracle responds, “Depleted Environment.” Interpreting this answer, you envision coming upon an expanse of cleared forest. All that remains of this once thick woodland is rotted stumps. What happened here? Perhaps the answer lies ahead... + Tables: + Aspect: + Title: + Canonical: "Feature: Aspect" + Short: Aspect + _idFragment: Aspect + Usage: + Suggestions: + Oracle rolls: + - Ironsworn/Oracles/Feature/Focus + Source: + Page: 204 + Table: + - [1, 2, Blocked] + - [3, 4, Crafted] + - [5, 6, Ancient] + - [7, 8, Sunken] + - [9, 10, Trapped] + - [11, 12, Secret] + - [13, 14, Toxic] + - [15, 16, Ruined] + - [17, 18, Defended] + - [19, 20, Decaying] + - [21, 22, Marked] + - [23, 24, Guarded] + - [25, 26, Inaccessible] + - [27, 28, Foreboding] + - [29, 30, Veiled] + - [31, 32, Deep] + - [33, 34, Depleted] + - [35, 36, Foul] + - [37, 38, Elevated] + - [39, 40, Moving] + - [41, 42, Unnatural] + - [43, 44, Active] + - [45, 46, Confined] + - [47, 48, Fortified] + - [49, 50, Collapsed] + - [51, 52, Isolated] + - [53, 54, Destroyed] + - [55, 56, Open] + - [57, 58, Sacred] + - [59, 60, Flooded] + - [61, 62, Complex] + - [63, 64, Abundant] + - [65, 66, Hidden] + - [67, 68, Expansive] + - [69, 70, Mysterious] + - [71, 72, Unstable] + - [73, 74, Fragile] + - [75, 76, Broken] + - [77, 78, Ensnaring] + - [79, 80, Pillaged] + - [81, 82, Sealed] + - [83, 84, Makeshift] + - [85, 86, Treacherous] + - [87, 88, Natural] + - [89, 90, Dead] + - [91, 92, Unusual] + - [93, 94, Abandoned] + - [95, 96, Deadly] + - [97, 98, Forgotten] + - [99, 100, Mystical] + Focus: + Title: + Canonical: "Feature: Focus" + Short: Focus + _idFragment: Focus + Usage: + Suggestions: + Oracle rolls: + - Ironsworn/Oracles/Feature/Aspect + Source: + Page: 205 + Table: + - [1, 2, Attack] + - [3, 4, Threshold] + - [5, 6, Boundary] + - [7, 8, Alarm] + - [9, 10, Exit] + - [11, 12, Passage] + - [13, 14, Crossing] + - [15, 16, Trigger] + - [17, 18, Trap] + - [19, 20, Hideaway] + - [21, 22, Nature] + - [23, 24, Sign] + - [25, 26, Refuge] + - [27, 28, Valuables] + - [29, 30, Breach] + - [31, 32, Route] + - [33, 34, Location] + - [35, 36, Trail] + - [37, 38, Supply] + - [39, 40, History] + - [41, 42, Prisoner] + - [43, 44, Habitation] + - [45, 46, Debris] + - [47, 48, Creature] + - [49, 50, Lair] + - [51, 52, Person] + - [53, 54, Enclosure] + - [55, 56, Remains] + - [57, 58, Water] + - [59, 60, Message] + - [61, 62, Darkness] + - [63, 64, Opening] + - [65, 66, Weapon] + - [67, 68, Entry] + - [69, 70, Illumination] + - [71, 72, Obstacle] + - [73, 74, Craft] + - [75, 76, Container] + - [77, 78, Information] + - [79, 80, Grave] + - [81, 82, Equipment] + - [83, 84, Shelter] + - [85, 86, Denizen] + - [87, 88, Environment] + - [89, 90, Material] + - [91, 92, Resource] + - [93, 94, Corruption] + - [95, 96, Death] + - [97, 98, Function] + - [99, 100, Power] diff --git a/_master-data/Ironsworn/Oracles/Monstrosity-Delve.yaml b/_master-data/Ironsworn/Oracles/Monstrosity-Delve.yaml index 781040948..d67c9a12a 100644 --- a/_master-data/Ironsworn/Oracles/Monstrosity-Delve.yaml +++ b/_master-data/Ironsworn/Oracles/Monstrosity-Delve.yaml @@ -1,177 +1,183 @@ -Monstrosity: - Title: - Canonical: Monstrosity - Summary: Discover the nature of a [nightspawn](Ironsworn/Encounters/Horrors/Nightspawn) or other frightful creature within your world. - Description: |- - Use the Monstrosity oracle to define the nature of a [Nightspawn](Ironsworn/Encounters/Horrors/Nightspawn), or to introduce a new type of [animal](Ironsworn/Encounters/Animal), [beast](Ironsworn/Encounters/Beast), or [horror](Ironsworn/Encounters/Horror) in your world. +Source: + Authors: + - Shawn Tomkin + Title: "Ironsworn: Delve" + License: https://creativecommons.org/licenses/by-nc-sa/4.0/ +Oracle Sets: + Monstrosity: + Title: + Canonical: Monstrosity + Summary: Discover the nature of a [nightspawn](Ironsworn/Encounters/Horrors/Nightspawn) or other frightful creature within your world. + Description: |- + Use the Monstrosity oracle to define the nature of a [Nightspawn](Ironsworn/Encounters/Horrors/Nightspawn), or to introduce a new type of [animal](Ironsworn/Encounters/Animal), [beast](Ironsworn/Encounters/Beast), or [horror](Ironsworn/Encounters/Horror) in your world. - To create a monstrosity, start by rolling for its [Size](Ironsworn/Oracles/Monstrosity/Size) and [Primary Form](Ironsworn/Oracles/Monstrosity/Primary_Form). Then, roll up to four times for [Characteristics](Ironsworn/Oracles/Monstrosity/Characteristics) and keep up to three of those results. Do the same for [Abilities](Ironsworn/Oracles/Monstrosity/Abilities). + To create a monstrosity, start by rolling for its [Size](Ironsworn/Oracles/Monstrosity/Size) and [Primary Form](Ironsworn/Oracles/Monstrosity/Primary_Form). Then, roll up to four times for [Characteristics](Ironsworn/Oracles/Monstrosity/Characteristics) and keep up to three of those results. Do the same for [Abilities](Ironsworn/Oracles/Monstrosity/Abilities). - Give the monstrosity a rank. Choose one appropriate to its features, or use the [Challenge Rank](Ironsworn/Oracles/Turning_Point/Challenge_Rank) oracle. + Give the monstrosity a rank. Choose one appropriate to its features, or use the [Challenge Rank](Ironsworn/Oracles/Turning_Point/Challenge_Rank) oracle. - Finally, envision your creation and give it a name. It’s part of your world now. + Finally, envision your creation and give it a name. It’s part of your world now. - Some results on these tables include two related options separated by a slash (/). Pick the one which best fits the nature of the creature or is the most interesting. You can also make one of the options likely, and [Ask the Oracle](Ironsworn/Moves/Fate/Ask_the_Oracle) (using the pick two procedure) to confirm your choice. Or just take both! + Some results on these tables include two related options separated by a slash (/). Pick the one which best fits the nature of the creature or is the most interesting. You can also make one of the options likely, and [Ask the Oracle](Ironsworn/Moves/Fate/Ask_the_Oracle) (using the pick two procedure) to confirm your choice. Or just take both! - You should weave these abilities into the fiction of your encounter with a monstrosity. Combined with its physical characteristics, they help define the creature’s approach and tactics. Make moves as appropriate to overcome, avoid, or face the consequences of these abilities. + You should weave these abilities into the fiction of your encounter with a monstrosity. Combined with its physical characteristics, they help define the creature’s approach and tactics. Make moves as appropriate to overcome, avoid, or face the consequences of these abilities. - To learn more about your creation’s nature, you can roll on additional tables. Use the [Character Goal](Ironsworn/Oracles/Character/Goal) oracle to give the monstrosity a purpose. Roll on the [Character Disposition](Ironsworn/Oracles/Character/Disposition) and [Activity](Ironsworn/Oracles/Character/Activity) oracles to frame your initial encounter. Another roll or two can give your monstrosity nuance and complexity, making it a deeper part of your story. - Usage: - Suggestions: - Oracle rolls: - - Ironsworn/Oracles/Turning_Point/Challenge_Rank - - Ironsworn/Oracles/Character/Goal - - Ironsworn/Oracles/Character/Disposition - - Ironsworn/Oracles/Character/Activity - Source: - Authors: - - Shawn Tomkin - Title: "Ironsworn: Delve" - Page: 214 - License: https://creativecommons.org/licenses/by-nc-sa/4.0/ - Tables: - Size: - Title: - Short: Size - Canonical: "Monstrosity: Size" - _idFragment: Size - Usage: - Initial: true - Source: - Page: 214 - Table: - - [1, 5, Tiny (rodent-sized)] - - [6, 30, Small (hound-sized)] - - [31, 65, Medium (person-sized)] - - [66, 94, Large (giant-sized)] - - [95, 99, Huge (whale-sized)] - - [100, 100, Titanic (incomprehensible)] - Primary Form: - Title: - Short: Form - Standard: Primary Form - Canonical: "Monstrosity: Primary Form" - _idFragment: Primary Form - Description: |- - Some results on these tables include two related options separated by a slash (/). Pick the one which best fits the nature of the creature or is the most interesting. You can also make one of the options likely, and [Ask the Oracle](Ironsworn/Moves/Fate/Ask_the_Oracle) (using the pick two procedure) to confirm your choice. Or just take both! - Usage: - Initial: true - Source: - Page: 214 - Table: - - [1, 15, Beast / mammal] - - [16, 25, Humanoid] - - [26, 31, Bird] - - [32, 37, Spider] - - [38, 43, Snake] - - [44, 49, Worm / slug] - - [50, 55, Lizard] - - [56, 61, Insect] - - [62, 66, Amorphous] - - [67, 69, Crustacean] - - [70, 71, Fish] - - [72, 73, Octopoid] - - [74, 75, Amphibian] - - [76, 77, Plant] - - [78, 78, Incorporeal] - - [79, 79, Mineral] - - [80, 80, Elemental] - - [81, 100, Hybrid (roll twice), *result:RollTwice] - Characteristics: - Title: - Short: Characteristics - Canonical: "Monstrosity: Characteristics" - _idFragment: Characteristics - Usage: - Max rolls: 4 - Initial: true - Summary: Roll up to four times for Characteristics and keep up to three of those results. - Description: |- - Some results on these tables include two related options separated by a slash (/). Pick the one which best fits the nature of the creature or is the most interesting. You can also make one of the options likely, and [Ask the Oracle](Ironsworn/Moves/Fate/Ask_the_Oracle) (using the pick two procedure) to confirm your choice. Or just take both! - Source: - Page: 215 - Table: - - [1, 5, Extra limbs] - - [6, 10, Fangs / rows of sharp teeth] - - [11, 15, Claws / talons] - - [16, 20, Strange color / markings] - - [21, 25, Horns / tusks] - - [26, 30, Oversized mouth] - - [31, 35, Spikes / spines] - - [36, 40, Tail] - - [41, 45, Multi-segmented body] - - [46, 50, Wings] - - [51, 54, Stinger / barbs] - - [55, 58, Many-eyed] - - [59, 62, Distinctive sound] - - [63, 66, Tentacles / tendrils] - - [67, 69, Mandibles / pincers] - - [70, 72, Luminescent] - - [73, 75, Antennae / sensory organs] - - [76, 78, Proboscis / inner jaw] - - [79, 81, Exoskeleton / shell] - - [82, 84, Bony protuberances] - - [85, 87, Corrupted flesh] - - [88, 90, Semi-transparent] - - [91, 93, Scarred / injured] - - [94, 95, Egg sac / carried offspring] - - [96, 97, Rotting / skeletal] - - [98, 98, Mummified / desiccated] - - [99, 99, Multi-headed] - - [100, 100, Etched with mystic runes] - Abilities: - Title: - Short: Abilities - Canonical: "Monstrosity: Abilities" - _idFragment: Abilities - Usage: - Max rolls: 4 - Initial: true - Summary: Roll up to four times for Abilities and keep up to three of those results. - Description: |- - Some results on these tables include two related options separated by a slash (/). Pick the one which best fits the nature of the creature or is the most interesting. You can also make one of the options likely, and [Ask the Oracle](Ironsworn/Moves/Fate/Ask_the_Oracle) (using the pick two procedure) to confirm your choice. Or just take both! + To learn more about your creation’s nature, you can roll on additional tables. Use the [Character Goal](Ironsworn/Oracles/Character/Goal) oracle to give the monstrosity a purpose. Roll on the [Character Disposition](Ironsworn/Oracles/Character/Disposition) and [Activity](Ironsworn/Oracles/Character/Activity) oracles to frame your initial encounter. Another roll or two can give your monstrosity nuance and complexity, making it a deeper part of your story. + Usage: + Suggestions: + Oracle rolls: + - Ironsworn/Oracles/Turning_Point/Challenge_Rank + - Ironsworn/Oracles/Character/Goal + - Ironsworn/Oracles/Character/Disposition + - Ironsworn/Oracles/Character/Activity + Source: + Authors: + - Shawn Tomkin + Title: "Ironsworn: Delve" + Page: 214 + License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + Tables: + Size: + Title: + Short: Size + Canonical: "Monstrosity: Size" + _idFragment: Size + Usage: + Initial: true + Source: + Page: 214 + Table: + - [1, 5, Tiny (rodent-sized)] + - [6, 30, Small (hound-sized)] + - [31, 65, Medium (person-sized)] + - [66, 94, Large (giant-sized)] + - [95, 99, Huge (whale-sized)] + - [100, 100, Titanic (incomprehensible)] + Primary Form: + Title: + Short: Form + Standard: Primary Form + Canonical: "Monstrosity: Primary Form" + _idFragment: Primary Form + Description: |- + Some results on these tables include two related options separated by a slash (/). Pick the one which best fits the nature of the creature or is the most interesting. You can also make one of the options likely, and [Ask the Oracle](Ironsworn/Moves/Fate/Ask_the_Oracle) (using the pick two procedure) to confirm your choice. Or just take both! + Usage: + Initial: true + Source: + Page: 214 + Table: + - [1, 15, Beast / mammal] + - [16, 25, Humanoid] + - [26, 31, Bird] + - [32, 37, Spider] + - [38, 43, Snake] + - [44, 49, Worm / slug] + - [50, 55, Lizard] + - [56, 61, Insect] + - [62, 66, Amorphous] + - [67, 69, Crustacean] + - [70, 71, Fish] + - [72, 73, Octopoid] + - [74, 75, Amphibian] + - [76, 77, Plant] + - [78, 78, Incorporeal] + - [79, 79, Mineral] + - [80, 80, Elemental] + - [81, 100, Hybrid (roll twice), *result:RollTwice] + Characteristics: + Title: + Short: Characteristics + Canonical: "Monstrosity: Characteristics" + _idFragment: Characteristics + Usage: + Max rolls: 4 + Initial: true + Summary: Roll up to four times for Characteristics and keep up to three of those results. + Description: |- + Some results on these tables include two related options separated by a slash (/). Pick the one which best fits the nature of the creature or is the most interesting. You can also make one of the options likely, and [Ask the Oracle](Ironsworn/Moves/Fate/Ask_the_Oracle) (using the pick two procedure) to confirm your choice. Or just take both! + Source: + Page: 215 + Table: + - [1, 5, Extra limbs] + - [6, 10, Fangs / rows of sharp teeth] + - [11, 15, Claws / talons] + - [16, 20, Strange color / markings] + - [21, 25, Horns / tusks] + - [26, 30, Oversized mouth] + - [31, 35, Spikes / spines] + - [36, 40, Tail] + - [41, 45, Multi-segmented body] + - [46, 50, Wings] + - [51, 54, Stinger / barbs] + - [55, 58, Many-eyed] + - [59, 62, Distinctive sound] + - [63, 66, Tentacles / tendrils] + - [67, 69, Mandibles / pincers] + - [70, 72, Luminescent] + - [73, 75, Antennae / sensory organs] + - [76, 78, Proboscis / inner jaw] + - [79, 81, Exoskeleton / shell] + - [82, 84, Bony protuberances] + - [85, 87, Corrupted flesh] + - [88, 90, Semi-transparent] + - [91, 93, Scarred / injured] + - [94, 95, Egg sac / carried offspring] + - [96, 97, Rotting / skeletal] + - [98, 98, Mummified / desiccated] + - [99, 99, Multi-headed] + - [100, 100, Etched with mystic runes] + Abilities: + Title: + Short: Abilities + Canonical: "Monstrosity: Abilities" + _idFragment: Abilities + Usage: + Max rolls: 4 + Initial: true + Summary: Roll up to four times for Abilities and keep up to three of those results. + Description: |- + Some results on these tables include two related options separated by a slash (/). Pick the one which best fits the nature of the creature or is the most interesting. You can also make one of the options likely, and [Ask the Oracle](Ironsworn/Moves/Fate/Ask_the_Oracle) (using the pick two procedure) to confirm your choice. Or just take both! - You should weave these abilities into the fiction of your encounter with a monstrosity. Combined with its physical characteristics, they help define the creature’s approach and tactics. Make moves as appropriate to overcome, avoid, or face the consequences of these abilities. - Source: - Page: 216 - Table: - - [1, 4, Keen senses] - - [5, 8, Intimidating vocalization] - - [9, 12, Climber] - - [13, 16, Intelligent] - - [17, 20, Swift] - - [21, 24, Powerful bite] - - [25, 28, Stealthy / ambusher] - - [29, 32, Horrid visage] - - [33, 36, Strong] - - [37, 40, Camouflaged] - - [41, 43, Flier / glider] - - [44, 46, Poisonous] - - [47, 49, Semiaquatic / swimmer] - - [50, 52, Grappler / entangler] - - [53, 55, Leaper] - - [56, 58, Crusher / constrictor] - - [59, 61, Armored] - - [62, 64, Burrower] - - [65, 67, Noxious smell] - - [68, 69, Trap-setter] - - [70, 71, Parasitic] - - [72, 73, Vibration sense] - - [74, 75, Breath weapon / toxic spew] - - [76, 77, Mimicry] - - [78, 79, Shapeshifting] - - [80, 81, Control lesser creatures] - - [82, 83, Echolocation] - - [84, 85, Electric shock] - - [86, 87, Acidic] - - [88, 89, Symbiotic] - - [90, 91, Shoot projectiles] - - [92, 92, Paralyzing] - - [93, 93, Immune to iron] - - [94, 94, Feels no pain] - - [95, 95, Enact rituals] - - [96, 96, Create illusions] - - [97, 97, Mind control / telepathy] - - [98, 98, Move between realities] - - [99, 99, Wield weapons] - - [100, 100, Control elements] + You should weave these abilities into the fiction of your encounter with a monstrosity. Combined with its physical characteristics, they help define the creature’s approach and tactics. Make moves as appropriate to overcome, avoid, or face the consequences of these abilities. + Source: + Page: 216 + Table: + - [1, 4, Keen senses] + - [5, 8, Intimidating vocalization] + - [9, 12, Climber] + - [13, 16, Intelligent] + - [17, 20, Swift] + - [21, 24, Powerful bite] + - [25, 28, Stealthy / ambusher] + - [29, 32, Horrid visage] + - [33, 36, Strong] + - [37, 40, Camouflaged] + - [41, 43, Flier / glider] + - [44, 46, Poisonous] + - [47, 49, Semiaquatic / swimmer] + - [50, 52, Grappler / entangler] + - [53, 55, Leaper] + - [56, 58, Crusher / constrictor] + - [59, 61, Armored] + - [62, 64, Burrower] + - [65, 67, Noxious smell] + - [68, 69, Trap-setter] + - [70, 71, Parasitic] + - [72, 73, Vibration sense] + - [74, 75, Breath weapon / toxic spew] + - [76, 77, Mimicry] + - [78, 79, Shapeshifting] + - [80, 81, Control lesser creatures] + - [82, 83, Echolocation] + - [84, 85, Electric shock] + - [86, 87, Acidic] + - [88, 89, Symbiotic] + - [90, 91, Shoot projectiles] + - [92, 92, Paralyzing] + - [93, 93, Immune to iron] + - [94, 94, Feels no pain] + - [95, 95, Enact rituals] + - [96, 96, Create illusions] + - [97, 97, Mind control / telepathy] + - [98, 98, Move between realities] + - [99, 99, Wield weapons] + - [100, 100, Control elements] diff --git a/_master-data/Ironsworn/Oracles/Moves-Delve.yaml b/_master-data/Ironsworn/Oracles/Moves-Delve.yaml index 1f094f0ab..5acaec03a 100644 --- a/_master-data/Ironsworn/Oracles/Moves-Delve.yaml +++ b/_master-data/Ironsworn/Oracles/Moves-Delve.yaml @@ -1,142 +1,148 @@ -Moves: - Title: - Canonical: Moves - Source: - Authors: - - Shawn Tomkin - Title: "Ironsworn: Delve" - License: https://creativecommons.org/licenses/by-nc-sa/4.0/ - Sets: - Delve the Depths: - Title: - Canonical: Delve the Depths - # Move: Ironsworn/Moves/Delve/Delve_the_Depths - Source: - Page: 21 - Authors: - - Shawn Tomkin - Title: "Ironsworn: Delve" - License: https://creativecommons.org/licenses/by-nc-sa/4.0/ - Tables: - Edge: - Title: - Canonical: Edge - Table: &table:Delve_the_Depths - - [1, 45, "Mark progress and [Reveal a Danger](Ironsworn/Moves/Delve/Reveal_a_Danger)."] - - [46, 65, "Mark progress."] - - [ - 66, - 75, - "Choose one: Mark progress or [Find an Opportunity](Ironsworn/Moves/Delve/Find_an_Opportunity).", - ] - - [ - 76, - 80, - "Take both: Mark progress and [Find an Opportunity](Ironsworn/Moves/Delve/Find_an_Opportunity).", - ] - - [ - 81, - 100, - "Mark progress twice and [Reveal a Danger](Ironsworn/Moves/Delve/Reveal_a_Danger).", - ] - Shadow: - Title: - Canonical: Shadow - _templateTableRows: - content: *table:Delve_the_Depths - rolls: - - [1, 30] - - [31, 65] - - [66, 90] - - [91, 99] - - [100, 100] - Wits: - Title: - Canonical: Wits - _templateTableRows: - content: *table:Delve_the_Depths - rolls: - - [1, 40] - - [41, 55] - - [56, 80] - - [81, 99] - - [100, 100] - Tables: - Find an Opportunity: - Title: - Canonical: Find an Opportunity - # Move: Ironsworn/Moves/Delve/Find_an_Opportunity - Source: - Page: 30 - Table: - - [1, 25, "The terrain favors you, or you find a hidden path."] - - [ - 26, - 45, - "An aspect of the history or nature of this place is revealed.", - ] - - [46, 57, "You locate a secure area."] - - [58, 68, "A clue offers insight or direction."] - - [69, 78, "You get the drop on a denizen."] - - [ - 79, - 86, - "This area provides an opportunity to scavenge, forage, or hunt.", - ] - - [87, 90, "You locate an interesting or helpful object."] - - [91, 94, "You are alerted to a potential threat."] - - [95, 98, "You encounter a denizen who might support you."] - - [99, 100, "You encounter a denizen in need of help."] - Reveal a Danger: - Title: - Canonical: Reveal a Danger - Source: - Page: 34 - Table: - - [1, 30, "Check the theme card."] - - [31, 45, "Check the domain card."] - - [46, 57, &Reveal_a_Danger_1 "You encounter a hostile denizen."] - - [58, 68, &Reveal_a_Danger_2 "You face an environmental or architectural hazard."] - - [69, 76, &Reveal_a_Danger_3 "A discovery undermines or complicates your quest."] - - [77, 79, &Reveal_a_Danger_4 "You confront a harrowing situation or sensation."] - - [80, 82, &Reveal_a_Danger_5 "You face the consequences of an earlier choice or approach."] - - [83, 85, &Reveal_a_Danger_6 "Your way is blocked or trapped."] - - [86, 88, &Reveal_a_Danger_7 "A resource is diminished, broken, or lost."] - - [89, 91, &Reveal_a_Danger_8 "You face a perplexing mystery or tough choice."] - - [92, 94, &Reveal_a_Danger_9 "You lose your way or are delayed."] - - [ - 95, - 100, - &Reveal_a_Danger_10 "Roll twice more on this table. Both results occur. If they are the same result, make it worse.", - *result:RollTwice.MakeItWorse - ] - Reveal a Danger alt: - Title: - Canonical: Reveal a Danger (alternate version) - Short: Reveal a Danger - _idFragment: Reveal a Danger alt - Source: - Page: 68 - Table: - - [1, 22, *Reveal_a_Danger_1] - - [23, 42, *Reveal_a_Danger_2] - - [43, 58, *Reveal_a_Danger_3] - - [59, 64, *Reveal_a_Danger_4] - - [65, 70, *Reveal_a_Danger_5] - - [71, 76, *Reveal_a_Danger_6] - - [77, 82, *Reveal_a_Danger_7] - - [83, 88, *Reveal_a_Danger_8] - - [89, 94, *Reveal_a_Danger_9] - - [95, 100, *Reveal_a_Danger_10, *result:RollTwice.MakeItWorse] - Advance a Threat: - Title: - Canonical: Advance a Threat - On a Match: - Text: |- - On a match, this development also exposes a surprising aspect of the threat’s plan or nature. - Source: - Page: 155 - Table: - - [1, 30, "The threat readies its next step, or a new danger looms. If you are in a position to prevent this development, you may attempt to do so. If you succeed, [Reach a Milestone](Ironsworn/Moves/Quest/Reach_a_Milestone). Otherwise, mark menace."] - - [31, 70, "The threat works subtly to advance toward its goal, or the danger escalates. Mark menace."] - - [71, 100, "The threat makes a dramatic and immediate move, or a major event reveals new complications. Mark menace twice."] +Source: + Authors: + - Shawn Tomkin + Title: "Ironsworn: Delve" + License: https://creativecommons.org/licenses/by-nc-sa/4.0/ +Oracle Sets: + Moves: + Title: + Canonical: Moves + Source: + Authors: + - Shawn Tomkin + Title: "Ironsworn: Delve" + License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + Sets: + Delve the Depths: + Title: + Canonical: Delve the Depths + # Move: Ironsworn/Moves/Delve/Delve_the_Depths + Source: + Page: 21 + Authors: + - Shawn Tomkin + Title: "Ironsworn: Delve" + License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + Tables: + Edge: + Title: + Canonical: Edge + Table: &table:Delve_the_Depths + - [1, 45, "Mark progress and [Reveal a Danger](Ironsworn/Moves/Delve/Reveal_a_Danger)."] + - [46, 65, "Mark progress."] + - [ + 66, + 75, + "Choose one: Mark progress or [Find an Opportunity](Ironsworn/Moves/Delve/Find_an_Opportunity).", + ] + - [ + 76, + 80, + "Take both: Mark progress and [Find an Opportunity](Ironsworn/Moves/Delve/Find_an_Opportunity).", + ] + - [ + 81, + 100, + "Mark progress twice and [Reveal a Danger](Ironsworn/Moves/Delve/Reveal_a_Danger).", + ] + Shadow: + Title: + Canonical: Shadow + _templateTableRows: + content: *table:Delve_the_Depths + rolls: + - [1, 30] + - [31, 65] + - [66, 90] + - [91, 99] + - [100, 100] + Wits: + Title: + Canonical: Wits + _templateTableRows: + content: *table:Delve_the_Depths + rolls: + - [1, 40] + - [41, 55] + - [56, 80] + - [81, 99] + - [100, 100] + Tables: + Find an Opportunity: + Title: + Canonical: Find an Opportunity + # Move: Ironsworn/Moves/Delve/Find_an_Opportunity + Source: + Page: 30 + Table: + - [1, 25, "The terrain favors you, or you find a hidden path."] + - [ + 26, + 45, + "An aspect of the history or nature of this place is revealed.", + ] + - [46, 57, "You locate a secure area."] + - [58, 68, "A clue offers insight or direction."] + - [69, 78, "You get the drop on a denizen."] + - [ + 79, + 86, + "This area provides an opportunity to scavenge, forage, or hunt.", + ] + - [87, 90, "You locate an interesting or helpful object."] + - [91, 94, "You are alerted to a potential threat."] + - [95, 98, "You encounter a denizen who might support you."] + - [99, 100, "You encounter a denizen in need of help."] + Reveal a Danger: + Title: + Canonical: Reveal a Danger + Source: + Page: 34 + Table: + - [1, 30, "Check the theme card."] + - [31, 45, "Check the domain card."] + - [46, 57, &Reveal_a_Danger_1 "You encounter a hostile denizen."] + - [58, 68, &Reveal_a_Danger_2 "You face an environmental or architectural hazard."] + - [69, 76, &Reveal_a_Danger_3 "A discovery undermines or complicates your quest."] + - [77, 79, &Reveal_a_Danger_4 "You confront a harrowing situation or sensation."] + - [80, 82, &Reveal_a_Danger_5 "You face the consequences of an earlier choice or approach."] + - [83, 85, &Reveal_a_Danger_6 "Your way is blocked or trapped."] + - [86, 88, &Reveal_a_Danger_7 "A resource is diminished, broken, or lost."] + - [89, 91, &Reveal_a_Danger_8 "You face a perplexing mystery or tough choice."] + - [92, 94, &Reveal_a_Danger_9 "You lose your way or are delayed."] + - [ + 95, + 100, + &Reveal_a_Danger_10 "Roll twice more on this table. Both results occur. If they are the same result, make it worse.", + *result:RollTwice.MakeItWorse + ] + Reveal a Danger alt: + Title: + Canonical: Reveal a Danger (alternate version) + Short: Reveal a Danger + _idFragment: Reveal a Danger alt + Source: + Page: 68 + Table: + - [1, 22, *Reveal_a_Danger_1] + - [23, 42, *Reveal_a_Danger_2] + - [43, 58, *Reveal_a_Danger_3] + - [59, 64, *Reveal_a_Danger_4] + - [65, 70, *Reveal_a_Danger_5] + - [71, 76, *Reveal_a_Danger_6] + - [77, 82, *Reveal_a_Danger_7] + - [83, 88, *Reveal_a_Danger_8] + - [89, 94, *Reveal_a_Danger_9] + - [95, 100, *Reveal_a_Danger_10, *result:RollTwice.MakeItWorse] + Advance a Threat: + Title: + Canonical: Advance a Threat + On a Match: + Text: |- + On a match, this development also exposes a surprising aspect of the threat’s plan or nature. + Source: + Page: 155 + Table: + - [1, 30, "The threat readies its next step, or a new danger looms. If you are in a position to prevent this development, you may attempt to do so. If you succeed, [Reach a Milestone](Ironsworn/Moves/Quest/Reach_a_Milestone). Otherwise, mark menace."] + - [31, 70, "The threat works subtly to advance toward its goal, or the danger escalates. Mark menace."] + - [71, 100, "The threat makes a dramatic and immediate move, or a major event reveals new complications. Mark menace twice."] diff --git a/_master-data/Ironsworn/Oracles/Moves.yaml b/_master-data/Ironsworn/Oracles/Moves.yaml index b95edce32..b4ab2da80 100644 --- a/_master-data/Ironsworn/Oracles/Moves.yaml +++ b/_master-data/Ironsworn/Oracles/Moves.yaml @@ -1,146 +1,152 @@ -Moves: - Title: - Canonical: Moves - Source: - Authors: - - Shawn Tomkin - Title: Ironsworn Rulebook - License: https://creativecommons.org/licenses/by-sa/4.0/ - Sets: - Ask the Oracle: - Title: - Canonical: Ask the Oracle - Source: - Page: 107 - Authors: - - Shawn Tomkin - Title: Ironsworn Rulebook - License: https://creativecommons.org/licenses/by-sa/4.0/ - Tables: - Almost Certain: - Title: - Canonical: Almost Certain - Aliases: ["90"] - On a Match: &AtO.Match - Text: On a match, an extreme result or twist has occurred. - Table: - - [1, 10, "No"] - - [11, 100, "Yes"] - Likely: - Title: - Canonical: Likely - Aliases: ["75"] - On a Match: *AtO.Match - Table: - - [1, 25, "No"] - - [26, 100, "Yes"] - 50/50: - Title: - Canonical: 50/50 - Standard: 50/50 - Short: 50/50 - Aliases: ["50"] - On a Match: *AtO.Match - Table: - - [1, 50, "No"] - - [51, 100, "Yes"] - "Unlikely": - Title: - Canonical: "Unlikely" - Aliases: ["25"] - On a Match: *AtO.Match - Table: - - [1, 75, "No"] - - [76, 100, "Yes"] - "Small Chance": - Title: - Canonical: "Small Chance" - Aliases: ["10"] - On a Match: *AtO.Match - Table: - - [1, 90, "No"] - - [91, 100, "Yes"] - Tables: - Endure Harm: - Title: - Canonical: Endure Harm - Source: - Page: 91 - # Move: Ironsworn/Moves/Suffer/Endure_Harm - Table: - - [1, 10, "The harm is mortal. [Face Death](Ironsworn/Moves/Suffer/Face_Death)."] - - [ - 11, - 20, - "You are dying. You need to Heal within an hour or two, or [Face Death](Ironsworn/Moves/Suffer/Face_Death).", - ] - - [ - 21, - 35, - "You are unconscious and out of action. If left alone, you come back to your senses in an hour or two. If you are vulnerable to a foe not inclined to show mercy, [Face Death](Ironsworn/Moves/Suffer/Face_Death).", - ] - - [ - 36, - 50, - "You are reeling and fighting to stay conscious. If you engage in any vigorous activity (such as running or fighting) before taking a breather for a few minutes, roll on this table again (before resolving the other move).", - ] - - [51, 100, "You are battered but still standing."] - Endure Stress: - Title: - Canonical: Endure Stress - Source: - Page: 93 - # Move: Ironsworn/Moves/Suffer/Endure_Stress - Table: - - [1, 10, "You are overwhelmed. [Face Desolation](Ironsworn/Moves/Suffer/Face_Desolation)."] - - [ - 11, - 25, - "You give up. [Forsake Your Vow](Ironsworn/Moves/Quest/Forsake_Your_Vow) (if possible, one relevant to your current crisis).", - ] - - [ - 26, - 50, - "You give in to a fear or compulsion, and act against your better instincts.", - ] - - [51, 100, "You persevere."] - Pay the Price: - Title: - Canonical: Pay the Price - Source: - Page: 105 - # Move: Ironsworn/Moves/Fate/Pay_the_Price - Table: - - [ - 1, - 2, - "Roll again and apply that result but make it worse. If you roll this result yet again, think of something dreadful that changes the course of your quest ([Ask the Oracle](Ironsworn/Moves/Fate/Ask_the_Oracle) if unsure) and make it happen.", - ] - - [ - 3, - 5, - "A person or community you trusted loses faith in you, or acts against you.", - ] - - [6, 9, "A person or community you care about is exposed to danger."] - - [10, 16, "You are separated from something or someone."] - - [17, 23, "Your action has an unintended effect."] - - [24, 32, "Something of value is lost or destroyed."] - - [33, 41, "The current situation worsens."] - - [42, 50, "A new danger or foe is revealed."] - - [51, 59, "It causes a delay or puts you at a disadvantage."] - - [60, 68, "It is harmful."] - - [69, 76, "It is stressful."] - - [77, 85, "A surprising development complicates your quest."] - - [86, 90, "It wastes resources."] - - [91, 94, "It forces you to act against your best intentions."] - - [ - 95, - 98, - "A friend, companion, or ally is put in harm’s way (or you are, if alone).", - ] - - [ - 99, - 100, - "Roll twice more on this table. Both results occur. If they are the same result, make it worse.", - *result:RollTwice.MakeItWorse - ] +Source: + Authors: + - Shawn Tomkin + Title: Ironsworn Rulebook + License: https://creativecommons.org/licenses/by-sa/4.0/ +Oracle Sets: + Moves: + Title: + Canonical: Moves + Source: + Authors: + - Shawn Tomkin + Title: Ironsworn Rulebook + License: https://creativecommons.org/licenses/by-sa/4.0/ + Sets: + Ask the Oracle: + Title: + Canonical: Ask the Oracle + Source: + Page: 107 + Authors: + - Shawn Tomkin + Title: Ironsworn Rulebook + License: https://creativecommons.org/licenses/by-sa/4.0/ + Tables: + Almost Certain: + Title: + Canonical: Almost Certain + Aliases: ["90"] + On a Match: &AtO.Match + Text: On a match, an extreme result or twist has occurred. + Table: + - [1, 10, "No"] + - [11, 100, "Yes"] + Likely: + Title: + Canonical: Likely + Aliases: ["75"] + On a Match: *AtO.Match + Table: + - [1, 25, "No"] + - [26, 100, "Yes"] + 50/50: + Title: + Canonical: 50/50 + Standard: 50/50 + Short: 50/50 + Aliases: ["50"] + On a Match: *AtO.Match + Table: + - [1, 50, "No"] + - [51, 100, "Yes"] + "Unlikely": + Title: + Canonical: "Unlikely" + Aliases: ["25"] + On a Match: *AtO.Match + Table: + - [1, 75, "No"] + - [76, 100, "Yes"] + "Small Chance": + Title: + Canonical: "Small Chance" + Aliases: ["10"] + On a Match: *AtO.Match + Table: + - [1, 90, "No"] + - [91, 100, "Yes"] + Tables: + Endure Harm: + Title: + Canonical: Endure Harm + Source: + Page: 91 + # Move: Ironsworn/Moves/Suffer/Endure_Harm + Table: + - [1, 10, "The harm is mortal. [Face Death](Ironsworn/Moves/Suffer/Face_Death)."] + - [ + 11, + 20, + "You are dying. You need to Heal within an hour or two, or [Face Death](Ironsworn/Moves/Suffer/Face_Death).", + ] + - [ + 21, + 35, + "You are unconscious and out of action. If left alone, you come back to your senses in an hour or two. If you are vulnerable to a foe not inclined to show mercy, [Face Death](Ironsworn/Moves/Suffer/Face_Death).", + ] + - [ + 36, + 50, + "You are reeling and fighting to stay conscious. If you engage in any vigorous activity (such as running or fighting) before taking a breather for a few minutes, roll on this table again (before resolving the other move).", + ] + - [51, 100, "You are battered but still standing."] + Endure Stress: + Title: + Canonical: Endure Stress + Source: + Page: 93 + # Move: Ironsworn/Moves/Suffer/Endure_Stress + Table: + - [1, 10, "You are overwhelmed. [Face Desolation](Ironsworn/Moves/Suffer/Face_Desolation)."] + - [ + 11, + 25, + "You give up. [Forsake Your Vow](Ironsworn/Moves/Quest/Forsake_Your_Vow) (if possible, one relevant to your current crisis).", + ] + - [ + 26, + 50, + "You give in to a fear or compulsion, and act against your better instincts.", + ] + - [51, 100, "You persevere."] + Pay the Price: + Title: + Canonical: Pay the Price + Source: + Page: 105 + # Move: Ironsworn/Moves/Fate/Pay_the_Price + Table: + - [ + 1, + 2, + "Roll again and apply that result but make it worse. If you roll this result yet again, think of something dreadful that changes the course of your quest ([Ask the Oracle](Ironsworn/Moves/Fate/Ask_the_Oracle) if unsure) and make it happen.", + ] + - [ + 3, + 5, + "A person or community you trusted loses faith in you, or acts against you.", + ] + - [6, 9, "A person or community you care about is exposed to danger."] + - [10, 16, "You are separated from something or someone."] + - [17, 23, "Your action has an unintended effect."] + - [24, 32, "Something of value is lost or destroyed."] + - [33, 41, "The current situation worsens."] + - [42, 50, "A new danger or foe is revealed."] + - [51, 59, "It causes a delay or puts you at a disadvantage."] + - [60, 68, "It is harmful."] + - [69, 76, "It is stressful."] + - [77, 85, "A surprising development complicates your quest."] + - [86, 90, "It wastes resources."] + - [91, 94, "It forces you to act against your best intentions."] + - [ + 95, + 98, + "A friend, companion, or ally is put in harm’s way (or you are, if alone).", + ] + - [ + 99, + 100, + "Roll twice more on this table. Both results occur. If they are the same result, make it worse.", + *result:RollTwice.MakeItWorse + ] diff --git a/_master-data/Ironsworn/Oracles/Name.yaml b/_master-data/Ironsworn/Oracles/Name.yaml index 869feeca5..e59cd723c 100644 --- a/_master-data/Ironsworn/Oracles/Name.yaml +++ b/_master-data/Ironsworn/Oracles/Name.yaml @@ -1,424 +1,430 @@ -Name: - Title: - Canonical: Name - Source: - Authors: - - Shawn Tomkin - Title: "Ironsworn Rulebook" - Page: 184 - License: https://creativecommons.org/licenses/by-nc-sa/4.0/ - Sets: - Ironlander: - Title: - Canonical: "Oracle 13: Ironlander Names" - Standard: Ironlander Names - Short: Ironlander - _idFragment: Ironlander - Description: Use this oracle to quickly generate a name for an Ironlander character. Roll on either table. Surnames are not used in the Ironlands, and names are often gender-neutral. - Source: - Title: Ironsworn Rulebook - Page: 184 - Tables: - A: - Source: - Page: 184 - Title: - Canonical: "" - Standard: Table A - Short: A - _idFragment: A - Table: - - [1, 1, Solana] - - [2, 2, Keelan] - - [3, 3, Cadigan] - - [4, 4, Sola] - - [5, 5, Kodroth] - - [6, 6, Kione] - - [7, 7, Katja] - - [8, 8, Tio] - - [9, 9, Artiga] - - [10, 10, Eos] - - [11, 11, Bastien] - - [12, 12, Elli] - - [13, 13, Maura] - - [14, 14, Haleema] - - [15, 15, Abella] - - [16, 16, Morter] - - [17, 17, Wulan] - - [18, 18, Mai] - - [19, 19, Farina] - - [20, 20, Pearce] - - [21, 21, Wynne] - - [22, 22, Haf] - - [23, 23, Aeddon] - - [24, 24, Khinara] - - [25, 25, Milla] - - [26, 26, Nakata] - - [27, 27, Kynan] - - [28, 28, Kiah] - - [29, 29, Jaggar] - - [30, 30, Beca] - - [31, 31, Ikram] - - [32, 32, Melia] - - [33, 33, Sidan] - - [34, 34, Deshi] - - [35, 35, Tessa] - - [36, 36, Sibila] - - [37, 37, Morien] - - [38, 38, Mona] - - [39, 39, Padma] - - [40, 40, Avella] - - [41, 41, Naila] - - [42, 42, Lio] - - [43, 43, Cera] - - [44, 44, Ithela] - - [45, 45, Zhan] - - [46, 46, Kaivan] - - [47, 47, Valeri] - - [48, 48, Hirsham] - - [49, 49, Pemba] - - [50, 50, Edda] - - [51, 51, Lestara] - - [52, 52, Lago] - - [53, 53, Elstan] - - [54, 54, Saskia] - - [55, 55, Kabeera] - - [56, 56, Caldas] - - [57, 57, Nisus] - - [58, 58, Serene] - - [59, 59, Chenda] - - [60, 60, Themon] - - [61, 61, Erin] - - [62, 62, Alban] - - [63, 63, Parcell] - - [64, 64, Jelma] - - [65, 65, Willa] - - [66, 66, Nadira] - - [67, 67, Gwen] - - [68, 68, Amara] - - [69, 69, Masias] - - [70, 70, Kanno] - - [71, 71, Razeena] - - [72, 72, Mira] - - [73, 73, Perella] - - [74, 74, Myrick] - - [75, 75, Qamar] - - [76, 76, Kormak] - - [77, 77, Zura] - - [78, 78, Zanita] - - [79, 79, Brynn] - - [80, 80, Tegan] - - [81, 81, Pendry] - - [82, 82, Quinn] - - [83, 83, Fanir] - - [84, 84, Glain] - - [85, 85, Emelyn] - - [86, 86, Kendi] - - [87, 87, Althus] - - [88, 88, Leela] - - [89, 89, Ishana] - - [90, 90, Flint] - - [91, 91, Delkash] - - [92, 92, Nia] - - [93, 93, Nan] - - [94, 94, Keeara] - - [95, 95, Katania] - - [96, 96, Morell] - - [97, 97, Temir] - - [98, 98, Bas] - - [99, 99, Sabine] - - [100, 100, Tallus] - B: - Source: - Page: 185 - Title: - Canonical: "" - Standard: Table B - Short: B - _idFragment: B - Table: - - [1, 1, Segura] - - [2, 2, Gethin] - - [3, 3, Bataar] - - [4, 4, Basira] - - [5, 5, Joa] - - [6, 6, Glynn] - - [7, 7, Toran] - - [8, 8, Arasen] - - [9, 9, Kuron] - - [10, 10, Griff] - - [11, 11, Owena] - - [12, 12, Adda] - - [13, 13, Euros] - - [14, 14, Kova] - - [15, 15, Kara] - - [16, 16, Morgan] - - [17, 17, Nanda] - - [18, 18, Tamara] - - [19, 19, Asha] - - [20, 20, Delos] - - [21, 21, Torgan] - - [22, 22, Makari] - - [23, 23, Selva] - - [24, 24, Kimura] - - [25, 25, Rhian] - - [26, 26, Tristan] - - [27, 27, Siorra] - - [28, 28, Sayer] - - [29, 29, Cortina] - - [30, 30, Vesna] - - [31, 31, Kataka] - - [32, 32, Keyshia] - - [33, 33, Mila] - - [34, 34, Lili] - - [35, 35, Vigo] - - [36, 36, Sadia] - - [37, 37, Malik] - - [38, 38, Dag] - - [39, 39, Kuno] - - [40, 40, Reva] - - [41, 41, Kai] - - [42, 42, Kalina] - - [43, 43, Jihan] - - [44, 44, Hennion] - - [45, 45, Abram] - - [46, 46, Aida] - - [47, 47, Myrtle] - - [48, 48, Nekun] - - [49, 49, Menna] - - [50, 50, Tahir] - - [51, 51, Sarria] - - [52, 52, Nakura] - - [53, 53, Akiya] - - [54, 54, Talan] - - [55, 55, Mattick] - - [56, 56, Okoth] - - [57, 57, Khulan] - - [58, 58, Verena] - - [59, 59, Beltran] - - [60, 60, Del] - - [61, 61, Ranna] - - [62, 62, Alina] - - [63, 63, Muna] - - [64, 64, Mura] - - [65, 65, Torrens] - - [66, 66, Yuda] - - [67, 67, Nazmi] - - [68, 68, Ghalen] - - [69, 69, Sarda] - - [70, 70, Shona] - - [71, 71, Kalidas] - - [72, 72, Wena] - - [73, 73, Sendra] - - [74, 74, Kori] - - [75, 75, Setara] - - [76, 76, Lucia] - - [77, 77, Maya] - - [78, 78, Reema] - - [79, 79, Yorath] - - [80, 80, Rhoddri] - - [81, 81, Shekhar] - - [82, 82, Servan] - - [83, 83, Reese] - - [84, 84, Kenrick] - - [85, 85, Indirra] - - [86, 86, Giliana] - - [87, 87, Jebran] - - [88, 88, Kotama] - - [89, 89, Fara] - - [90, 90, Katrin] - - [91, 91, Namba] - - [92, 92, Lona] - - [93, 93, Taylah] - - [94, 94, Kato] - - [95, 95, Esra] - - [96, 96, Eleri] - - [97, 97, Irsia] - - [98, 98, Kayu] - - [99, 99, Bevan] - - [100, 100, Chandra] - Other: - Title: - Canonical: "Oracle 15: Other Names" - Standard: Other Names - Short: Other - _idFragment: Other - Description: Use this oracle to generate names for other firstborn characters. - Display: - Columns: - - Type: dice range - Content: Ironsworn/Oracles/Name/Other/Giants - - Type: string - Content: Ironsworn/Oracles/Name/Other/Giants - Label: Giants - - Type: string - Content: Ironsworn/Oracles/Name/Other/Varou - Label: Varou - - Type: string - Content: Ironsworn/Oracles/Name/Other/Trolls - Label: Trolls - Source: - Title: Ironsworn Rulebook - Page: 187 - Tables: - Giant: - Title: - Canonical: Giants - Short: Giant - _idFragment: Giant - Display: - Column of: Ironsworn/Oracles/Name/Other - Table: - - [1, 4, Chony] - - [5, 8, Banda] - - [9, 12, Jochu] - - [13, 16, Kira] - - [17, 20, Khatir] - - [21, 24, Chaidu] - - [25, 28, Atan] - - [29, 32, Buandu] - - [33, 36, Javyn] - - [37, 40, Khashin] - - [41, 44, Bayara] - - [45, 48, Temura] - - [49, 52, Kidha] - - [53, 56, Kathos] - - [57, 60, Tanua] - - [61, 64, Bashtu] - - [65, 68, Jaran] - - [69, 72, Othos] - - [73, 76, Khutan] - - [77, 80, Otaan] - - [81, 84, Martu] - - [85, 88, Baku] - - [89, 92, Tuban] - - [93, 96, Qudan] - - [97, 100, Denua] - Varou: - Title: - Canonical: Varou - Short: Varou - _idFragment: Varou - Display: - Column of: Ironsworn/Oracles/Name/Other - Table: - - [1, 4, Vata] - - [5, 8, Zora] - - [9, 12, Jasna] - - [13, 16, Charna] - - [17, 20, Tana] - - [21, 24, Soveen] - - [25, 28, Radka] - - [29, 32, Zlata] - - [33, 36, Leesla] - - [37, 40, Byna] - - [41, 44, Meeka] - - [45, 48, Iskra] - - [49, 52, Jarek] - - [53, 56, Darva] - - [57, 60, Neda] - - [61, 64, Keha] - - [65, 68, Zhivka] - - [69, 72, Kvata] - - [73, 76, Staysa] - - [77, 80, Evka] - - [81, 84, Vuksha] - - [85, 88, Muko] - - [89, 92, Dreko] - - [93, 96, Aleko] - - [97, 100, Vojan] - Troll: - Title: - Canonical: Trolls - Short: Troll - _idFragment: Troll - Display: - Column of: Ironsworn/Oracles/Name/Other - Table: - - [1, 4, Rattle] - - [5, 8, Scratch] - - [9, 12, Wallow] - - [13, 16, Groak] - - [17, 20, Gimble] - - [21, 24, Scar] - - [25, 28, Cratch] - - [29, 32, Creech] - - [33, 36, Shush] - - [37, 40, Glush] - - [41, 44, Slar] - - [45, 48, Gnash] - - [49, 52, Stoad] - - [53, 56, Grig] - - [57, 60, Bleat] - - [61, 64, Chortle] - - [65, 68, Cluck] - - [69, 72, Slith] - - [73, 76, Mongo] - - [77, 80, Creak] - - [81, 84, Burble] - - [85, 88, Vrusk] - - [89, 92, Snuffle] - - [93, 96, Leech] - - [97, 100, Herk] - Tables: - Elf: - Title: - Canonical: "Oracle 14: Elf Names" - Standard: Elf Names - Short: Elf - _idFragment: Elf - Description: Use this oracle to generate a name for an elf character. - Source: - Title: Ironsworn Rulebook - Page: 186 - Table: - - [1, 2, Arsula] - - [3, 4, Naidita] - - [5, 6, Belesunna] - - [7, 8, Vidarna] - - [9, 10, Ninsunu] - - [11, 12, Balathu] - - [13, 14, Dorosi] - - [15, 16, Gezera] - - [17, 18, Zursan] - - [19, 20, Seleeku] - - [21, 22, Utamara] - - [23, 24, Nebakay] - - [25, 26, Dismashk] - - [27, 28, Mitunu] - - [29, 30, Atani] - - [31, 32, Kinzura] - - [33, 34, Sumula] - - [35, 36, Ukames] - - [37, 38, Ahmeshki] - - [39, 40, Ilsit] - - [41, 42, Mayatanay] - - [43, 44, Etana] - - [45, 46, Gamanna] - - [47, 48, Nessana] - - [49, 50, Uralar] - - [51, 52, Tishetu] - - [53, 54, Leucia] - - [55, 56, Sutahe] - - [57, 58, Dotani] - - [59, 60, Uktannu] - - [61, 62, Retenay] - - [63, 64, Kendalanu] - - [65, 66, Tahuta] - - [67, 68, Mattissa] - - [69, 70, Anatu] - - [71, 72, Aralu] - - [73, 74, Arakhi] - - [75, 76, Ibrahem] - - [77, 78, Sinosu] - - [79, 80, Jemshida] - - [81, 82, Visapni] - - [83, 84, Hullata] - - [85, 86, Sidura] - - [87, 88, Kerihu] - - [89, 90, Ereshki] - - [91, 92, Cybela] - - [93, 94, Anunna] - - [95, 96, Otani] - - [97, 98, Ditani] - - [99, 100, Faraza] +Source: + Authors: + - Shawn Tomkin + Title: Ironsworn Rulebook + License: https://creativecommons.org/licenses/by-sa/4.0/ +Oracle Sets: + Name: + Title: + Canonical: Name + Source: + Authors: + - Shawn Tomkin + Title: "Ironsworn Rulebook" + Page: 184 + License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + Sets: + Ironlander: + Title: + Canonical: "Oracle 13: Ironlander Names" + Standard: Ironlander Names + Short: Ironlander + _idFragment: Ironlander + Description: Use this oracle to quickly generate a name for an Ironlander character. Roll on either table. Surnames are not used in the Ironlands, and names are often gender-neutral. + Source: + Title: Ironsworn Rulebook + Page: 184 + Tables: + A: + Source: + Page: 184 + Title: + Canonical: "" + Standard: Table A + Short: A + _idFragment: A + Table: + - [1, 1, Solana] + - [2, 2, Keelan] + - [3, 3, Cadigan] + - [4, 4, Sola] + - [5, 5, Kodroth] + - [6, 6, Kione] + - [7, 7, Katja] + - [8, 8, Tio] + - [9, 9, Artiga] + - [10, 10, Eos] + - [11, 11, Bastien] + - [12, 12, Elli] + - [13, 13, Maura] + - [14, 14, Haleema] + - [15, 15, Abella] + - [16, 16, Morter] + - [17, 17, Wulan] + - [18, 18, Mai] + - [19, 19, Farina] + - [20, 20, Pearce] + - [21, 21, Wynne] + - [22, 22, Haf] + - [23, 23, Aeddon] + - [24, 24, Khinara] + - [25, 25, Milla] + - [26, 26, Nakata] + - [27, 27, Kynan] + - [28, 28, Kiah] + - [29, 29, Jaggar] + - [30, 30, Beca] + - [31, 31, Ikram] + - [32, 32, Melia] + - [33, 33, Sidan] + - [34, 34, Deshi] + - [35, 35, Tessa] + - [36, 36, Sibila] + - [37, 37, Morien] + - [38, 38, Mona] + - [39, 39, Padma] + - [40, 40, Avella] + - [41, 41, Naila] + - [42, 42, Lio] + - [43, 43, Cera] + - [44, 44, Ithela] + - [45, 45, Zhan] + - [46, 46, Kaivan] + - [47, 47, Valeri] + - [48, 48, Hirsham] + - [49, 49, Pemba] + - [50, 50, Edda] + - [51, 51, Lestara] + - [52, 52, Lago] + - [53, 53, Elstan] + - [54, 54, Saskia] + - [55, 55, Kabeera] + - [56, 56, Caldas] + - [57, 57, Nisus] + - [58, 58, Serene] + - [59, 59, Chenda] + - [60, 60, Themon] + - [61, 61, Erin] + - [62, 62, Alban] + - [63, 63, Parcell] + - [64, 64, Jelma] + - [65, 65, Willa] + - [66, 66, Nadira] + - [67, 67, Gwen] + - [68, 68, Amara] + - [69, 69, Masias] + - [70, 70, Kanno] + - [71, 71, Razeena] + - [72, 72, Mira] + - [73, 73, Perella] + - [74, 74, Myrick] + - [75, 75, Qamar] + - [76, 76, Kormak] + - [77, 77, Zura] + - [78, 78, Zanita] + - [79, 79, Brynn] + - [80, 80, Tegan] + - [81, 81, Pendry] + - [82, 82, Quinn] + - [83, 83, Fanir] + - [84, 84, Glain] + - [85, 85, Emelyn] + - [86, 86, Kendi] + - [87, 87, Althus] + - [88, 88, Leela] + - [89, 89, Ishana] + - [90, 90, Flint] + - [91, 91, Delkash] + - [92, 92, Nia] + - [93, 93, Nan] + - [94, 94, Keeara] + - [95, 95, Katania] + - [96, 96, Morell] + - [97, 97, Temir] + - [98, 98, Bas] + - [99, 99, Sabine] + - [100, 100, Tallus] + B: + Source: + Page: 185 + Title: + Canonical: "" + Standard: Table B + Short: B + _idFragment: B + Table: + - [1, 1, Segura] + - [2, 2, Gethin] + - [3, 3, Bataar] + - [4, 4, Basira] + - [5, 5, Joa] + - [6, 6, Glynn] + - [7, 7, Toran] + - [8, 8, Arasen] + - [9, 9, Kuron] + - [10, 10, Griff] + - [11, 11, Owena] + - [12, 12, Adda] + - [13, 13, Euros] + - [14, 14, Kova] + - [15, 15, Kara] + - [16, 16, Morgan] + - [17, 17, Nanda] + - [18, 18, Tamara] + - [19, 19, Asha] + - [20, 20, Delos] + - [21, 21, Torgan] + - [22, 22, Makari] + - [23, 23, Selva] + - [24, 24, Kimura] + - [25, 25, Rhian] + - [26, 26, Tristan] + - [27, 27, Siorra] + - [28, 28, Sayer] + - [29, 29, Cortina] + - [30, 30, Vesna] + - [31, 31, Kataka] + - [32, 32, Keyshia] + - [33, 33, Mila] + - [34, 34, Lili] + - [35, 35, Vigo] + - [36, 36, Sadia] + - [37, 37, Malik] + - [38, 38, Dag] + - [39, 39, Kuno] + - [40, 40, Reva] + - [41, 41, Kai] + - [42, 42, Kalina] + - [43, 43, Jihan] + - [44, 44, Hennion] + - [45, 45, Abram] + - [46, 46, Aida] + - [47, 47, Myrtle] + - [48, 48, Nekun] + - [49, 49, Menna] + - [50, 50, Tahir] + - [51, 51, Sarria] + - [52, 52, Nakura] + - [53, 53, Akiya] + - [54, 54, Talan] + - [55, 55, Mattick] + - [56, 56, Okoth] + - [57, 57, Khulan] + - [58, 58, Verena] + - [59, 59, Beltran] + - [60, 60, Del] + - [61, 61, Ranna] + - [62, 62, Alina] + - [63, 63, Muna] + - [64, 64, Mura] + - [65, 65, Torrens] + - [66, 66, Yuda] + - [67, 67, Nazmi] + - [68, 68, Ghalen] + - [69, 69, Sarda] + - [70, 70, Shona] + - [71, 71, Kalidas] + - [72, 72, Wena] + - [73, 73, Sendra] + - [74, 74, Kori] + - [75, 75, Setara] + - [76, 76, Lucia] + - [77, 77, Maya] + - [78, 78, Reema] + - [79, 79, Yorath] + - [80, 80, Rhoddri] + - [81, 81, Shekhar] + - [82, 82, Servan] + - [83, 83, Reese] + - [84, 84, Kenrick] + - [85, 85, Indirra] + - [86, 86, Giliana] + - [87, 87, Jebran] + - [88, 88, Kotama] + - [89, 89, Fara] + - [90, 90, Katrin] + - [91, 91, Namba] + - [92, 92, Lona] + - [93, 93, Taylah] + - [94, 94, Kato] + - [95, 95, Esra] + - [96, 96, Eleri] + - [97, 97, Irsia] + - [98, 98, Kayu] + - [99, 99, Bevan] + - [100, 100, Chandra] + Other: + Title: + Canonical: "Oracle 15: Other Names" + Standard: Other Names + Short: Other + _idFragment: Other + Description: Use this oracle to generate names for other firstborn characters. + Display: + Columns: + - Type: dice range + Content: Ironsworn/Oracles/Name/Other/Giants + - Type: string + Content: Ironsworn/Oracles/Name/Other/Giants + Label: Giants + - Type: string + Content: Ironsworn/Oracles/Name/Other/Varou + Label: Varou + - Type: string + Content: Ironsworn/Oracles/Name/Other/Trolls + Label: Trolls + Source: + Title: Ironsworn Rulebook + Page: 187 + Tables: + Giant: + Title: + Canonical: Giants + Short: Giant + _idFragment: Giant + Display: + Column of: Ironsworn/Oracles/Name/Other + Table: + - [1, 4, Chony] + - [5, 8, Banda] + - [9, 12, Jochu] + - [13, 16, Kira] + - [17, 20, Khatir] + - [21, 24, Chaidu] + - [25, 28, Atan] + - [29, 32, Buandu] + - [33, 36, Javyn] + - [37, 40, Khashin] + - [41, 44, Bayara] + - [45, 48, Temura] + - [49, 52, Kidha] + - [53, 56, Kathos] + - [57, 60, Tanua] + - [61, 64, Bashtu] + - [65, 68, Jaran] + - [69, 72, Othos] + - [73, 76, Khutan] + - [77, 80, Otaan] + - [81, 84, Martu] + - [85, 88, Baku] + - [89, 92, Tuban] + - [93, 96, Qudan] + - [97, 100, Denua] + Varou: + Title: + Canonical: Varou + Short: Varou + _idFragment: Varou + Display: + Column of: Ironsworn/Oracles/Name/Other + Table: + - [1, 4, Vata] + - [5, 8, Zora] + - [9, 12, Jasna] + - [13, 16, Charna] + - [17, 20, Tana] + - [21, 24, Soveen] + - [25, 28, Radka] + - [29, 32, Zlata] + - [33, 36, Leesla] + - [37, 40, Byna] + - [41, 44, Meeka] + - [45, 48, Iskra] + - [49, 52, Jarek] + - [53, 56, Darva] + - [57, 60, Neda] + - [61, 64, Keha] + - [65, 68, Zhivka] + - [69, 72, Kvata] + - [73, 76, Staysa] + - [77, 80, Evka] + - [81, 84, Vuksha] + - [85, 88, Muko] + - [89, 92, Dreko] + - [93, 96, Aleko] + - [97, 100, Vojan] + Troll: + Title: + Canonical: Trolls + Short: Troll + _idFragment: Troll + Display: + Column of: Ironsworn/Oracles/Name/Other + Table: + - [1, 4, Rattle] + - [5, 8, Scratch] + - [9, 12, Wallow] + - [13, 16, Groak] + - [17, 20, Gimble] + - [21, 24, Scar] + - [25, 28, Cratch] + - [29, 32, Creech] + - [33, 36, Shush] + - [37, 40, Glush] + - [41, 44, Slar] + - [45, 48, Gnash] + - [49, 52, Stoad] + - [53, 56, Grig] + - [57, 60, Bleat] + - [61, 64, Chortle] + - [65, 68, Cluck] + - [69, 72, Slith] + - [73, 76, Mongo] + - [77, 80, Creak] + - [81, 84, Burble] + - [85, 88, Vrusk] + - [89, 92, Snuffle] + - [93, 96, Leech] + - [97, 100, Herk] + Tables: + Elf: + Title: + Canonical: "Oracle 14: Elf Names" + Standard: Elf Names + Short: Elf + _idFragment: Elf + Description: Use this oracle to generate a name for an elf character. + Source: + Title: Ironsworn Rulebook + Page: 186 + Table: + - [1, 2, Arsula] + - [3, 4, Naidita] + - [5, 6, Belesunna] + - [7, 8, Vidarna] + - [9, 10, Ninsunu] + - [11, 12, Balathu] + - [13, 14, Dorosi] + - [15, 16, Gezera] + - [17, 18, Zursan] + - [19, 20, Seleeku] + - [21, 22, Utamara] + - [23, 24, Nebakay] + - [25, 26, Dismashk] + - [27, 28, Mitunu] + - [29, 30, Atani] + - [31, 32, Kinzura] + - [33, 34, Sumula] + - [35, 36, Ukames] + - [37, 38, Ahmeshki] + - [39, 40, Ilsit] + - [41, 42, Mayatanay] + - [43, 44, Etana] + - [45, 46, Gamanna] + - [47, 48, Nessana] + - [49, 50, Uralar] + - [51, 52, Tishetu] + - [53, 54, Leucia] + - [55, 56, Sutahe] + - [57, 58, Dotani] + - [59, 60, Uktannu] + - [61, 62, Retenay] + - [63, 64, Kendalanu] + - [65, 66, Tahuta] + - [67, 68, Mattissa] + - [69, 70, Anatu] + - [71, 72, Aralu] + - [73, 74, Arakhi] + - [75, 76, Ibrahem] + - [77, 78, Sinosu] + - [79, 80, Jemshida] + - [81, 82, Visapni] + - [83, 84, Hullata] + - [85, 86, Sidura] + - [87, 88, Kerihu] + - [89, 90, Ereshki] + - [91, 92, Cybela] + - [93, 94, Anunna] + - [95, 96, Otani] + - [97, 98, Ditani] + - [99, 100, Faraza] diff --git a/_master-data/Ironsworn/Oracles/Place.yaml b/_master-data/Ironsworn/Oracles/Place.yaml index cd1b3682d..c1d089304 100644 --- a/_master-data/Ironsworn/Oracles/Place.yaml +++ b/_master-data/Ironsworn/Oracles/Place.yaml @@ -1,179 +1,185 @@ -Place: - Title: - Canonical: Place - Source: - Authors: - - Shawn Tomkin - Title: Ironsworn Rulebook - Page: 176 - License: https://creativecommons.org/licenses/by-nc-sa/4.0/ - Tables: - Region: - Title: - Canonical: "Oracle 3: Region" - Standard: Region - _idFragment: Region - Summary: Use this oracle when you want to randomly select a region with the Ironlands. - Source: - Title: Ironsworn Rulebook - Page: 176 - Table: - - [1, 12, "[Barrier Islands](Ironsworn/Regions/Barrier_Islands)", Suggestions: {Regions: [Ironsworn/Regions/Barrier_Islands]}] - - [13, 24, "[Ragged Coast](Ironsworn/Regions/Ragged_Coast)", Suggestions: {Regions: [Ironsworn/Regions/Ragged_Coast]}] - - [25, 34, "[Deep Wilds](Ironsworn/Regions/Deep_Wilds)", Suggestions: {Regions: [Ironsworn/Regions/Deep_Wilds]}] - - [35, 46, "[Flooded Lands](Ironsworn/Regions/Flooded_Lands)", Suggestions: {Regions: [Ironsworn/Regions/Flooded_Lands]}] - - [47, 60, "[Havens](Ironsworn/Regions/Havens)", Suggestions: {Regions: [Ironsworn/Regions/Havens]}] - - [61, 72, "[Hinterlands](Ironsworn/Regions/Hinterlands)", Suggestions: {Regions: [Ironsworn/Regions/Hinterlands]}] - - [73, 84, "[Tempest Hills](Ironsworn/Regions/Tempest_Hills)", Suggestions: {Regions: [Ironsworn/Regions/Tempest_Hills]}] - - [85, 94, "[Veiled Mountains](Ironsworn/Regions/Veiled_Mountains)", Suggestions: {Regions: [Ironsworn/Regions/Veiled_Mountains]}] - - [95, 99, "[Shattered Wastes](Ironsworn/Regions/Shattered_Wastes)", Suggestions: {Regions: [Ironsworn/Regions/Shattered_Wastes]}] - - [100, 100, Elsewhere] - Location: - Title: - Canonical: "Oracle 4: Location" - Standard: Location - _idFragment: Location - Summary: Use this oracle when traveling to generate a point-of-interest or to answer a question about a place where someone or something can be found. - Source: - Title: Ironsworn Rulebook - Page: 176 - Table: - - [1, 1, Hideout] - - [2, 2, Ruin] - - [3, 3, Mine] - - [4, 4, Waste] - - [5, 5, Mystical Site] - - [6, 6, Path] - - [7, 7, Outpost] - - [8, 8, Wall] - - [9, 9, Battlefield] - - [10, 10, Hovel] - - [11, 11, Spring] - - [12, 12, Lair] - - [13, 13, Fort] - - [14, 14, Bridge] - - [15, 15, Camp] - - [16, 16, Cairn/Grave] - - [17, 18, Caravan] - - [19, 20, Waterfall] - - [21, 22, Cave] - - [23, 24, Swamp] - - [25, 26, Fen] - - [27, 28, Ravine] - - [29, 30, Road] - - [31, 32, Tree] - - [33, 34, Pond] - - [35, 36, Fields] - - [37, 38, Marsh] - - [39, 40, Steading] - - [41, 42, Rapids] - - [43, 44, Pass] - - [45, 46, Trail] - - [47, 48, Glade] - - [49, 50, Plain] - - [51, 52, Ridge] - - [53, 54, Cliff] - - [55, 56, Grove] - - [57, 58, Village] - - [59, 60, Moor] - - [61, 62, Thicket] - - [63, 64, River Ford] - - [65, 66, Valley] - - [67, 68, Bay/Fjord] - - [69, 70, Foothills] - - [71, 72, Lake] - - [73, 75, River] - - [76, 79, Forest] - - [80, 83, Coast] - - [84, 88, Hill] - - [89, 93, Mountain] - - [94, 99, Woods] - - [100, 100, Anomaly] - Coastal Waters Location: - Title: - Canonical: "Oracle 5: Coastal Waters Location" - Standard: Coastal Waters Location - _idFragment: Coastal Waters Location - Summary: Use this oracle to identify a point-of-interest or destination when you are traveling by ship or boat. - Source: - Title: Ironsworn Rulebook - Page: 176 - Table: - - [1, 1, Fleet] - - [2, 2, Sargassum] - - [3, 3, Flotsam] - - [4, 4, Mystical Site] - - [5, 5, Lair] - - [6, 10, Wreck] - - [11, 15, Harbor] - - [16, 23, Ship/Boat] - - [24, 30, Rocks] - - [31, 38, Fjord] - - [39, 46, Estuary] - - [47, 54, Cove] - - [55, 62, Bay] - - [63, 70, Ice] - - [71, 85, Island] - - [86, 99, Open Water] - - [100, 100, Anomaly] - Descriptor: - Title: - Canonical: "Oracle 6: Location Descriptor" - Standard: Location Descriptor - Short: Descriptor - _idFragment: Descriptor - Summary: Use this oracle to add detail to the Location or Coastal Waters Location oracles, or by itself to generate a description of a location. Roll more than once for extra detail. - Source: - Title: Ironsworn Rulebook - Page: 177 - Table: - - [1, 2, High] - - [3, 4, Remote] - - [5, 6, Exposed] - - [7, 8, Small] - - [9, 10, Broken] - - [11, 12, Diverse] - - [13, 14, Rough] - - [15, 16, Dark] - - [17, 18, Shadowy] - - [19, 20, Contested] - - [21, 22, Grim] - - [23, 24, Wild] - - [25, 26, Fertile] - - [27, 28, Blocked] - - [29, 30, Ancient] - - [31, 32, Perilous] - - [33, 34, Hidden] - - [35, 36, Occupied] - - [37, 38, Rich] - - [39, 40, Big] - - [41, 42, Savage] - - [43, 44, Defended] - - [45, 46, Withered] - - [47, 48, Mystical] - - [49, 50, Inaccessible] - - [51, 52, Protected] - - [53, 54, Abandoned] - - [55, 56, Wide] - - [57, 58, Foul] - - [59, 60, Dead] - - [61, 62, Ruined] - - [63, 64, Barren] - - [65, 66, Cold] - - [67, 68, Blighted] - - [69, 70, Low] - - [71, 72, Beautiful] - - [73, 74, Abundant] - - [75, 76, Lush] - - [77, 78, Flooded] - - [79, 80, Empty] - - [81, 82, Strange] - - [83, 84, Corrupted] - - [85, 86, Peaceful] - - [87, 88, Forgotten] - - [89, 90, Expansive] - - [91, 92, Settled] - - [93, 94, Dense] - - [95, 96, Civilized] - - [97, 98, Desolate] - - [99, 100, Isolated] +Source: + Authors: + - Shawn Tomkin + Title: Ironsworn Rulebook + License: https://creativecommons.org/licenses/by-sa/4.0/ +Oracle Sets: + Place: + Title: + Canonical: Place + Source: + Authors: + - Shawn Tomkin + Title: Ironsworn Rulebook + Page: 176 + License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + Tables: + Region: + Title: + Canonical: "Oracle 3: Region" + Standard: Region + _idFragment: Region + Summary: Use this oracle when you want to randomly select a region with the Ironlands. + Source: + Title: Ironsworn Rulebook + Page: 176 + Table: + - [1, 12, "[Barrier Islands](Ironsworn/Regions/Barrier_Islands)", Suggestions: {Regions: [Ironsworn/Regions/Barrier_Islands]}] + - [13, 24, "[Ragged Coast](Ironsworn/Regions/Ragged_Coast)", Suggestions: {Regions: [Ironsworn/Regions/Ragged_Coast]}] + - [25, 34, "[Deep Wilds](Ironsworn/Regions/Deep_Wilds)", Suggestions: {Regions: [Ironsworn/Regions/Deep_Wilds]}] + - [35, 46, "[Flooded Lands](Ironsworn/Regions/Flooded_Lands)", Suggestions: {Regions: [Ironsworn/Regions/Flooded_Lands]}] + - [47, 60, "[Havens](Ironsworn/Regions/Havens)", Suggestions: {Regions: [Ironsworn/Regions/Havens]}] + - [61, 72, "[Hinterlands](Ironsworn/Regions/Hinterlands)", Suggestions: {Regions: [Ironsworn/Regions/Hinterlands]}] + - [73, 84, "[Tempest Hills](Ironsworn/Regions/Tempest_Hills)", Suggestions: {Regions: [Ironsworn/Regions/Tempest_Hills]}] + - [85, 94, "[Veiled Mountains](Ironsworn/Regions/Veiled_Mountains)", Suggestions: {Regions: [Ironsworn/Regions/Veiled_Mountains]}] + - [95, 99, "[Shattered Wastes](Ironsworn/Regions/Shattered_Wastes)", Suggestions: {Regions: [Ironsworn/Regions/Shattered_Wastes]}] + - [100, 100, Elsewhere] + Location: + Title: + Canonical: "Oracle 4: Location" + Standard: Location + _idFragment: Location + Summary: Use this oracle when traveling to generate a point-of-interest or to answer a question about a place where someone or something can be found. + Source: + Title: Ironsworn Rulebook + Page: 176 + Table: + - [1, 1, Hideout] + - [2, 2, Ruin] + - [3, 3, Mine] + - [4, 4, Waste] + - [5, 5, Mystical Site] + - [6, 6, Path] + - [7, 7, Outpost] + - [8, 8, Wall] + - [9, 9, Battlefield] + - [10, 10, Hovel] + - [11, 11, Spring] + - [12, 12, Lair] + - [13, 13, Fort] + - [14, 14, Bridge] + - [15, 15, Camp] + - [16, 16, Cairn/Grave] + - [17, 18, Caravan] + - [19, 20, Waterfall] + - [21, 22, Cave] + - [23, 24, Swamp] + - [25, 26, Fen] + - [27, 28, Ravine] + - [29, 30, Road] + - [31, 32, Tree] + - [33, 34, Pond] + - [35, 36, Fields] + - [37, 38, Marsh] + - [39, 40, Steading] + - [41, 42, Rapids] + - [43, 44, Pass] + - [45, 46, Trail] + - [47, 48, Glade] + - [49, 50, Plain] + - [51, 52, Ridge] + - [53, 54, Cliff] + - [55, 56, Grove] + - [57, 58, Village] + - [59, 60, Moor] + - [61, 62, Thicket] + - [63, 64, River Ford] + - [65, 66, Valley] + - [67, 68, Bay/Fjord] + - [69, 70, Foothills] + - [71, 72, Lake] + - [73, 75, River] + - [76, 79, Forest] + - [80, 83, Coast] + - [84, 88, Hill] + - [89, 93, Mountain] + - [94, 99, Woods] + - [100, 100, Anomaly] + Coastal Waters Location: + Title: + Canonical: "Oracle 5: Coastal Waters Location" + Standard: Coastal Waters Location + _idFragment: Coastal Waters Location + Summary: Use this oracle to identify a point-of-interest or destination when you are traveling by ship or boat. + Source: + Title: Ironsworn Rulebook + Page: 176 + Table: + - [1, 1, Fleet] + - [2, 2, Sargassum] + - [3, 3, Flotsam] + - [4, 4, Mystical Site] + - [5, 5, Lair] + - [6, 10, Wreck] + - [11, 15, Harbor] + - [16, 23, Ship/Boat] + - [24, 30, Rocks] + - [31, 38, Fjord] + - [39, 46, Estuary] + - [47, 54, Cove] + - [55, 62, Bay] + - [63, 70, Ice] + - [71, 85, Island] + - [86, 99, Open Water] + - [100, 100, Anomaly] + Descriptor: + Title: + Canonical: "Oracle 6: Location Descriptor" + Standard: Location Descriptor + Short: Descriptor + _idFragment: Descriptor + Summary: Use this oracle to add detail to the Location or Coastal Waters Location oracles, or by itself to generate a description of a location. Roll more than once for extra detail. + Source: + Title: Ironsworn Rulebook + Page: 177 + Table: + - [1, 2, High] + - [3, 4, Remote] + - [5, 6, Exposed] + - [7, 8, Small] + - [9, 10, Broken] + - [11, 12, Diverse] + - [13, 14, Rough] + - [15, 16, Dark] + - [17, 18, Shadowy] + - [19, 20, Contested] + - [21, 22, Grim] + - [23, 24, Wild] + - [25, 26, Fertile] + - [27, 28, Blocked] + - [29, 30, Ancient] + - [31, 32, Perilous] + - [33, 34, Hidden] + - [35, 36, Occupied] + - [37, 38, Rich] + - [39, 40, Big] + - [41, 42, Savage] + - [43, 44, Defended] + - [45, 46, Withered] + - [47, 48, Mystical] + - [49, 50, Inaccessible] + - [51, 52, Protected] + - [53, 54, Abandoned] + - [55, 56, Wide] + - [57, 58, Foul] + - [59, 60, Dead] + - [61, 62, Ruined] + - [63, 64, Barren] + - [65, 66, Cold] + - [67, 68, Blighted] + - [69, 70, Low] + - [71, 72, Beautiful] + - [73, 74, Abundant] + - [75, 76, Lush] + - [77, 78, Flooded] + - [79, 80, Empty] + - [81, 82, Strange] + - [83, 84, Corrupted] + - [85, 86, Peaceful] + - [87, 88, Forgotten] + - [89, 90, Expansive] + - [91, 92, Settled] + - [93, 94, Dense] + - [95, 96, Civilized] + - [97, 98, Desolate] + - [99, 100, Isolated] diff --git a/_master-data/Ironsworn/Oracles/Settlement.yaml b/_master-data/Ironsworn/Oracles/Settlement.yaml index f45c14031..484b52212 100644 --- a/_master-data/Ironsworn/Oracles/Settlement.yaml +++ b/_master-data/Ironsworn/Oracles/Settlement.yaml @@ -1,347 +1,353 @@ -Settlement: - Title: - Canonical: Settlement - Source: - Authors: - - Shawn Tomkin - Title: Ironsworn Rulebook - Page: 178 - License: https://creativecommons.org/licenses/by-nc-sa/4.0/ - Tables: - Trouble: - Title: - Canonical: "Oracle 9: Settlement Trouble" - Standard: Settlement Trouble - Short: Trouble - _idFragment: Trouble - Summary: Use this table to generate a narrative hook for a problem faced by a community. This oracle can help inspire a vow for your character or serve as a prompt for a trouble you encounter when you interact with a settlement. - Source: - Page: 181 - Table: - - [1, 2, Outsiders rejected] - - [3, 4, Dangerous discovery] - - [5, 6, Dreadful omens] - - [7, 8, Natural disaster] - - [9, 10, Old wounds reopened] - - [11, 12, Important object is lost] - - [13, 14, Someone is captured] - - [15, 16, Mysterious phenomenon] - - [17, 18, Revolt against a leader] - - [19, 20, Vengeful outcast] - - [21, 22, Rival settlement] - - [23, 24, Nature strikes back] - - [25, 26, Someone is missing] - - [27, 28, Production halts] - - [29, 30, Mysterious murders] - - [31, 32, Debt comes due] - - [33, 34, Unjust leadership] - - [35, 36, Disastrous accident] - - [37, 38, In league with the enemy] - - [39, 40, Raiders prey on the weak] - - [41, 42, Cursed past] - - [43, 44, An innocent is accused] - - [45, 46, Corrupted by dark magic] - - [47, 48, Isolated by brutal weather] - - [49, 50, Provisions are scarce] - - [51, 52, Sickness run amok] - - [53, 54, Allies become enemies] - - [55, 56, Attack is imminent] - - [57, 58, Lost caravan] - - [59, 60, Dark secret revealed] - - [61, 62, Urgent expedition] - - [63, 64, A leader falls] - - [65, 66, Families in conflict] - - [67, 68, Incompetent leadership] - - [69, 70, Reckless warmongering] - - [71, 72, Beast on the hunt] - - [73, 74, Betrayed from within] - - [75, 76, Broken truce] - - [77, 78, Wrathful haunt] - - [79, 80, Conflict with firstborn] - - [81, 82, Trade route blocked] - - [83, 84, In the crossfire] - - [85, 86, Stranger causes discord] - - [87, 88, Important event threatened] - - [89, 90, Dangerous tradition] - - [91, 100, *result:RollTwice] - Sets: - Name: - Title: - Canonical: "Oracle 7: Settlement Name" - Standard: Settlement Name - Short: Name - _idFragment: Name - Source: - Page: 178 - Tables: - Landscape Feature: - Title: - Canonical: A feature of the landscape - Standard: Landscape Feature - _idFragment: Landscape Feature - Summary: &Landscape_Feature |- - "**A feature of the landscape.** Envision what it is. What makes it unusual or distinctive?", - Table: - - [1, 10, Highmount] - - [11, 20, Brackwater] - - [21, 30, Frostwood] - - [31, 40, Redcrest] - - [41, 50, Grimtree] - - [51, 60, Stoneford] - - [61, 70, Deepwater] - - [71, 80, Whitefall] - - [81, 90, Graycliff] - - [91, 100, Three Rivers] - Manmade Edifice: - Title: - Canonical: A manmade edifice - Standard: Manmade Edifice - _idFragment: Manmade Edifice - Summary: &Manmade_Edifice |- - **A manmade edifice.** What is it? Why is it important to this settlement’s history?, - Table: - - [1, 10, Whitebridge] - - [11, 20, Lonefort] - - [21, 30, Highcairn] - - [31, 40, Redhall] - - [41, 50, Darkwell] - - [51, 60, Timberwall] - - [61, 70, Stonetower] - - [71, 80, Thornhall] - - [81, 90, Cinderhome] - - [91, 100, Fallowfield] - Creature: - Title: - Canonical: A creature - Standard: Creature - _idFragment: Creature - Summary: &Creature |- - **A creature.** Why have the people of this settlement chosen this creature as their totem? How is it represented in art or rituals? - Table: - - [1, 10, Ravencliff] - - [11, 20, Bearmark] - - [21, 30, Wolfcrag] - - [31, 40, Eaglespire] - - [41, 50, Wyvern's Rest] - - [51, 60, Boarwood] - - [61, 70, Foxhollow] - - [71, 80, Elderwatch] - - [81, 90, Elkfield] - - [91, 100, Dragonshadow] - Historical Event: - Title: - Canonical: A historical event - Standard: Historical Event - _idFragment: Historical Event - Summary: &Historical_Event |- - **A historical event.** What happened here? What place or practice commemorates this event? - Table: - - [1, 10, Swordbreak] - - [11, 20, Fool's Fall] - - [21, 30, Firstmeet] - - [31, 40, Brokenhelm] - - [41, 50, Mournhaunt] - - [51, 60, Olgar's Stand] - - [61, 70, Lostwater] - - [71, 80, Rojirra's Lament] - - [81, 90, Lastmarch] - - [91, 100, Rockfall] - Old World Language: - Title: - Canonical: A word in an Old World language - Standard: Old World Language - _idFragment: Old World Language - Summary: &Old_World_Language |- - **A word in an Old World language.** What culture is represented by this word? What does it translate to? - Table: - - [1, 10, Abon] - - [11, 20, Daveza] - - [21, 30, Damula] - - [31, 40, Essus] - - [41, 50, Sina] - - [51, 60, Kazeera] - - [61, 70, Khazu] - - [71, 80, Sova] - - [81, 90, Nabuma] - - [91, 100, Tiza] - Environmental Aspect: - Title: - Canonical: A season or environmental aspect - Standard: Environmental Aspect - _idFragment: Environmental Aspect - Summary: &Environmental_Aspect |- - **A season or environmental aspect.** What influence does the weather have on this settlement? - Table: - - [1, 10, Winterhome] - - [11, 20, Windhaven] - - [21, 30, Stormrest] - - [31, 40, Bleakfrost] - - [41, 50, Springtide] - - [51, 60, Duskmoor] - - [61, 70, Frostcrag] - - [71, 80, Springbrook] - - [81, 90, Icebreak] - - [91, 100, Summersong] - Something Else: - Title: - Canonical: Something Else - Table: - - [1, 10, A trade good (Ironhome)] - - [11, 20, An Old World city (New Arkesh)] - - [21, 30, A founder or famous settler (Kei's Hall)] - - [31, 40, A god (Elisora)] - - [41, 50, A historical item (Blackhelm)] - - [51, 60, A firstborn race (Elfbrook)] - - [61, 70, An elvish word or name (Nessana)] - - [71, 80, A mythic belief or event (Ghostwalk)] - - [81, 90, A positive term (Hope)] - - [91, 100, A negative term (Forsaken)] - Quick Name: - Title: - Canonical: "Oracle 8: Quick Settlement Name Generator" - Standard: Quick Settlement Name Generator - Short: Quick Name - _idFragment: Quick Name - Summary: Use this oracle as a simpler alternative for settlement names. Roll once for the prefix, and once for the suffix. If the combination doesn’t quite work, look at adjacent rows or reverse the digits. - Display: - Columns: - - Type: dice range - Content: Ironsworn/Oracles/Settlement/Quick_Name/Prefix - - Type: string - Content: Ironsworn/Oracles/Settlement/Quick_Name/Prefix - Label: Prefix - - Type: string - Content: Ironsworn/Oracles/Settlement/Quick_Name/Suffix - Label: Suffix - Usage: - Roll template: - Result: "{{Ironsworn/Oracles/Settlement/Quick_Name/Prefix}}{{Ironsworn/Oracles/Settlement/Quick_Name/Suffix}}" - Source: - Page: 180 - Tables: - Prefix: - Title: - Canonical: Prefix - Display: - Column of: Ironsworn/Oracles/Settlement/Quick_Name - Table: - # - [1, 4, Bleak-] - # - [5, 8, Green-] - # - [9, 12, Wolf-] - # - [13, 16, Raven-] - # - [17, 20, Gray-] - # - [21, 24, Red-] - # - [25, 28, Axe-] - # - [29, 32, Great-] - # - [33, 36, Wood-] - # - [37, 40, Low-] - # - [41, 44, White-] - # - [45, 48, Storm-] - # - [49, 52, Black-] - # - [53, 56, Mourn-] - # - [57, 60, New-] - # - [61, 64, Stone-] - # - [65, 68, Grim-] - # - [69, 72, Lost-] - # - [73, 76, High-] - # - [77, 80, Rock-] - # - [81, 84, Shield-] - # - [85, 88, Sword-] - # - [89, 92, Frost-] - # - [93, 96, Thorn-] - # - [97, 100, Long-] - - [1, 4, Bleak] - - [5, 8, Green] - - [9, 12, Wolf] - - [13, 16, Raven] - - [17, 20, Gray] - - [21, 24, Red] - - [25, 28, Axe] - - [29, 32, Great] - - [33, 36, Wood] - - [37, 40, Low] - - [41, 44, White] - - [45, 48, Storm] - - [49, 52, Black] - - [53, 56, Mourn] - - [57, 60, New] - - [61, 64, Stone] - - [65, 68, Grim] - - [69, 72, Lost] - - [73, 76, High] - - [77, 80, Rock] - - [81, 84, Shield] - - [85, 88, Sword] - - [89, 92, Frost] - - [93, 96, Thorn] - - [97, 100, Long] - Suffix: - Title: - Canonical: Suffix - Display: - Column of: Ironsworn/Oracles/Settlement/Quick_Name - Table: - # - [1, 4, -moor] - # - [5, 8, -ford] - # - [9, 12, -crag] - # - [13, 16, -watch] - # - [17, 20, -hope] - # - [21, 24, -wood] - # - [25, 28, -ridge] - # - [29, 32, -stone] - # - [33, 36, -haven] - # - [37, 40, -fall(s)] - # - [41, 44, -river] - # - [45, 48, -field] - # - [49, 52, -hill] - # - [53, 56, -bridge] - # - [57, 60, -mark] - # - [61, 64, -cairn] - # - [65, 68, -land] - # - [69, 72, -hall] - # - [73, 76, -mount] - # - [77, 80, -rock] - # - [81, 84, -brook] - # - [85, 88, -barrow] - # - [89, 92, -stead] - # - [93, 96, -home] - # - [97, 100, -wick] - - [1, 4, moor] - - [5, 8, ford] - - [9, 12, crag] - - [13, 16, watch] - - [17, 20, hope] - - [21, 24, wood] - - [25, 28, ridge] - - [29, 32, stone] - - [33, 36, haven] - - [37, 40, fall(s)] - - [41, 44, river] - - [45, 48, field] - - [49, 52, hill] - - [53, 56, bridge] - - [57, 60, mark] - - [61, 64, cairn] - - [65, 68, land] - - [69, 72, hall] - - [73, 76, mount] - - [77, 80, rock] - - [81, 84, brook] - - [85, 88, barrow] - - [89, 92, stead] - - [93, 96, home] - - [97, 100, wick] - Theme: - Title: - Canonical: Settlement Name - Standard: Name Theme - Short: Theme - _idFragment: Theme - Table: - - [ 1, 15, *Landscape_Feature, Oracle rolls: [Ironsworn/Oracles/Settlement/Name/Landscape_Feature] ] - - [ 16, 30, *Manmade_Edifice, Oracle rolls: [Ironsworn/Oracles/Settlement/Name/Manmade_Edifice] ] - - [ 31, 45, *Creature, Oracle rolls: [Ironsworn/Oracles/Settlement/Name/Creature] ] - - [ 46, 60, *Historical_Event, Oracle rolls: [Ironsworn/Oracles/Settlement/Name/Historical_Event] ] - - [ 61, 75, *Old_World_Language, Oracle rolls: [Ironsworn/Oracles/Settlement/Name/Old_World_Language] ] - - [ 76, 90, *Environmental_Aspect, Oracle rolls: [Ironsworn/Oracles/Settlement/Name/Environmental_Aspect] ] - - [ 91, 100, "Something Else...",Oracle rolls: [Ironsworn/Oracles/Settlement/Name/Something_Else]] +Source: + Authors: + - Shawn Tomkin + Title: Ironsworn Rulebook + License: https://creativecommons.org/licenses/by-sa/4.0/ +Oracle Sets: + Settlement: + Title: + Canonical: Settlement + Source: + Authors: + - Shawn Tomkin + Title: Ironsworn Rulebook + Page: 178 + License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + Tables: + Trouble: + Title: + Canonical: "Oracle 9: Settlement Trouble" + Standard: Settlement Trouble + Short: Trouble + _idFragment: Trouble + Summary: Use this table to generate a narrative hook for a problem faced by a community. This oracle can help inspire a vow for your character or serve as a prompt for a trouble you encounter when you interact with a settlement. + Source: + Page: 181 + Table: + - [1, 2, Outsiders rejected] + - [3, 4, Dangerous discovery] + - [5, 6, Dreadful omens] + - [7, 8, Natural disaster] + - [9, 10, Old wounds reopened] + - [11, 12, Important object is lost] + - [13, 14, Someone is captured] + - [15, 16, Mysterious phenomenon] + - [17, 18, Revolt against a leader] + - [19, 20, Vengeful outcast] + - [21, 22, Rival settlement] + - [23, 24, Nature strikes back] + - [25, 26, Someone is missing] + - [27, 28, Production halts] + - [29, 30, Mysterious murders] + - [31, 32, Debt comes due] + - [33, 34, Unjust leadership] + - [35, 36, Disastrous accident] + - [37, 38, In league with the enemy] + - [39, 40, Raiders prey on the weak] + - [41, 42, Cursed past] + - [43, 44, An innocent is accused] + - [45, 46, Corrupted by dark magic] + - [47, 48, Isolated by brutal weather] + - [49, 50, Provisions are scarce] + - [51, 52, Sickness run amok] + - [53, 54, Allies become enemies] + - [55, 56, Attack is imminent] + - [57, 58, Lost caravan] + - [59, 60, Dark secret revealed] + - [61, 62, Urgent expedition] + - [63, 64, A leader falls] + - [65, 66, Families in conflict] + - [67, 68, Incompetent leadership] + - [69, 70, Reckless warmongering] + - [71, 72, Beast on the hunt] + - [73, 74, Betrayed from within] + - [75, 76, Broken truce] + - [77, 78, Wrathful haunt] + - [79, 80, Conflict with firstborn] + - [81, 82, Trade route blocked] + - [83, 84, In the crossfire] + - [85, 86, Stranger causes discord] + - [87, 88, Important event threatened] + - [89, 90, Dangerous tradition] + - [91, 100, *result:RollTwice] + Sets: + Name: + Title: + Canonical: "Oracle 7: Settlement Name" + Standard: Settlement Name + Short: Name + _idFragment: Name + Source: + Page: 178 + Tables: + Landscape Feature: + Title: + Canonical: A feature of the landscape + Standard: Landscape Feature + _idFragment: Landscape Feature + Summary: &Landscape_Feature |- + "**A feature of the landscape.** Envision what it is. What makes it unusual or distinctive?", + Table: + - [1, 10, Highmount] + - [11, 20, Brackwater] + - [21, 30, Frostwood] + - [31, 40, Redcrest] + - [41, 50, Grimtree] + - [51, 60, Stoneford] + - [61, 70, Deepwater] + - [71, 80, Whitefall] + - [81, 90, Graycliff] + - [91, 100, Three Rivers] + Manmade Edifice: + Title: + Canonical: A manmade edifice + Standard: Manmade Edifice + _idFragment: Manmade Edifice + Summary: &Manmade_Edifice |- + **A manmade edifice.** What is it? Why is it important to this settlement’s history?, + Table: + - [1, 10, Whitebridge] + - [11, 20, Lonefort] + - [21, 30, Highcairn] + - [31, 40, Redhall] + - [41, 50, Darkwell] + - [51, 60, Timberwall] + - [61, 70, Stonetower] + - [71, 80, Thornhall] + - [81, 90, Cinderhome] + - [91, 100, Fallowfield] + Creature: + Title: + Canonical: A creature + Standard: Creature + _idFragment: Creature + Summary: &Creature |- + **A creature.** Why have the people of this settlement chosen this creature as their totem? How is it represented in art or rituals? + Table: + - [1, 10, Ravencliff] + - [11, 20, Bearmark] + - [21, 30, Wolfcrag] + - [31, 40, Eaglespire] + - [41, 50, Wyvern's Rest] + - [51, 60, Boarwood] + - [61, 70, Foxhollow] + - [71, 80, Elderwatch] + - [81, 90, Elkfield] + - [91, 100, Dragonshadow] + Historical Event: + Title: + Canonical: A historical event + Standard: Historical Event + _idFragment: Historical Event + Summary: &Historical_Event |- + **A historical event.** What happened here? What place or practice commemorates this event? + Table: + - [1, 10, Swordbreak] + - [11, 20, Fool's Fall] + - [21, 30, Firstmeet] + - [31, 40, Brokenhelm] + - [41, 50, Mournhaunt] + - [51, 60, Olgar's Stand] + - [61, 70, Lostwater] + - [71, 80, Rojirra's Lament] + - [81, 90, Lastmarch] + - [91, 100, Rockfall] + Old World Language: + Title: + Canonical: A word in an Old World language + Standard: Old World Language + _idFragment: Old World Language + Summary: &Old_World_Language |- + **A word in an Old World language.** What culture is represented by this word? What does it translate to? + Table: + - [1, 10, Abon] + - [11, 20, Daveza] + - [21, 30, Damula] + - [31, 40, Essus] + - [41, 50, Sina] + - [51, 60, Kazeera] + - [61, 70, Khazu] + - [71, 80, Sova] + - [81, 90, Nabuma] + - [91, 100, Tiza] + Environmental Aspect: + Title: + Canonical: A season or environmental aspect + Standard: Environmental Aspect + _idFragment: Environmental Aspect + Summary: &Environmental_Aspect |- + **A season or environmental aspect.** What influence does the weather have on this settlement? + Table: + - [1, 10, Winterhome] + - [11, 20, Windhaven] + - [21, 30, Stormrest] + - [31, 40, Bleakfrost] + - [41, 50, Springtide] + - [51, 60, Duskmoor] + - [61, 70, Frostcrag] + - [71, 80, Springbrook] + - [81, 90, Icebreak] + - [91, 100, Summersong] + Something Else: + Title: + Canonical: Something Else + Table: + - [1, 10, A trade good (Ironhome)] + - [11, 20, An Old World city (New Arkesh)] + - [21, 30, A founder or famous settler (Kei's Hall)] + - [31, 40, A god (Elisora)] + - [41, 50, A historical item (Blackhelm)] + - [51, 60, A firstborn race (Elfbrook)] + - [61, 70, An elvish word or name (Nessana)] + - [71, 80, A mythic belief or event (Ghostwalk)] + - [81, 90, A positive term (Hope)] + - [91, 100, A negative term (Forsaken)] + Quick Name: + Title: + Canonical: "Oracle 8: Quick Settlement Name Generator" + Standard: Quick Settlement Name Generator + Short: Quick Name + _idFragment: Quick Name + Summary: Use this oracle as a simpler alternative for settlement names. Roll once for the prefix, and once for the suffix. If the combination doesn’t quite work, look at adjacent rows or reverse the digits. + Display: + Columns: + - Type: dice range + Content: Ironsworn/Oracles/Settlement/Quick_Name/Prefix + - Type: string + Content: Ironsworn/Oracles/Settlement/Quick_Name/Prefix + Label: Prefix + - Type: string + Content: Ironsworn/Oracles/Settlement/Quick_Name/Suffix + Label: Suffix + Usage: + Roll template: + Result: "{{Ironsworn/Oracles/Settlement/Quick_Name/Prefix}}{{Ironsworn/Oracles/Settlement/Quick_Name/Suffix}}" + Source: + Page: 180 + Tables: + Prefix: + Title: + Canonical: Prefix + Display: + Column of: Ironsworn/Oracles/Settlement/Quick_Name + Table: + # - [1, 4, Bleak-] + # - [5, 8, Green-] + # - [9, 12, Wolf-] + # - [13, 16, Raven-] + # - [17, 20, Gray-] + # - [21, 24, Red-] + # - [25, 28, Axe-] + # - [29, 32, Great-] + # - [33, 36, Wood-] + # - [37, 40, Low-] + # - [41, 44, White-] + # - [45, 48, Storm-] + # - [49, 52, Black-] + # - [53, 56, Mourn-] + # - [57, 60, New-] + # - [61, 64, Stone-] + # - [65, 68, Grim-] + # - [69, 72, Lost-] + # - [73, 76, High-] + # - [77, 80, Rock-] + # - [81, 84, Shield-] + # - [85, 88, Sword-] + # - [89, 92, Frost-] + # - [93, 96, Thorn-] + # - [97, 100, Long-] + - [1, 4, Bleak] + - [5, 8, Green] + - [9, 12, Wolf] + - [13, 16, Raven] + - [17, 20, Gray] + - [21, 24, Red] + - [25, 28, Axe] + - [29, 32, Great] + - [33, 36, Wood] + - [37, 40, Low] + - [41, 44, White] + - [45, 48, Storm] + - [49, 52, Black] + - [53, 56, Mourn] + - [57, 60, New] + - [61, 64, Stone] + - [65, 68, Grim] + - [69, 72, Lost] + - [73, 76, High] + - [77, 80, Rock] + - [81, 84, Shield] + - [85, 88, Sword] + - [89, 92, Frost] + - [93, 96, Thorn] + - [97, 100, Long] + Suffix: + Title: + Canonical: Suffix + Display: + Column of: Ironsworn/Oracles/Settlement/Quick_Name + Table: + # - [1, 4, -moor] + # - [5, 8, -ford] + # - [9, 12, -crag] + # - [13, 16, -watch] + # - [17, 20, -hope] + # - [21, 24, -wood] + # - [25, 28, -ridge] + # - [29, 32, -stone] + # - [33, 36, -haven] + # - [37, 40, -fall(s)] + # - [41, 44, -river] + # - [45, 48, -field] + # - [49, 52, -hill] + # - [53, 56, -bridge] + # - [57, 60, -mark] + # - [61, 64, -cairn] + # - [65, 68, -land] + # - [69, 72, -hall] + # - [73, 76, -mount] + # - [77, 80, -rock] + # - [81, 84, -brook] + # - [85, 88, -barrow] + # - [89, 92, -stead] + # - [93, 96, -home] + # - [97, 100, -wick] + - [1, 4, moor] + - [5, 8, ford] + - [9, 12, crag] + - [13, 16, watch] + - [17, 20, hope] + - [21, 24, wood] + - [25, 28, ridge] + - [29, 32, stone] + - [33, 36, haven] + - [37, 40, fall(s)] + - [41, 44, river] + - [45, 48, field] + - [49, 52, hill] + - [53, 56, bridge] + - [57, 60, mark] + - [61, 64, cairn] + - [65, 68, land] + - [69, 72, hall] + - [73, 76, mount] + - [77, 80, rock] + - [81, 84, brook] + - [85, 88, barrow] + - [89, 92, stead] + - [93, 96, home] + - [97, 100, wick] + Theme: + Title: + Canonical: Settlement Name + Standard: Name Theme + Short: Theme + _idFragment: Theme + Table: + - [ 1, 15, *Landscape_Feature, Oracle rolls: [Ironsworn/Oracles/Settlement/Name/Landscape_Feature] ] + - [ 16, 30, *Manmade_Edifice, Oracle rolls: [Ironsworn/Oracles/Settlement/Name/Manmade_Edifice] ] + - [ 31, 45, *Creature, Oracle rolls: [Ironsworn/Oracles/Settlement/Name/Creature] ] + - [ 46, 60, *Historical_Event, Oracle rolls: [Ironsworn/Oracles/Settlement/Name/Historical_Event] ] + - [ 61, 75, *Old_World_Language, Oracle rolls: [Ironsworn/Oracles/Settlement/Name/Old_World_Language] ] + - [ 76, 90, *Environmental_Aspect, Oracle rolls: [Ironsworn/Oracles/Settlement/Name/Environmental_Aspect] ] + - [ 91, 100, "Something Else...",Oracle rolls: [Ironsworn/Oracles/Settlement/Name/Something_Else]] diff --git a/_master-data/Ironsworn/Oracles/Site_Name-Delve.yaml b/_master-data/Ironsworn/Oracles/Site_Name-Delve.yaml index 029ec2010..37e6e10dc 100644 --- a/_master-data/Ironsworn/Oracles/Site_Name-Delve.yaml +++ b/_master-data/Ironsworn/Oracles/Site_Name-Delve.yaml @@ -1,555 +1,561 @@ -Site Name: - Title: - Canonical: Site Name - Summary: Give a site a name or learn more about its characteristics and history. - Description: |- - To generate a name for a site, first roll on the [Format](Ironsworn/Oracles/Site_Name/Format) table. Then, fill in the blanks by using the [Description](Ironsworn/Oracles/Site_Name/Description), [Detail](Ironsworn/Oracles/Site_Name/Detail), [Namesake](Ironsworn/Oracles/Site_Name/Namesake), and [Place](Ironsworn/Oracles/Site_Name/Place) oracles. +Source: + Authors: + - Shawn Tomkin + Title: "Ironsworn: Delve" + License: https://creativecommons.org/licenses/by-nc-sa/4.0/ +Oracle Sets: + Site Name: + Title: + Canonical: Site Name + Summary: Give a site a name or learn more about its characteristics and history. + Description: |- + To generate a name for a site, first roll on the [Format](Ironsworn/Oracles/Site_Name/Format) table. Then, fill in the blanks by using the [Description](Ironsworn/Oracles/Site_Name/Description), [Detail](Ironsworn/Oracles/Site_Name/Detail), [Namesake](Ironsworn/Oracles/Site_Name/Namesake), and [Place](Ironsworn/Oracles/Site_Name/Place) oracles. - If the form of a particular word doesn’t work, try making it plural instead of singular, or vice-versa. + If the form of a particular word doesn’t work, try making it plural instead of singular, or vice-versa. - If you already know the theme and domain, you can pick from the tables instead of rolling. If not, you can use these oracles to help define those aspects of the site. Use the [Place](Ironsworn/Oracles/Site_Name/Place) oracle to roll for a domain, and let the [Description](Ironsworn/Oracles/Site_Name/Description) and [Detail](Ironsworn/Oracles/Site_Name/Detail) oracles inform your selection of a theme. + If you already know the theme and domain, you can pick from the tables instead of rolling. If not, you can use these oracles to help define those aspects of the site. Use the [Place](Ironsworn/Oracles/Site_Name/Place) oracle to roll for a domain, and let the [Description](Ironsworn/Oracles/Site_Name/Description) and [Detail](Ironsworn/Oracles/Site_Name/Detail) oracles inform your selection of a theme. - The site’s name might be known in your world, or it could just be an evocative label you use to understand its history and nature. + The site’s name might be known in your world, or it could just be an evocative label you use to understand its history and nature. - Even without giving a site a name, you can use the [Description](Ironsworn/Oracles/Site_Name/Description) and [Detail](Ironsworn/Oracles/Site_Name/Detail) oracles to help flesh out the theme and nature of that place. + Even without giving a site a name, you can use the [Description](Ironsworn/Oracles/Site_Name/Description) and [Detail](Ironsworn/Oracles/Site_Name/Detail) oracles to help flesh out the theme and nature of that place. - For example, you hear rumors about a nearby ruin while visiting a settlement. What do you learn? You [Ask the Oracle](Ironsworn/Moves/Fate/Ask_the_Oracle), using the [Description](Ironsworn/Oracles/Site_Name/Description) and [Detail](Ironsworn/Oracles/Site_Name/Detail) tables. The oracle responds, “Bloodied Banishment.” + For example, you hear rumors about a nearby ruin while visiting a settlement. What do you learn? You [Ask the Oracle](Ironsworn/Moves/Fate/Ask_the_Oracle), using the [Description](Ironsworn/Oracles/Site_Name/Description) and [Detail](Ironsworn/Oracles/Site_Name/Detail) tables. The oracle responds, “Bloodied Banishment.” - Interpreting these keywords, you envision this settlement’s grim method of enacting justice. Anyone sentenced to death for a crime is taken to the ruins. There, under the fading light of the setting sun, they are bloodied by the quick slash of a ceremonial blade. Finally, they are chained to an altar within the central courtyard. The foul creatures who dwell in that place do the rest. - Source: - Authors: - - Shawn Tomkin - Title: "Ironsworn: Delve" - Page: 206 - License: https://creativecommons.org/licenses/by-nc-sa/4.0/ - Tables: - Format: - Title: - Canonical: "Site Name: Format" - Short: Format - _idFragment: Format - Table: - - [ - 1, - 25, - "[Description] [Place]", - Roll template: { Result: "{{Ironsworn/Oracles/Site_Name/Description}} {{Ironsworn/Oracles/Site_Name/Place/Place_by_Domain}}", }, - ] - - [ - 26, - 50, - "[Place] of [Detail]", - Roll template: { Result: "{{Ironsworn/Oracles/Site_Name/Place/Place_by_Domain}} of {{Ironsworn/Oracles/Site_Name/Detail}}", }, - ] - - [ - 51, - 70, - "[Place] of [Description] [Detail]", - Roll template: { Result: "{{Ironsworn/Oracles/Site_Name/Place/Place_by_Domain}} of {{Ironsworn/Oracles/Site_Name/Description}} {{Ironsworn/Oracles/Site_Name/Detail}}", }, - ] - - [ - 71, - 80, - "[Place] of [Namesake's] [Detail]", - Roll template: { Result: "{{Ironsworn/Oracles/Site_Name/Place/Place_by_Domain}} of {{Ironsworn/Oracles/Site_Name/Namesake}}'s {{Ironsworn/Oracles/Site_Name/Detail}}", }, - ] - - [ - 81, - 85, - "[Namesake's] [Place]", - Roll template: { Result: "{{Ironsworn/Oracles/Site_Name/Namesake}}'s {{Ironsworn/Oracles/Site_Name/Place/Place_by_Domain}}", }, - ] - - [ - 86, - 95, - "[Description] [Place] of [Namesake]", - Roll template: { Result: "{{Ironsworn/Oracles/Site_Name/Description}} {{Ironsworn/Oracles/Site_Name/Place/Place_by_Domain}} of {{Ironsworn/Oracles/Site_Name/Namesake}}", }, - ] - - [ - 96, - 100, - "[Place] of [Namesake]", - Roll template: { Result: "{{Ironsworn/Oracles/Site_Name/Place/Place_by_Domain}} of {{Ironsworn/Oracles/Site_Name/Namesake}}", }, - ] - Description: - Title: - Canonical: "Site Name: Description" - Short: Description - _idFragment: Description - Source: - Page: 207 - Table: - - [1, 2, Deep] - - [3, 4, Tainted] - - [5, 6, Grey] - - [7, 8, Forgotten] - - [9, 10, Flooded] - - [11, 12, Forbidden] - - [13, 14, Barren] - - [15, 16, Lost] - - [17, 18, Cursed] - - [19, 20, Fell] - - [21, 22, Sunken] - - [23, 24, Nightmare] - - [25, 26, Infernal] - - [27, 28, Dark] - - [29, 30, Bloodstained] - - [31, 32, Haunted] - - [33, 34, White] - - [35, 36, Shrouded] - - [37, 38, Wasted] - - [39, 40, Grim] - - [41, 42, Endless] - - [43, 44, Crumbling] - - [45, 46, Undying] - - [47, 48, Bloodied] - - [49, 50, Forsaken] - - [51, 52, Silent] - - [53, 54, Blighted] - - [55, 56, Iron] - - [57, 58, Frozen] - - [59, 60, Abyssal] - - [61, 62, Crimson] - - [63, 64, Silver] - - [65, 66, Desecrated] - - [67, 68, Ashen] - - [69, 70, Elder] - - [71, 72, Scorched] - - [73, 74, Unknown] - - [75, 76, Scarred] - - [77, 78, Broken] - - [79, 80, Chaotic] - - [81, 82, Black] - - [83, 84, Hidden] - - [85, 86, Sundered] - - [87, 88, Shattered] - - [89, 90, Dreaded] - - [91, 92, Secret] - - [93, 94, High] - - [95, 96, Sacred] - - [97, 98, Fallen] - - [99, 100, Ruined] - Detail: - Title: - Canonical: "Site Name: Detail" - Short: Detail - _idFragment: Detail - Source: - Page: 208 - Table: - - [1, 2, Blight] - - [3, 4, Strife] - - [5, 6, Nightfall] - - [7, 8, Fury] - - [9, 10, Terror] - - [11, 12, Truth] - - [13, 14, Spring] - - [15, 16, Sanctuary] - - [17, 18, Bone] - - [19, 20, Specters] - - [21, 22, Daybreak] - - [23, 24, Doom] - - [25, 26, Treachery] - - [27, 28, Blood] - - [29, 30, War] - - [31, 32, Torment] - - [33, 34, Iron] - - [35, 36, Silence] - - [37, 38, Mist] - - [39, 40, Isolation] - - [41, 42, Runes] - - [43, 44, Rot] - - [45, 46, Corruption] - - [47, 48, Prophecy] - - [49, 50, Fate] - - [51, 52, Twilight] - - [53, 54, Power] - - [55, 56, Darkness] - - [57, 58, Gloom] - - [59, 60, Storms] - - [61, 62, Hope] - - [63, 64, Lament] - - [65, 66, Frost] - - [67, 68, Souls] - - [69, 70, Winter] - - [71, 72, Sadness] - - [73, 74, Desolation] - - [75, 76, Bane] - - [77, 78, Lies] - - [79, 80, Ash] - - [81, 82, Banishment] - - [83, 84, Shadow] - - [85, 86, Madness] - - [87, 88, Stone] - - [89, 90, Secrets] - - [91, 92, Despair] - - [93, 94, Blades] - - [95, 96, Dread] - - [97, 98, Light] - - [99, 100, Wrath] - Namesake: - Title: - Canonical: "Site Name: Namesake" - Short: Namesake - _idFragment: Namesake - Description: |- - You may also use your preferred name randomizer to generate a Namesake for your site. + Interpreting these keywords, you envision this settlement’s grim method of enacting justice. Anyone sentenced to death for a crime is taken to the ruins. There, under the fading light of the setting sun, they are bloodied by the quick slash of a ceremonial blade. Finally, they are chained to an altar within the central courtyard. The foul creatures who dwell in that place do the rest. + Source: + Authors: + - Shawn Tomkin + Title: "Ironsworn: Delve" + Page: 206 + License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + Tables: + Format: + Title: + Canonical: "Site Name: Format" + Short: Format + _idFragment: Format + Table: + - [ + 1, + 25, + "[Description] [Place]", + Roll template: { Result: "{{Ironsworn/Oracles/Site_Name/Description}} {{Ironsworn/Oracles/Site_Name/Place/Place_by_Domain}}", }, + ] + - [ + 26, + 50, + "[Place] of [Detail]", + Roll template: { Result: "{{Ironsworn/Oracles/Site_Name/Place/Place_by_Domain}} of {{Ironsworn/Oracles/Site_Name/Detail}}", }, + ] + - [ + 51, + 70, + "[Place] of [Description] [Detail]", + Roll template: { Result: "{{Ironsworn/Oracles/Site_Name/Place/Place_by_Domain}} of {{Ironsworn/Oracles/Site_Name/Description}} {{Ironsworn/Oracles/Site_Name/Detail}}", }, + ] + - [ + 71, + 80, + "[Place] of [Namesake's] [Detail]", + Roll template: { Result: "{{Ironsworn/Oracles/Site_Name/Place/Place_by_Domain}} of {{Ironsworn/Oracles/Site_Name/Namesake}}'s {{Ironsworn/Oracles/Site_Name/Detail}}", }, + ] + - [ + 81, + 85, + "[Namesake's] [Place]", + Roll template: { Result: "{{Ironsworn/Oracles/Site_Name/Namesake}}'s {{Ironsworn/Oracles/Site_Name/Place/Place_by_Domain}}", }, + ] + - [ + 86, + 95, + "[Description] [Place] of [Namesake]", + Roll template: { Result: "{{Ironsworn/Oracles/Site_Name/Description}} {{Ironsworn/Oracles/Site_Name/Place/Place_by_Domain}} of {{Ironsworn/Oracles/Site_Name/Namesake}}", }, + ] + - [ + 96, + 100, + "[Place] of [Namesake]", + Roll template: { Result: "{{Ironsworn/Oracles/Site_Name/Place/Place_by_Domain}} of {{Ironsworn/Oracles/Site_Name/Namesake}}", }, + ] + Description: + Title: + Canonical: "Site Name: Description" + Short: Description + _idFragment: Description + Source: + Page: 207 + Table: + - [1, 2, Deep] + - [3, 4, Tainted] + - [5, 6, Grey] + - [7, 8, Forgotten] + - [9, 10, Flooded] + - [11, 12, Forbidden] + - [13, 14, Barren] + - [15, 16, Lost] + - [17, 18, Cursed] + - [19, 20, Fell] + - [21, 22, Sunken] + - [23, 24, Nightmare] + - [25, 26, Infernal] + - [27, 28, Dark] + - [29, 30, Bloodstained] + - [31, 32, Haunted] + - [33, 34, White] + - [35, 36, Shrouded] + - [37, 38, Wasted] + - [39, 40, Grim] + - [41, 42, Endless] + - [43, 44, Crumbling] + - [45, 46, Undying] + - [47, 48, Bloodied] + - [49, 50, Forsaken] + - [51, 52, Silent] + - [53, 54, Blighted] + - [55, 56, Iron] + - [57, 58, Frozen] + - [59, 60, Abyssal] + - [61, 62, Crimson] + - [63, 64, Silver] + - [65, 66, Desecrated] + - [67, 68, Ashen] + - [69, 70, Elder] + - [71, 72, Scorched] + - [73, 74, Unknown] + - [75, 76, Scarred] + - [77, 78, Broken] + - [79, 80, Chaotic] + - [81, 82, Black] + - [83, 84, Hidden] + - [85, 86, Sundered] + - [87, 88, Shattered] + - [89, 90, Dreaded] + - [91, 92, Secret] + - [93, 94, High] + - [95, 96, Sacred] + - [97, 98, Fallen] + - [99, 100, Ruined] + Detail: + Title: + Canonical: "Site Name: Detail" + Short: Detail + _idFragment: Detail + Source: + Page: 208 + Table: + - [1, 2, Blight] + - [3, 4, Strife] + - [5, 6, Nightfall] + - [7, 8, Fury] + - [9, 10, Terror] + - [11, 12, Truth] + - [13, 14, Spring] + - [15, 16, Sanctuary] + - [17, 18, Bone] + - [19, 20, Specters] + - [21, 22, Daybreak] + - [23, 24, Doom] + - [25, 26, Treachery] + - [27, 28, Blood] + - [29, 30, War] + - [31, 32, Torment] + - [33, 34, Iron] + - [35, 36, Silence] + - [37, 38, Mist] + - [39, 40, Isolation] + - [41, 42, Runes] + - [43, 44, Rot] + - [45, 46, Corruption] + - [47, 48, Prophecy] + - [49, 50, Fate] + - [51, 52, Twilight] + - [53, 54, Power] + - [55, 56, Darkness] + - [57, 58, Gloom] + - [59, 60, Storms] + - [61, 62, Hope] + - [63, 64, Lament] + - [65, 66, Frost] + - [67, 68, Souls] + - [69, 70, Winter] + - [71, 72, Sadness] + - [73, 74, Desolation] + - [75, 76, Bane] + - [77, 78, Lies] + - [79, 80, Ash] + - [81, 82, Banishment] + - [83, 84, Shadow] + - [85, 86, Madness] + - [87, 88, Stone] + - [89, 90, Secrets] + - [91, 92, Despair] + - [93, 94, Blades] + - [95, 96, Dread] + - [97, 98, Light] + - [99, 100, Wrath] + Namesake: + Title: + Canonical: "Site Name: Namesake" + Short: Namesake + _idFragment: Namesake + Description: |- + You may also use your preferred name randomizer to generate a Namesake for your site. - If you want to add details for the Namesake, use the [Character oracles](Ironsworn/Oracles/Character) in *Ironsworn Core*. This may help inspire a deeper understanding of the history of the site. - Source: - Page: 209 - Table: - - [1, 2, Breckon] - - [3, 4, Issara] - - [5, 6, Milenna] - - [7, 8, Thorval] - - [9, 10, Khulan] - - [11, 12, Aurvang] - - [13, 14, Kalida] - - [15, 16, Keeara] - - [17, 18, Andor] - - [19, 20, Zakaria] - - [21, 22, Willa] - - [23, 24, Etana] - - [25, 26, Valgard] - - [27, 28, Kenrick] - - [29, 30, Wyland] - - [31, 32, Sidura] - - [33, 34, Svala] - - [35, 36, Kajir] - - [37, 38, Saiven] - - [39, 40, Callwen] - - [41, 42, Zhan] - - [43, 44, Solana] - - [45, 46, Ildar] - - [47, 48, Keelan] - - [49, 50, Thrain] - - [51, 52, Kynan] - - [53, 54, Jadina] - - [55, 56, Radek] - - [57, 58, Wulan] - - [59, 60, Garion] - - [61, 62, Eysa] - - [63, 64, Kolor] - - [65, 66, Katarra] - - [67, 68, Dain] - - [69, 70, Farina] - - [71, 72, Yala] - - [73, 74, Kodroth] - - [75, 76, Morien] - - [77, 78, Akida] - - [79, 80, Haldorr] - - [81, 82, Nyrad] - - [83, 84, Edda] - - [85, 86, Jorund] - - [87, 88, Morraine] - - [89, 90, Lindar] - - [91, 92, Sithra] - - [93, 94, Torgan] - - [95, 96, Arnorr] - - [97, 98, Thyri] - - [99, 100, Erisia] - Sets: - Place: - Title: - Canonical: "Site Name: Place" - Short: Place - _idFragment: Place - Source: - Page: 210 - Title: "Ironsworn: Delve" - Authors: - - Shawn Tomkin - License: https://creativecommons.org/licenses/by-nc-sa/4.0/ - Tables: - Domain: - Title: - Canonical: "Site Name: Place" - Standard: Place - Short: Place - _idFragment: Domain - Source: - Page: 210 - Table: - - [ - 1, 6, - Barrow, - Oracle rolls: ["Ironsworn/Oracles/Site_Name/Place/Barrow"], - Suggestions: {Site Domains: ["Ironsworn/Domains/Barrow"]}, - Embed table: "Ironsworn/Oracles/Site_Name/Place/Barrow", - ] - - [ - 7, 18, - Cavern, - Oracle rolls: ["Ironsworn/Oracles/Site_Name/Place/Cavern"], - Suggestions: {Site Domains: ["Ironsworn/Domains/Cavern"]}, - Embed table: "Ironsworn/Oracles/Site_Name/Place/Cavern", - ] - - [ - 19, 28, - Frozen Cavern, - Oracle rolls: ["Ironsworn/Oracles/Site_Name/Place/Frozen_Cavern"], - Suggestions: {Site Domains: ["Ironsworn/Domains/Frozen_Cavern"]}, - Embed table: "Ironsworn/Oracles/Site_Name/Place/Frozen_Cavern", - ] - - [ - 29, 32, - Icereach, - Oracle rolls: ["Ironsworn/Oracles/Site_Name/Place/Icereach"], - Suggestions: {Site Domains: ["Ironsworn/Domains/Icereach"]}, - Embed table: "Ironsworn/Oracles/Site_Name/Place/Icereach", - ] - - [ - 33, 38, - Mine, - Oracle rolls: ["Ironsworn/Oracles/Site_Name/Place/Mine"], - Suggestions: {Site Domains: ["Ironsworn/Domains/Mine"]}, - Embed table: "Ironsworn/Oracles/Site_Name/Place/Mine", - ] - - [ - 39, 48, - Pass, - Oracle rolls: ["Ironsworn/Oracles/Site_Name/Place/Pass"], - Suggestions: {Site Domains: ["Ironsworn/Domains/Pass"]}, - Embed table: "Ironsworn/Oracles/Site_Name/Place/Pass", - ] - - [ - 49, 58, - Ruin, - Oracle rolls: ["Ironsworn/Oracles/Site_Name/Place/Ruin"], - Suggestions: {Site Domains: ["Ironsworn/Domains/Ruin"]}, - Embed table: "Ironsworn/Oracles/Site_Name/Place/Ruin", - ] - - [ - 59, 68, - Sea Cave, - Oracle rolls: ["Ironsworn/Oracles/Site_Name/Place/Sea_Cave"], - Suggestions: {Site Domains: ["Ironsworn/Domains/Sea_Cave"]}, - Embed table: "Ironsworn/Oracles/Site_Name/Place/Sea_Cave", - ] - - [ - 69, 78, - Shadowfen, - Oracle rolls: ["Ironsworn/Oracles/Site_Name/Place/Shadowfen"], - Suggestions: {Site Domains: ["Ironsworn/Domains/Shadowfen"]}, - Embed table: "Ironsworn/Oracles/Site_Name/Place/Shadowfen", - ] - - [ - 79, 83, - Stronghold, - Oracle rolls: ["Ironsworn/Oracles/Site_Name/Place/Stronghold"], - Suggestions: {Site Domains: ["Ironsworn/Domains/Stronghold"]}, - Embed table: "Ironsworn/Oracles/Site_Name/Place/Stronghold", - ] - - [ - 84, 95, - Tanglewood, - Oracle rolls: ["Ironsworn/Oracles/Site_Name/Place/Tanglewood"], - Suggestions: {Site Domains: ["Ironsworn/Domains/Tanglewood"]}, - Embed table: "Ironsworn/Oracles/Site_Name/Place/Tanglewood", - ] - - [ - 96, 100, - Underkeep, - Oracle rolls: ["Ironsworn/Oracles/Site_Name/Place/Underkeep"], - Suggestions: {Site Domains: ["Ironsworn/Domains/Underkeep"]}, - Embed table: "Ironsworn/Oracles/Site_Name/Place/Underkeep", - ] - Barrow: - Title: - Canonical: Barrow - Display: - Embed in: Ironsworn/Oracles/Site_Name/Place/Place_by_Domain/1-6 - Source: - Page: 210 - Table: - - [1, 16, Sepulcher] - - [50, 66, Mound] - - [17, 32, Grave] - - [67, 83, Tomb] - - [33, 49, Crypt] - - [84, 100, Barrow] - Cavern: - Title: - Canonical: Cavern - Display: - Embed in: Ironsworn/Oracles/Site_Name/Place/Place_by_Domain/7-18 - Source: - Page: 210 - Table: - - [1, 10, Abyss] - - [11, 20, Caverns] - - [21, 30, Caves] - - [31, 40, Chasm] - - [41, 50, Depths] - - [51, 60, Hollow] - - [61, 70, Lair] - - [71, 80, Rift] - - [81, 90, Tunnels] - - [91, 100, Warren] - Frozen Cavern: - Title: - Canonical: Frozen Cavern - Display: - Embed in: Ironsworn/Oracles/Site_Name/Place/Place_by_Domain/19-28 - Source: - Page: 210 - Table: - - [1, 10, Abyss] - - [11, 20, Caverns] - - [21, 30, Caves] - - [31, 40, Chasm] - - [41, 50, Depths] - - [51, 60, Hollow] - - [61, 70, Lair] - - [71, 80, Rift] - - [81, 90, Tunnels] - - [91, 100, Warren] - Icereach: - Title: - Canonical: Icereach - Display: - Embed in: Ironsworn/Oracles/Site_Name/Place/Place_by_Domain/29-32 - Source: - Page: 210 - Table: - - [1, 16, Icemark] - - [17, 32, Wintertide] - - [33, 49, Reach] - - [50, 66, Waste] - - [67, 83, Expanse] - - [84, 100, Barrens] - Mine: - Title: - Canonical: Mine - Display: - Embed in: Ironsworn/Oracles/Site_Name/Place/Place_by_Domain/33-38 - Source: - Page: 210 - Table: - - [1, 16, Lode] - - [17, 32, Dig] - - [33, 49, Forge] - - [50, 66, Mine] - - [67, 83, Tunnels] - - [84, 100, Cut] - Pass: - Title: - Canonical: Pass - Display: - Embed in: Ironsworn/Oracles/Site_Name/Place/Place_by_Domain/39-48 - Source: - Page: 210 - Table: - - [1, 10, Cliffs] - - [11, 20, Crag] - - [21, 30, Cut] - - [31, 40, Gap] - - [41, 50, Gorge] - - [51, 60, Heights] - - [61, 70, Highlands] - - [71, 80, Pass] - - [81, 90, Reach] - - [91, 100, Ridge] - Ruin: - Title: - Canonical: Ruin - Display: - Embed in: Ironsworn/Oracles/Site_Name/Place/Place_by_Domain/49-58 - Source: - Page: 211 - Table: - - [1, 10, Citadel] - - [11, 20, Enclave] - - [21, 30, Fortress] - - [31, 40, Hall] - - [41, 50, Keep] - - [51, 60, Sanctuary] - - [61, 70, Sanctum] - - [71, 80, Spire] - - [81, 90, Temple] - - [91, 100, Tower] - Sea Cave: - Title: - Canonical: Sea Cave - Display: - Embed in: Ironsworn/Oracles/Site_Name/Place/Place_by_Domain/59-68 - Source: - Page: 211 - Table: - - [1, 16, Caves] - - [17, 32, Channel] - - [33, 49, Cove] - - [50, 66, Hollow] - - [67, 83, Pools] - - [84, 100, Gouge] - Shadowfen: - Title: - Canonical: Shadowfen - Display: - Embed in: Ironsworn/Oracles/Site_Name/Place/Place_by_Domain/69-78 - Source: - Page: 211 - Table: - - [1, 10, Bog] - - [11, 20, Fen] - - [21, 30, Lowland] - - [31, 40, Marsh] - - [41, 50, Mire] - - [51, 60, Morass] - - [61, 70, Quagmire] - - [71, 80, Floodlands] - - [81, 90, Slough] - - [91, 100, Wetlands] - Stronghold: - Title: - Canonical: Stronghold - Display: - Embed in: Ironsworn/Oracles/Site_Name/Place/Place_by_Domain/79-83 - Source: - Page: 211 - Table: - - [1, 10, Bastion] - - [11, 20, Citadel] - - [21, 30, Fortress] - - [31, 40, Garrison] - - [41, 50, Haven] - - [51, 60, Keep] - - [61, 70, Outpost] - - [71, 80, Refuge] - - [81, 90, Sanctuary] - - [91, 100, Watch] - Tanglewood: - Title: - Canonical: Tanglewood - Display: - Embed in: Ironsworn/Oracles/Site_Name/Place/Place_by_Domain/84-95 - Source: - Page: 211 - Table: - - [1, 11, Weald] - - [12, 23, Tangle] - - [24, 35, Bramble] - - [36, 48, Briar] - - [49, 61, Thicket] - - [62, 74, Forest] - - [75, 87, Wilds] - - [88, 100, Wood] - Underkeep: - Title: - Canonical: Underkeep - Display: - Embed in: Ironsworn/Oracles/Site_Name/Place/Place_by_Domain/96-100 - Source: - Page: 211 - Table: - - [1, 10, Catacomb] - - [11, 20, Chambers] - - [21, 30, Den] - - [31, 40, Hall] - - [41, 50, Labyrinth] - - [51, 60, Maze] - - [61, 70, Pit] - - [71, 80, Sanctum] - - [81, 90, Underkeep] - - [91, 100, Vault] + If you want to add details for the Namesake, use the [Character oracles](Ironsworn/Oracles/Character) in *Ironsworn Core*. This may help inspire a deeper understanding of the history of the site. + Source: + Page: 209 + Table: + - [1, 2, Breckon] + - [3, 4, Issara] + - [5, 6, Milenna] + - [7, 8, Thorval] + - [9, 10, Khulan] + - [11, 12, Aurvang] + - [13, 14, Kalida] + - [15, 16, Keeara] + - [17, 18, Andor] + - [19, 20, Zakaria] + - [21, 22, Willa] + - [23, 24, Etana] + - [25, 26, Valgard] + - [27, 28, Kenrick] + - [29, 30, Wyland] + - [31, 32, Sidura] + - [33, 34, Svala] + - [35, 36, Kajir] + - [37, 38, Saiven] + - [39, 40, Callwen] + - [41, 42, Zhan] + - [43, 44, Solana] + - [45, 46, Ildar] + - [47, 48, Keelan] + - [49, 50, Thrain] + - [51, 52, Kynan] + - [53, 54, Jadina] + - [55, 56, Radek] + - [57, 58, Wulan] + - [59, 60, Garion] + - [61, 62, Eysa] + - [63, 64, Kolor] + - [65, 66, Katarra] + - [67, 68, Dain] + - [69, 70, Farina] + - [71, 72, Yala] + - [73, 74, Kodroth] + - [75, 76, Morien] + - [77, 78, Akida] + - [79, 80, Haldorr] + - [81, 82, Nyrad] + - [83, 84, Edda] + - [85, 86, Jorund] + - [87, 88, Morraine] + - [89, 90, Lindar] + - [91, 92, Sithra] + - [93, 94, Torgan] + - [95, 96, Arnorr] + - [97, 98, Thyri] + - [99, 100, Erisia] + Sets: + Place: + Title: + Canonical: "Site Name: Place" + Short: Place + _idFragment: Place + Source: + Page: 210 + Title: "Ironsworn: Delve" + Authors: + - Shawn Tomkin + License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + Tables: + Domain: + Title: + Canonical: "Site Name: Place" + Standard: Place + Short: Place + _idFragment: Domain + Source: + Page: 210 + Table: + - [ + 1, 6, + Barrow, + Oracle rolls: ["Ironsworn/Oracles/Site_Name/Place/Barrow"], + Suggestions: {Site Domains: ["Ironsworn/Domains/Barrow"]}, + Embed table: "Ironsworn/Oracles/Site_Name/Place/Barrow", + ] + - [ + 7, 18, + Cavern, + Oracle rolls: ["Ironsworn/Oracles/Site_Name/Place/Cavern"], + Suggestions: {Site Domains: ["Ironsworn/Domains/Cavern"]}, + Embed table: "Ironsworn/Oracles/Site_Name/Place/Cavern", + ] + - [ + 19, 28, + Frozen Cavern, + Oracle rolls: ["Ironsworn/Oracles/Site_Name/Place/Frozen_Cavern"], + Suggestions: {Site Domains: ["Ironsworn/Domains/Frozen_Cavern"]}, + Embed table: "Ironsworn/Oracles/Site_Name/Place/Frozen_Cavern", + ] + - [ + 29, 32, + Icereach, + Oracle rolls: ["Ironsworn/Oracles/Site_Name/Place/Icereach"], + Suggestions: {Site Domains: ["Ironsworn/Domains/Icereach"]}, + Embed table: "Ironsworn/Oracles/Site_Name/Place/Icereach", + ] + - [ + 33, 38, + Mine, + Oracle rolls: ["Ironsworn/Oracles/Site_Name/Place/Mine"], + Suggestions: {Site Domains: ["Ironsworn/Domains/Mine"]}, + Embed table: "Ironsworn/Oracles/Site_Name/Place/Mine", + ] + - [ + 39, 48, + Pass, + Oracle rolls: ["Ironsworn/Oracles/Site_Name/Place/Pass"], + Suggestions: {Site Domains: ["Ironsworn/Domains/Pass"]}, + Embed table: "Ironsworn/Oracles/Site_Name/Place/Pass", + ] + - [ + 49, 58, + Ruin, + Oracle rolls: ["Ironsworn/Oracles/Site_Name/Place/Ruin"], + Suggestions: {Site Domains: ["Ironsworn/Domains/Ruin"]}, + Embed table: "Ironsworn/Oracles/Site_Name/Place/Ruin", + ] + - [ + 59, 68, + Sea Cave, + Oracle rolls: ["Ironsworn/Oracles/Site_Name/Place/Sea_Cave"], + Suggestions: {Site Domains: ["Ironsworn/Domains/Sea_Cave"]}, + Embed table: "Ironsworn/Oracles/Site_Name/Place/Sea_Cave", + ] + - [ + 69, 78, + Shadowfen, + Oracle rolls: ["Ironsworn/Oracles/Site_Name/Place/Shadowfen"], + Suggestions: {Site Domains: ["Ironsworn/Domains/Shadowfen"]}, + Embed table: "Ironsworn/Oracles/Site_Name/Place/Shadowfen", + ] + - [ + 79, 83, + Stronghold, + Oracle rolls: ["Ironsworn/Oracles/Site_Name/Place/Stronghold"], + Suggestions: {Site Domains: ["Ironsworn/Domains/Stronghold"]}, + Embed table: "Ironsworn/Oracles/Site_Name/Place/Stronghold", + ] + - [ + 84, 95, + Tanglewood, + Oracle rolls: ["Ironsworn/Oracles/Site_Name/Place/Tanglewood"], + Suggestions: {Site Domains: ["Ironsworn/Domains/Tanglewood"]}, + Embed table: "Ironsworn/Oracles/Site_Name/Place/Tanglewood", + ] + - [ + 96, 100, + Underkeep, + Oracle rolls: ["Ironsworn/Oracles/Site_Name/Place/Underkeep"], + Suggestions: {Site Domains: ["Ironsworn/Domains/Underkeep"]}, + Embed table: "Ironsworn/Oracles/Site_Name/Place/Underkeep", + ] + Barrow: + Title: + Canonical: Barrow + Display: + Embed in: Ironsworn/Oracles/Site_Name/Place/Place_by_Domain/1-6 + Source: + Page: 210 + Table: + - [1, 16, Sepulcher] + - [50, 66, Mound] + - [17, 32, Grave] + - [67, 83, Tomb] + - [33, 49, Crypt] + - [84, 100, Barrow] + Cavern: + Title: + Canonical: Cavern + Display: + Embed in: Ironsworn/Oracles/Site_Name/Place/Place_by_Domain/7-18 + Source: + Page: 210 + Table: + - [1, 10, Abyss] + - [11, 20, Caverns] + - [21, 30, Caves] + - [31, 40, Chasm] + - [41, 50, Depths] + - [51, 60, Hollow] + - [61, 70, Lair] + - [71, 80, Rift] + - [81, 90, Tunnels] + - [91, 100, Warren] + Frozen Cavern: + Title: + Canonical: Frozen Cavern + Display: + Embed in: Ironsworn/Oracles/Site_Name/Place/Place_by_Domain/19-28 + Source: + Page: 210 + Table: + - [1, 10, Abyss] + - [11, 20, Caverns] + - [21, 30, Caves] + - [31, 40, Chasm] + - [41, 50, Depths] + - [51, 60, Hollow] + - [61, 70, Lair] + - [71, 80, Rift] + - [81, 90, Tunnels] + - [91, 100, Warren] + Icereach: + Title: + Canonical: Icereach + Display: + Embed in: Ironsworn/Oracles/Site_Name/Place/Place_by_Domain/29-32 + Source: + Page: 210 + Table: + - [1, 16, Icemark] + - [17, 32, Wintertide] + - [33, 49, Reach] + - [50, 66, Waste] + - [67, 83, Expanse] + - [84, 100, Barrens] + Mine: + Title: + Canonical: Mine + Display: + Embed in: Ironsworn/Oracles/Site_Name/Place/Place_by_Domain/33-38 + Source: + Page: 210 + Table: + - [1, 16, Lode] + - [17, 32, Dig] + - [33, 49, Forge] + - [50, 66, Mine] + - [67, 83, Tunnels] + - [84, 100, Cut] + Pass: + Title: + Canonical: Pass + Display: + Embed in: Ironsworn/Oracles/Site_Name/Place/Place_by_Domain/39-48 + Source: + Page: 210 + Table: + - [1, 10, Cliffs] + - [11, 20, Crag] + - [21, 30, Cut] + - [31, 40, Gap] + - [41, 50, Gorge] + - [51, 60, Heights] + - [61, 70, Highlands] + - [71, 80, Pass] + - [81, 90, Reach] + - [91, 100, Ridge] + Ruin: + Title: + Canonical: Ruin + Display: + Embed in: Ironsworn/Oracles/Site_Name/Place/Place_by_Domain/49-58 + Source: + Page: 211 + Table: + - [1, 10, Citadel] + - [11, 20, Enclave] + - [21, 30, Fortress] + - [31, 40, Hall] + - [41, 50, Keep] + - [51, 60, Sanctuary] + - [61, 70, Sanctum] + - [71, 80, Spire] + - [81, 90, Temple] + - [91, 100, Tower] + Sea Cave: + Title: + Canonical: Sea Cave + Display: + Embed in: Ironsworn/Oracles/Site_Name/Place/Place_by_Domain/59-68 + Source: + Page: 211 + Table: + - [1, 16, Caves] + - [17, 32, Channel] + - [33, 49, Cove] + - [50, 66, Hollow] + - [67, 83, Pools] + - [84, 100, Gouge] + Shadowfen: + Title: + Canonical: Shadowfen + Display: + Embed in: Ironsworn/Oracles/Site_Name/Place/Place_by_Domain/69-78 + Source: + Page: 211 + Table: + - [1, 10, Bog] + - [11, 20, Fen] + - [21, 30, Lowland] + - [31, 40, Marsh] + - [41, 50, Mire] + - [51, 60, Morass] + - [61, 70, Quagmire] + - [71, 80, Floodlands] + - [81, 90, Slough] + - [91, 100, Wetlands] + Stronghold: + Title: + Canonical: Stronghold + Display: + Embed in: Ironsworn/Oracles/Site_Name/Place/Place_by_Domain/79-83 + Source: + Page: 211 + Table: + - [1, 10, Bastion] + - [11, 20, Citadel] + - [21, 30, Fortress] + - [31, 40, Garrison] + - [41, 50, Haven] + - [51, 60, Keep] + - [61, 70, Outpost] + - [71, 80, Refuge] + - [81, 90, Sanctuary] + - [91, 100, Watch] + Tanglewood: + Title: + Canonical: Tanglewood + Display: + Embed in: Ironsworn/Oracles/Site_Name/Place/Place_by_Domain/84-95 + Source: + Page: 211 + Table: + - [1, 11, Weald] + - [12, 23, Tangle] + - [24, 35, Bramble] + - [36, 48, Briar] + - [49, 61, Thicket] + - [62, 74, Forest] + - [75, 87, Wilds] + - [88, 100, Wood] + Underkeep: + Title: + Canonical: Underkeep + Display: + Embed in: Ironsworn/Oracles/Site_Name/Place/Place_by_Domain/96-100 + Source: + Page: 211 + Table: + - [1, 10, Catacomb] + - [11, 20, Chambers] + - [21, 30, Den] + - [31, 40, Hall] + - [41, 50, Labyrinth] + - [51, 60, Maze] + - [61, 70, Pit] + - [71, 80, Sanctum] + - [81, 90, Underkeep] + - [91, 100, Vault] diff --git a/_master-data/Ironsworn/Oracles/Site_Nature-Delve.yaml b/_master-data/Ironsworn/Oracles/Site_Nature-Delve.yaml index d03350166..9ffb96382 100644 --- a/_master-data/Ironsworn/Oracles/Site_Nature-Delve.yaml +++ b/_master-data/Ironsworn/Oracles/Site_Nature-Delve.yaml @@ -1,49 +1,55 @@ -Site Nature: - Title: - Canonical: Site Nature - Summary: Randomly select a theme and domain for a perilous location. - Description: |- - Use these oracles to generate a random theme and domain for a site. Alternatively, you can print out the theme and domain cards and draw a random result. Or use the [Site Name oracles](Ironsworn/Oracles/Site_Name) to inspire the selection of a theme and domain. - Source: - Authors: - - Shawn Tomkin - Title: "Ironsworn: Delve" - Page: 212 - License: https://creativecommons.org/licenses/by-nc-sa/4.0/ - Tables: - Theme: - Title: - Canonical: "Site Nature: Theme" - Short: Theme - _idFragment: Theme - Source: - Page: 212 - Table: - - [1, 11, Ancient, Suggestions: {Site theme: [Ironsworn/Themes/Ancient] }] - - [12, 23, Corrupted, Suggestions: {Site theme: [Ironsworn/Themes/Corrupted] }] - - [24, 35, Fortified, Suggestions: {Site theme: [Ironsworn/Themes/Fortified] }] - - [36, 48, Hallowed, Suggestions: {Site theme: [Ironsworn/Themes/Hallowed] }] - - [49, 61, Haunted, Suggestions: {Site theme: [Ironsworn/Themes/Haunted] }] - - [62, 74, Infested, Suggestions: {Site theme: [Ironsworn/Themes/Infested] }] - - [75, 87, Ravaged, Suggestions: {Site theme: [Ironsworn/Themes/Ravaged] }] - - [88, 100, Wild, Suggestions: {Site theme: [Ironsworn/Themes/Wild] }] - Domain: - Title: - Canonical: "Site Nature: Domain" - Short: Domain - _idFragment: Domain - Source: - Page: 212 - Table: - - [1, 6, Barrow, Suggestions: {Site domain: [Ironsworn/Domains/Barrow]}] - - [7, 18, Cavern, Suggestions: {Site domain: [Ironsworn/Domains/Cavern]}] - - [19, 28, Frozen Cavern, Suggestions: {Site domain: [Ironsworn/Domains/Frozen_Cavern]}] - - [29, 32, Icereach, Suggestions: {Site domain: [Ironsworn/Domains/Icereach]}] - - [33, 38, Mine, Suggestions: {Site domain: [Ironsworn/Domains/Mine]}] - - [39, 48, Pass, Suggestions: {Site domain: [Ironsworn/Domains/Pass]}] - - [49, 58, Ruin, Suggestions: {Site domain: [Ironsworn/Domains/Ruin]}] - - [59, 68, Sea Cave, Suggestions: {Site domain: [Ironsworn/Domains/Sea_Cave]}] - - [69, 78, Shadowfen, Suggestions: {Site domain: [Ironsworn/Domains/Shadowfen]}] - - [79, 83, Stronghold, Suggestions: {Site domain: [Ironsworn/Domains/Stronghold]}] - - [84, 95, Tanglewood, Suggestions: {Site domain: [Ironsworn/Domains/Tanglewood]}] - - [96, 100, Underkeep, Suggestions: {Site domain: [Ironsworn/Domains/Underkeep]}] +Source: + Authors: + - Shawn Tomkin + Title: "Ironsworn: Delve" + License: https://creativecommons.org/licenses/by-nc-sa/4.0/ +Oracle Sets: + Site Nature: + Title: + Canonical: Site Nature + Summary: Randomly select a theme and domain for a perilous location. + Description: |- + Use these oracles to generate a random theme and domain for a site. Alternatively, you can print out the theme and domain cards and draw a random result. Or use the [Site Name oracles](Ironsworn/Oracles/Site_Name) to inspire the selection of a theme and domain. + Source: + Authors: + - Shawn Tomkin + Title: "Ironsworn: Delve" + Page: 212 + License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + Tables: + Theme: + Title: + Canonical: "Site Nature: Theme" + Short: Theme + _idFragment: Theme + Source: + Page: 212 + Table: + - [1, 11, Ancient, Suggestions: {Site theme: [Ironsworn/Themes/Ancient] }] + - [12, 23, Corrupted, Suggestions: {Site theme: [Ironsworn/Themes/Corrupted] }] + - [24, 35, Fortified, Suggestions: {Site theme: [Ironsworn/Themes/Fortified] }] + - [36, 48, Hallowed, Suggestions: {Site theme: [Ironsworn/Themes/Hallowed] }] + - [49, 61, Haunted, Suggestions: {Site theme: [Ironsworn/Themes/Haunted] }] + - [62, 74, Infested, Suggestions: {Site theme: [Ironsworn/Themes/Infested] }] + - [75, 87, Ravaged, Suggestions: {Site theme: [Ironsworn/Themes/Ravaged] }] + - [88, 100, Wild, Suggestions: {Site theme: [Ironsworn/Themes/Wild] }] + Domain: + Title: + Canonical: "Site Nature: Domain" + Short: Domain + _idFragment: Domain + Source: + Page: 212 + Table: + - [1, 6, Barrow, Suggestions: {Site domain: [Ironsworn/Domains/Barrow]}] + - [7, 18, Cavern, Suggestions: {Site domain: [Ironsworn/Domains/Cavern]}] + - [19, 28, Frozen Cavern, Suggestions: {Site domain: [Ironsworn/Domains/Frozen_Cavern]}] + - [29, 32, Icereach, Suggestions: {Site domain: [Ironsworn/Domains/Icereach]}] + - [33, 38, Mine, Suggestions: {Site domain: [Ironsworn/Domains/Mine]}] + - [39, 48, Pass, Suggestions: {Site domain: [Ironsworn/Domains/Pass]}] + - [49, 58, Ruin, Suggestions: {Site domain: [Ironsworn/Domains/Ruin]}] + - [59, 68, Sea Cave, Suggestions: {Site domain: [Ironsworn/Domains/Sea_Cave]}] + - [69, 78, Shadowfen, Suggestions: {Site domain: [Ironsworn/Domains/Shadowfen]}] + - [79, 83, Stronghold, Suggestions: {Site domain: [Ironsworn/Domains/Stronghold]}] + - [84, 95, Tanglewood, Suggestions: {Site domain: [Ironsworn/Domains/Tanglewood]}] + - [96, 100, Underkeep, Suggestions: {Site domain: [Ironsworn/Domains/Underkeep]}] diff --git a/_master-data/Ironsworn/Oracles/Threat-Delve.yaml b/_master-data/Ironsworn/Oracles/Threat-Delve.yaml index c8c3636e2..b612843d3 100644 --- a/_master-data/Ironsworn/Oracles/Threat-Delve.yaml +++ b/_master-data/Ironsworn/Oracles/Threat-Delve.yaml @@ -1,200 +1,206 @@ -Threat: - Title: - Canonical: Threat - Summary: In support of the optional threat mechanics, use these oracles to introduce a threat and determine its actions within your world. - Description: |- - These oracles support the optional threat mechanics detailed in Chapter 6. +Source: + Authors: + - Shawn Tomkin + Title: "Ironsworn: Delve" + License: https://creativecommons.org/licenses/by-nc-sa/4.0/ +Oracle Sets: + Threat: + Title: + Canonical: Threat + Summary: In support of the optional threat mechanics, use these oracles to introduce a threat and determine its actions within your world. + Description: |- + These oracles support the optional threat mechanics detailed in Chapter 6. - You can use the [Category] oracle above to randomly select a broad type of threat for your campaign. If you are told to roll twice, take both results and decide how these two threats act together or represent a more complex situation. For example, choosing both a [Malignant Plague](Ironsworn/Oracles/Threat/Malignant_Plague) and [Zealous Cult](Ironsworn/Oracles/Threat/Zealous_Cult) might signify an evil sect which has unleashed a sickness upon the Ironlands in service to some dark god. + You can use the [Category] oracle above to randomly select a broad type of threat for your campaign. If you are told to roll twice, take both results and decide how these two threats act together or represent a more complex situation. For example, choosing both a [Malignant Plague](Ironsworn/Oracles/Threat/Malignant_Plague) and [Zealous Cult](Ironsworn/Oracles/Threat/Zealous_Cult) might signify an evil sect which has unleashed a sickness upon the Ironlands in service to some dark god. - For additional detail, use other oracles as appropriate. For example, you can look to the [Action] and [Theme] oracles (Ironsworn Core, page 174) or [Character Goal] oracle (Ironsworn Core, page 182) to define the motivations of a [Scheming Leader](Ironsworn/Oracles/Threat/Scheming_Leader). + For additional detail, use other oracles as appropriate. For example, you can look to the [Action] and [Theme] oracles (Ironsworn Core, page 174) or [Character Goal] oracle (Ironsworn Core, page 182) to define the motivations of a [Scheming Leader](Ironsworn/Oracles/Threat/Scheming_Leader). - Once you’ve introduced a threat, consider how it endangers something or someone important to you, and Swear an Iron Vow to see its goal undone. + Once you’ve introduced a threat, consider how it endangers something or someone important to you, and Swear an Iron Vow to see its goal undone. - Then, as you [Advance a Threat](Ironsworn/Move/Threat/Advance_a_Threat), you can roll on the oracle table for your specific threat to generate an action, approach, or complication. Interpret the oracle’s answer as appropriate to the nature of the threat and the current situation. + Then, as you [Advance a Threat](Ironsworn/Move/Threat/Advance_a_Threat), you can roll on the oracle table for your specific threat to generate an action, approach, or complication. Interpret the oracle’s answer as appropriate to the nature of the threat and the current situation. - If you aren’t using the threat mechanics within your campaign, you can use still these oracles to inspire details for enemies, troubles, and complications. - Source: - Authors: - - Shawn Tomkin - Title: "Ironsworn: Delve" - Page: 220 - License: https://creativecommons.org/licenses/by-nc-sa/4.0/ - Tables: - Category: - Title: - Canonical: "Threat: Category" - Short: Category - Table: - - [1, 10, Burgeoning Conflict, Oracle rolls: [Ironsworn/Oracle/Threat/Burgeoning_Conflict]] - - [11, 20, Cursed Site, Oracle rolls: [Ironsworn/Oracle/Threat/Cursed_Site]] - - [21, 30, Environmental Calamity, Oracle rolls: [Ironsworn/Oracle/Threat/Environmental_Calamity]] - - [31, 40, Malignant Plague, Oracle rolls: [Ironsworn/Oracle/Threat/Malignant_Plague]] - - [41, 50, Rampaging Creature, Oracle rolls: [Ironsworn/Oracle/Threat/Rampaging_Creature]] - - [51, 60, Ravaging Horde, Oracle rolls: [Ironsworn/Oracle/Threat/Ravaging_Horde]] - - [61, 70, Scheming Leader, Oracle rolls: [Ironsworn/Oracle/Threat/Scheming_Leader]] - - [71, 80, Power-Hungry Mystic, Oracle rolls: [Ironsworn/Oracle/Threat/Power-Hungry_Mystic]] - - [81, 90, Zealous Cult, Oracle rolls: [Ironsworn/Oracle/Threat/Zealous_Cult]] - - [91, 100, *result:RollTwice] - Burgeoning Conflict: - Title: - Canonical: "Threat: Burgeoning Conflict" - Short: Burgeoning Conflict - _idFragment: Burgeoning Conflict - Source: - Page: 221 - Table: - - [1, 10, "Allow warmongers to gain influence"] - - [11, 20, "Break a treaty"] - - [21, 30, "Force a hasty decision"] - - [31, 40, "Deepen suspicions"] - - [41, 50, "Trigger a confrontation"] - - [51, 60, "Subvert a potential accord"] - - [61, 70, "Isolate the antagonists"] - - [71, 80, "Draw new battle lines"] - - [81, 90, "Reveal an unexpected aspect of the dispute"] - - [91, 100, "Introduce a new person or faction to complicate the situation"] - Cursed Site: - Title: - Canonical: "Threat: Cursed Site" - Short: Cursed Site - _idFragment: Cursed Site - Source: - Page: 221 - Table: - - [1, 10, "Unleash a creature or being"] - - [11, 20, "Lure the unwary into its depths"] - - [21, 30, "Offer promises of power"] - - [31, 40, "Reveal a new aspect of its cursed history"] - - [41, 50, "Expand its malignancy to surrounding lands"] - - [51, 60, "Leave its mark on an inhabitant or visitor"] - - [61, 70, "Reveal hidden depths"] - - [71, 80, "Ensnare an important person or object"] - - [81, 90, "Corrupt the environment"] - - [91, 100, "Transform its nature"] - Environmental Calamity: - Title: - Canonical: "Threat: Environmental Calamity" - Short: Environmental Calamity - _idFragment: Environmental Calamity - Source: - Page: 221 - Table: - - [1, 10, "Devastate a place"] - - [11, 20, "Block a path"] - - [21, 30, "Threaten a community with imminent destruction"] - - [31, 40, "Manifest unexpected effects"] - - [41, 50, "Expand in scope or intensity"] - - [51, 60, "Allow someone to take advantage"] - - [61, 70, "Deprive of resources"] - - [71, 80, "Isolate an important person or community"] - - [81, 90, "Force refugees into hostile lands"] - - [91, 100, "Disrupt natural ecosystems"] - Malignant Plague: - Title: - Canonical: "Threat: Malignant Plague" - Short: Malignant Plague - _idFragment: Malignant Plague - Source: - Page: 222 - Table: - - [1, 10, "Manifest new symptoms or effects"] - - [11, 20, "Infect someone important"] - - [21, 30, "Expand to new territory or communities"] - - [31, 40, "Allow someone to take advantage"] - - [41, 50, "Allow someone to take the blame"] - - [51, 60, "Create panic or disorder"] - - [61, 70, "Force a horrible decision"] - - [71, 80, "Lure into complacency"] - - [81, 90, "Reveal the root of the sickness"] - - [91, 100, "Undermine a potential cure"] - Rampaging Creature: - Title: - Canonical: "Threat: Rampaging Creature" - Short: Rampaging Creature - _idFragment: Rampaging Creature - Source: - Page: 222 - Table: - - [1, 10, "Reveal a new aspect of its nature or abilities"] - - [11, 20, "Expand its territory"] - - [21, 30, "Make a sudden and brutal attack"] - - [31, 40, "Control or influence lesser creatures"] - - [41, 50, "Create confusion or strife"] - - [51, 60, "Leave foreboding signs"] - - [61, 70, "Lure the unwary"] - - [71, 80, "Imperil an event"] - - [81, 90, "Assert control over a location"] - - [91, 100, "Threaten resources"] - Ravaging Horde: - Title: - Canonical: "Threat: Ravaging Horde" - Short: Ravaging Horde - _idFragment: Ravaging Horde - Source: - Page: 222 - Table: - - [1, 10, "Overrun defenses"] - - [11, 20, "Gather resources"] - - [21, 30, "Attack a location"] - - [31, 40, "Expand forces"] - - [41, 50, "Appoint or reveal a leader"] - - [51, 60, "Send forth a champion"] - - [61, 70, "Create a diversion"] - - [71, 80, "Undermine an opposing force from within"] - - [81, 90, "Cut off supplies or reinforcements"] - - [91, 100, "Employ a new weapon"] - Scheming Leader: - Title: - Canonical: "Threat: Scheming Leader" - Short: Scheming Leader - _idFragment: Scheming Leader - Source: - Page: 223 - Table: - - [1, 10, "Defeat an enemy"] - - [11, 20, "Form a new alliance"] - - [21, 30, "Usurp or undermine another leader"] - - [31, 40, "Force the loyalty of a community or important person"] - - [41, 50, "Enact a new law or tradition"] - - [51, 60, "Rescind an old law or tradition"] - - [61, 70, "Reveal a true intention"] - - [71, 80, "Unravel an existing alliance"] - - [81, 90, "Incite conflict"] - - [91, 100, "Use an unexpected capability or asset"] - Power-Hungry Mystic: - Title: - Canonical: "Threat: Power-Hungry Mystic" - Short: Power-Hungry Mystic - _idFragment: Power-Hungry Mystic - Source: - Page: 223 - Table: - - [1, 10, "Gain hidden knowledge"] - - [11, 20, "Assault an enemy with magic"] - - [21, 30, "Despoil a place through magic"] - - [31, 40, "Forge a bond with ancient forces"] - - [41, 50, "Create magical wards or protections"] - - [51, 60, "Obtain a powerful artifact"] - - [61, 70, "Tempt with power or secrets"] - - [71, 80, "Recruit a follower or ally"] - - [81, 90, "Sacrifice something in exchange for greater power"] - - [91, 100, "Use magic to trick or deceive"] - Zealous Cult: - Title: - Canonical: "Threat: Zealous Cult" - Short: Zealous Cult - _idFragment: Zealous Cult - Source: - Page: 223 - Table: - - [1, 10, "Overtake a faction or community"] - - [11, 20, "Unlock secrets to greater power"] - - [21, 30, "Establish false credibility"] - - [31, 40, "Appoint or reveal a leader"] - - [41, 50, "Lure new members or establish alliances"] - - [51, 60, "Subvert opposition through devious schemes"] - - [61, 70, "Attack opposition directly"] - - [71, 80, "Spread the word of its doctrine"] - - [81, 90, "Reveal a dire prophecy"] - - [91, 100, "Reveal its true nature or goal"] \ No newline at end of file + If you aren’t using the threat mechanics within your campaign, you can use still these oracles to inspire details for enemies, troubles, and complications. + Source: + Authors: + - Shawn Tomkin + Title: "Ironsworn: Delve" + Page: 220 + License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + Tables: + Category: + Title: + Canonical: "Threat: Category" + Short: Category + Table: + - [1, 10, Burgeoning Conflict, Oracle rolls: [Ironsworn/Oracle/Threat/Burgeoning_Conflict]] + - [11, 20, Cursed Site, Oracle rolls: [Ironsworn/Oracle/Threat/Cursed_Site]] + - [21, 30, Environmental Calamity, Oracle rolls: [Ironsworn/Oracle/Threat/Environmental_Calamity]] + - [31, 40, Malignant Plague, Oracle rolls: [Ironsworn/Oracle/Threat/Malignant_Plague]] + - [41, 50, Rampaging Creature, Oracle rolls: [Ironsworn/Oracle/Threat/Rampaging_Creature]] + - [51, 60, Ravaging Horde, Oracle rolls: [Ironsworn/Oracle/Threat/Ravaging_Horde]] + - [61, 70, Scheming Leader, Oracle rolls: [Ironsworn/Oracle/Threat/Scheming_Leader]] + - [71, 80, Power-Hungry Mystic, Oracle rolls: [Ironsworn/Oracle/Threat/Power-Hungry_Mystic]] + - [81, 90, Zealous Cult, Oracle rolls: [Ironsworn/Oracle/Threat/Zealous_Cult]] + - [91, 100, *result:RollTwice] + Burgeoning Conflict: + Title: + Canonical: "Threat: Burgeoning Conflict" + Short: Burgeoning Conflict + _idFragment: Burgeoning Conflict + Source: + Page: 221 + Table: + - [1, 10, "Allow warmongers to gain influence"] + - [11, 20, "Break a treaty"] + - [21, 30, "Force a hasty decision"] + - [31, 40, "Deepen suspicions"] + - [41, 50, "Trigger a confrontation"] + - [51, 60, "Subvert a potential accord"] + - [61, 70, "Isolate the antagonists"] + - [71, 80, "Draw new battle lines"] + - [81, 90, "Reveal an unexpected aspect of the dispute"] + - [91, 100, "Introduce a new person or faction to complicate the situation"] + Cursed Site: + Title: + Canonical: "Threat: Cursed Site" + Short: Cursed Site + _idFragment: Cursed Site + Source: + Page: 221 + Table: + - [1, 10, "Unleash a creature or being"] + - [11, 20, "Lure the unwary into its depths"] + - [21, 30, "Offer promises of power"] + - [31, 40, "Reveal a new aspect of its cursed history"] + - [41, 50, "Expand its malignancy to surrounding lands"] + - [51, 60, "Leave its mark on an inhabitant or visitor"] + - [61, 70, "Reveal hidden depths"] + - [71, 80, "Ensnare an important person or object"] + - [81, 90, "Corrupt the environment"] + - [91, 100, "Transform its nature"] + Environmental Calamity: + Title: + Canonical: "Threat: Environmental Calamity" + Short: Environmental Calamity + _idFragment: Environmental Calamity + Source: + Page: 221 + Table: + - [1, 10, "Devastate a place"] + - [11, 20, "Block a path"] + - [21, 30, "Threaten a community with imminent destruction"] + - [31, 40, "Manifest unexpected effects"] + - [41, 50, "Expand in scope or intensity"] + - [51, 60, "Allow someone to take advantage"] + - [61, 70, "Deprive of resources"] + - [71, 80, "Isolate an important person or community"] + - [81, 90, "Force refugees into hostile lands"] + - [91, 100, "Disrupt natural ecosystems"] + Malignant Plague: + Title: + Canonical: "Threat: Malignant Plague" + Short: Malignant Plague + _idFragment: Malignant Plague + Source: + Page: 222 + Table: + - [1, 10, "Manifest new symptoms or effects"] + - [11, 20, "Infect someone important"] + - [21, 30, "Expand to new territory or communities"] + - [31, 40, "Allow someone to take advantage"] + - [41, 50, "Allow someone to take the blame"] + - [51, 60, "Create panic or disorder"] + - [61, 70, "Force a horrible decision"] + - [71, 80, "Lure into complacency"] + - [81, 90, "Reveal the root of the sickness"] + - [91, 100, "Undermine a potential cure"] + Rampaging Creature: + Title: + Canonical: "Threat: Rampaging Creature" + Short: Rampaging Creature + _idFragment: Rampaging Creature + Source: + Page: 222 + Table: + - [1, 10, "Reveal a new aspect of its nature or abilities"] + - [11, 20, "Expand its territory"] + - [21, 30, "Make a sudden and brutal attack"] + - [31, 40, "Control or influence lesser creatures"] + - [41, 50, "Create confusion or strife"] + - [51, 60, "Leave foreboding signs"] + - [61, 70, "Lure the unwary"] + - [71, 80, "Imperil an event"] + - [81, 90, "Assert control over a location"] + - [91, 100, "Threaten resources"] + Ravaging Horde: + Title: + Canonical: "Threat: Ravaging Horde" + Short: Ravaging Horde + _idFragment: Ravaging Horde + Source: + Page: 222 + Table: + - [1, 10, "Overrun defenses"] + - [11, 20, "Gather resources"] + - [21, 30, "Attack a location"] + - [31, 40, "Expand forces"] + - [41, 50, "Appoint or reveal a leader"] + - [51, 60, "Send forth a champion"] + - [61, 70, "Create a diversion"] + - [71, 80, "Undermine an opposing force from within"] + - [81, 90, "Cut off supplies or reinforcements"] + - [91, 100, "Employ a new weapon"] + Scheming Leader: + Title: + Canonical: "Threat: Scheming Leader" + Short: Scheming Leader + _idFragment: Scheming Leader + Source: + Page: 223 + Table: + - [1, 10, "Defeat an enemy"] + - [11, 20, "Form a new alliance"] + - [21, 30, "Usurp or undermine another leader"] + - [31, 40, "Force the loyalty of a community or important person"] + - [41, 50, "Enact a new law or tradition"] + - [51, 60, "Rescind an old law or tradition"] + - [61, 70, "Reveal a true intention"] + - [71, 80, "Unravel an existing alliance"] + - [81, 90, "Incite conflict"] + - [91, 100, "Use an unexpected capability or asset"] + Power-Hungry Mystic: + Title: + Canonical: "Threat: Power-Hungry Mystic" + Short: Power-Hungry Mystic + _idFragment: Power-Hungry Mystic + Source: + Page: 223 + Table: + - [1, 10, "Gain hidden knowledge"] + - [11, 20, "Assault an enemy with magic"] + - [21, 30, "Despoil a place through magic"] + - [31, 40, "Forge a bond with ancient forces"] + - [41, 50, "Create magical wards or protections"] + - [51, 60, "Obtain a powerful artifact"] + - [61, 70, "Tempt with power or secrets"] + - [71, 80, "Recruit a follower or ally"] + - [81, 90, "Sacrifice something in exchange for greater power"] + - [91, 100, "Use magic to trick or deceive"] + Zealous Cult: + Title: + Canonical: "Threat: Zealous Cult" + Short: Zealous Cult + _idFragment: Zealous Cult + Source: + Page: 223 + Table: + - [1, 10, "Overtake a faction or community"] + - [11, 20, "Unlock secrets to greater power"] + - [21, 30, "Establish false credibility"] + - [31, 40, "Appoint or reveal a leader"] + - [41, 50, "Lure new members or establish alliances"] + - [51, 60, "Subvert opposition through devious schemes"] + - [61, 70, "Attack opposition directly"] + - [71, 80, "Spread the word of its doctrine"] + - [81, 90, "Reveal a dire prophecy"] + - [91, 100, "Reveal its true nature or goal"] \ No newline at end of file diff --git a/_master-data/Ironsworn/Oracles/Trap-Delve.yaml b/_master-data/Ironsworn/Oracles/Trap-Delve.yaml index e113ca984..3be226ec7 100644 --- a/_master-data/Ironsworn/Oracles/Trap-Delve.yaml +++ b/_master-data/Ironsworn/Oracles/Trap-Delve.yaml @@ -1,90 +1,96 @@ -Trap: - Title: - Canonical: Trap - Source: - Authors: - - Shawn Tomkin - Title: "Ironsworn: Delve" - Page: 217 - License: https://creativecommons.org/licenses/by-nc-sa/4.0/ - Summary: Identify the characteristics and effects of a trap within a site. - # TODO: replace the page ref for scene challenges to an article on the topic, once that's available - Description: |- - If you encounter a trap within a site, use these oracles to better understand the nature or function of this obstacle. Roll once for an [Event](Ironsworn/Oracles/Trap/Event) and once for a [Component](Ironsworn/Oracles/Trap/Component), and interpret the response as appropriate to the situation and environment. A trap might be a physical, supernatural, or an ambush by a denizen. +Source: + Authors: + - Shawn Tomkin + Title: "Ironsworn: Delve" + License: https://creativecommons.org/licenses/by-nc-sa/4.0/ +Oracle Sets: + Trap: + Title: + Canonical: Trap + Source: + Authors: + - Shawn Tomkin + Title: "Ironsworn: Delve" + Page: 217 + License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + Summary: Identify the characteristics and effects of a trap within a site. + # TODO: replace the page ref for scene challenges to an article on the topic, once that's available + Description: |- + If you encounter a trap within a site, use these oracles to better understand the nature or function of this obstacle. Roll once for an [Event](Ironsworn/Oracles/Trap/Event) and once for a [Component](Ironsworn/Oracles/Trap/Component), and interpret the response as appropriate to the situation and environment. A trap might be a physical, supernatural, or an ambush by a denizen. - If you are in a position to overcome or avoid the trap, make moves to see what happens. A simple trap might be dealt with in a single action, such as through the [Face Danger](Ironsworn/Moves/Adventure/Face_Danger) move. A complex trap could be represented as a scene challenge (*Ironsworn Core*, page 234). - Tables: - Trap: - Title: - Canonical: "Trap: Event" - Short: Event - _idFragment: Event - Usage: - Suggestions: - Oracle rolls: - - Ironsworn/Oracles/Trap/Component - Source: - Page: 217 - Table: - - [1, 4, Block] - - [5, 8, Create] - - [9, 12, Break] - - [13, 16, Puncture] - - [17, 20, Entangle] - - [21, 24, Enclose] - - [25, 28, Ambush] - - [29, 32, Snare] - - [33, 36, Change] - - [37, 40, Imitate] - - [41, 44, Crush] - - [45, 48, Drop] - - [49, 52, Conceal] - - [53, 56, Lure] - - [57, 60, Release] - - [61, 64, Obscure] - - [65, 68, Cut] - - [69, 72, Smother] - - [73, 76, Collapse] - - [77, 80, Summon] - - [81, 84, Move] - - [85, 88, Surprise] - - [89, 92, Divert] - - [93, 96, Attack] - - [97, 100, Trigger] - Component: - Title: - Canonical: "Trap: Component" - Short: Component - _idFragment: Component - Usage: - Suggestions: - Oracle rolls: - - Ironsworn/Oracles/Trap/Event - Source: - Page: 217 - Table: - - [1, 4, Pit] - - [5, 8, Water] - - [9, 12, Fire] - - [13, 16, Projectile] - - [17, 20, Passage] - - [21, 24, Fall] - - [25, 28, Debris] - - [29, 32, Fear] - - [33, 36, Alarm] - - [37, 40, Trigger] - - [41, 44, Cold] - - [45, 48, Weapon] - - [49, 52, Darkness] - - [53, 56, Decay] - - [57, 60, Path] - - [61, 64, Stone] - - [65, 68, Terrain] - - [69, 72, Poison] - - [73, 76, Barrier] - - [77, 80, Overhead] - - [81, 84, Magic] - - [85, 88, Toxin] - - [89, 92, Earth] - - [93, 96, Light] - - [97, 100, Denizen] + If you are in a position to overcome or avoid the trap, make moves to see what happens. A simple trap might be dealt with in a single action, such as through the [Face Danger](Ironsworn/Moves/Adventure/Face_Danger) move. A complex trap could be represented as a scene challenge (*Ironsworn Core*, page 234). + Tables: + Trap: + Title: + Canonical: "Trap: Event" + Short: Event + _idFragment: Event + Usage: + Suggestions: + Oracle rolls: + - Ironsworn/Oracles/Trap/Component + Source: + Page: 217 + Table: + - [1, 4, Block] + - [5, 8, Create] + - [9, 12, Break] + - [13, 16, Puncture] + - [17, 20, Entangle] + - [21, 24, Enclose] + - [25, 28, Ambush] + - [29, 32, Snare] + - [33, 36, Change] + - [37, 40, Imitate] + - [41, 44, Crush] + - [45, 48, Drop] + - [49, 52, Conceal] + - [53, 56, Lure] + - [57, 60, Release] + - [61, 64, Obscure] + - [65, 68, Cut] + - [69, 72, Smother] + - [73, 76, Collapse] + - [77, 80, Summon] + - [81, 84, Move] + - [85, 88, Surprise] + - [89, 92, Divert] + - [93, 96, Attack] + - [97, 100, Trigger] + Component: + Title: + Canonical: "Trap: Component" + Short: Component + _idFragment: Component + Usage: + Suggestions: + Oracle rolls: + - Ironsworn/Oracles/Trap/Event + Source: + Page: 217 + Table: + - [1, 4, Pit] + - [5, 8, Water] + - [9, 12, Fire] + - [13, 16, Projectile] + - [17, 20, Passage] + - [21, 24, Fall] + - [25, 28, Debris] + - [29, 32, Fear] + - [33, 36, Alarm] + - [37, 40, Trigger] + - [41, 44, Cold] + - [45, 48, Weapon] + - [49, 52, Darkness] + - [53, 56, Decay] + - [57, 60, Path] + - [61, 64, Stone] + - [65, 68, Terrain] + - [69, 72, Poison] + - [73, 76, Barrier] + - [77, 80, Overhead] + - [81, 84, Magic] + - [85, 88, Toxin] + - [89, 92, Earth] + - [93, 96, Light] + - [97, 100, Denizen] diff --git a/_master-data/Ironsworn/Oracles/Turning_Point.yaml b/_master-data/Ironsworn/Oracles/Turning_Point.yaml index cee7bc778..fd23133c2 100644 --- a/_master-data/Ironsworn/Oracles/Turning_Point.yaml +++ b/_master-data/Ironsworn/Oracles/Turning_Point.yaml @@ -1,220 +1,226 @@ -Turning Point: - Title: - Canonical: Turning Point - Source: - Authors: - - Shawn Tomkin - Title: Ironsworn Rulebook - Page: 188 - License: https://creativecommons.org/licenses/by-sa/4.0/ - Tables: - Combat Action: - Title: - Canonical: "Oracle 16: Combat Action" - Standard: Combat Action - Short: Combat Action - _idFragment: Combat Action - Description: Use this oracle to help inspire an action for an NPC in combat. When you’re not sure what your foe does next, particularly when they have initiative, roll on this table and interpret the result as appropriate to the situation. - Source: - Page: 188 - Table: - - [1, 3, "Compel a surrender."] - - [4, 6, "Coordinate with allies."] - - [7, 9, "Gather reinforcements."] - - [10, 13, "Seize something or someone."] - - [14, 17, "Provoke a reckless response."] - - [18, 21, "Intimidate or frighten."] - - [22, 25, "Reveal a surprising truth."] - - [26, 29, "Shift focus to someone or something else."] - - [30, 33, "Destroy something, or render it useless."] - - [34, 39, "Take a decisive action."] - - [40, 45, "Reinforce defenses."] - - [46, 52, "Ready an action."] - - [53, 60, "Use the terrain to gain advantage."] - - [61, 68, "Leverage the advantage of a weapon or ability."] - - [69, 78, "Create an opportunity."] - - [79, 89, "Attack with precision."] - - [90, 99, "Attack with power."] - - [100, 100, "Take a completely unexpected action."] - Mystic Backlash: - Title: - Canonical: "Oracle 17: Mystic Backlash" - Standard: Mystic Backlash - Short: Mystic Backlash - _idFragment: Mystic Backlash - Source: - License: https://creativecommons.org/licenses/by-nc-sa/4.0/ - Page: 189 - Description: Those who deal in magic may find themselves at the mercy of chaos. This oracle can supplement, or replace, the [Pay the Price](Ironsworn/Moves/Fate/Pay_the_Price) table when resolving the outcome of a failed ritual or other negative interaction with mystical forces. Use this oracle in dramatic moments, or to introduce an unexpected outcome triggered by a match. - Table: - - [1, 4, "Your ritual has the opposite affect."] - - [5, 8, "You are sapped of strength."] - - [9, 12, "Your friend, ally, or companion is adversely affected."] - - [13, 16, "You destroy an important object."] - - [17, 20, "You inadvertently summon a horror."] - - [21, 24, "You collapse, and drift into a troubled sleep."] - - [ - 25, - 28, - "You undergo a physical torment which leaves its mark upon you.", - ] - - [29, 32, "You hear ghostly voices whispering of dark portents."] - - [ - 33, - 36, - "You are lost in shadow, and find yourself in another place without memory of how you got there.", - ] - - [37, 40, "You alert someone or something to your presence."] - - [ - 41, - 44, - "You are not yourself, and act against a friend, ally, or companion.", - ] - - [ - 45, - 48, - "You affect or damage your surroundings, causing a disturbance or potential harm.", - ] - - [49, 52, "You waste resources."] - - [53, 56, "You suffer the loss of a sense for several hours."] - - [ - 57, - 60, - "You lose your connection to magic for a day or so, and cannot perform rituals.", - ] - - [ - 61, - 64, - "Your ritual affects the target in an unexpected and problematic way.", - ] - - [65, 68, "Your ritual reveals a surprising and troubling truth."] - - [69, 72, "You are tempted by dark powers."] - - [73, 76, "You see a troubling vision of your future."] - - [ - 77, - 80, - "You can't perform this ritual again until you acquire an important component.", - ] - - [81, 84, "You develop a strange fear or compulsion."] - - [ - 85, - 88, - "Your ritual causes creatures to exhibit strange or aggressive behavior.", - ] - - [89, 92, "You are tormented by an apparition from your past."] - - [93, 96, "You are wracked with sudden sickness."] - - [ - 97, - 100, - "Roll twice more on this table. Both results occur. If they are the same result, make it worse.", - *result:RollTwice.MakeItWorse - ] - Major Plot Twist: - Title: - Canonical: "Oracle 18: Major Plot Twist" - Standard: Major Plot Twist - Short: Plot Twist - _idFragment: Major Plot Twist - Description: Use this oracle to introduce a narrative surprise or revelation. Most of these results have a negative implication, and can be used to resolve a match at a crucial moment in your story. In particular, this is an effective tool to leverage when you make a move with matched 10’s on the challenge dice. - Source: - Page: 190 - Table: - - [1, 5, "It was all a diversion."] - - [6, 10, "A dark secret is revealed."] - - [11, 15, "A trap is sprung."] - - [16, 20, "An assumption is revealed to be false."] - - [21, 25, "A secret alliance is revealed."] - - [26, 30, "Your actions benefit an enemy."] - - [31, 35, "Someone returns unexpectedly."] - - [36, 40, "A more dangerous foe is revealed."] - - [41, 45, "You and an enemy share a common goal."] - - [46, 50, "A true identity is revealed."] - - [51, 55, "You are betrayed by someone who was trusted."] - - [56, 60, "You are too late."] - - [61, 65, "The true enemy is revealed."] - - [66, 70, "The enemy gains new allies."] - - [71, 75, "A new danger appears."] - - [76, 80, "Someone or something goes missing."] - - [81, 85, "The truth of a relationship is revealed."] - - [ - 86, - 90, - "Two seemingly unrelated situations are shown to be connected.", - ] - - [91, 95, "Unexpected powers or abilities are revealed."] - - [ - 96, - 100, - "Roll twice more on this table. Both results occur. If they are the same result, make it more dramatic.", - *result:RollTwice.MakeItWorse - ] - Sets: - Challenge Rank: - Title: - Canonical: "Oracle 19: Challenge Rank" - Standard: Challenge Rank - Short: Rank - _idFragment: Challenge Rank - Display: - Columns: - - Type: dice range - Content: Ironsworn/Oracles/Turning_Point/Challenge_Rank/Quest - - Content: Ironsworn/Oracles/Turning_Point/Challenge_Rank/Quest - Label: Rank - Type: string - Key: Result - - Content: Ironsworn/Oracles/Turning_Point/Challenge_Rank/Quest - Label: Quest - Type: string - Key: Summary - - Content: Ironsworn/Oracles/Turning_Point/Challenge_Rank/Journey - Label: Journey - Type: string - Key: Summary - - Content: Ironsworn/Oracles/Turning_Point/Challenge_Rank/Foes - Label: Foes - Type: string - Key: Summary - Description: Use this oracle when you want to randomly determine the challenge rank of a quest, journey, or foe. - Source: - Page: 190 - Tables: - Quest: - Title: - Canonical: Quest - Display: - Column of: Ironsworn/Oracles/Turning_Point/Challenge_Rank - Table: &challenge_rank_table - - [1, 20, Troublesome, "A challenging quest with a small number of obstacles"] - - [21, 55, Dangerous, "An involved quest with several tough obstacles"] - - [56, 80, Formidable, "A complex quest with many intimidating obstacles"] - - [81, 93, Extreme, "An overwhelming quest of staggering proportions"] - - [94, 100, Epic, "A life-defining quest of unknowable scope"] - Journey: - Title: - Canonical: Journey - Display: - Column of: Ironsworn/Oracles/Turning_Point/Challenge_Rank - _templateTableRows: - rolls: *challenge_rank_table - content: - - [Troublesome, "Traveling a moderate distance within a single region"] - - [Dangerous, "Traveling a long distance within a single region, or across rough terrain"] - - [Formidable, "Traveling from one region to another, or across especially challenging terrain,"] - - [Extreme, "Traveling through multiple regions"] - - [Epic, "Traveling from one end of the Ironlands to another, or to a separate land"] - Foe: - Title: - Canonical: Foes - Short: Foe - _idFragment: Foes - Display: - Column of: Ironsworn/Oracles/Turning_Point/Challenge_Rank - _templateTableRows: - rolls: *challenge_rank_table - content: - - [Troublesome, "Common enemies"] - - [Dangerous, "Capable fighters and deadly creatures"] - - [Formidable, "Exceptional fighters and mighty creatures"] - - [Extreme, "Foes of overwhelming skill or power"] - - [Epic, "Legendary foes of mythic power"] +Source: + Authors: + - Shawn Tomkin + Title: Ironsworn Rulebook + License: https://creativecommons.org/licenses/by-sa/4.0/ +Oracle Sets: + Turning Point: + Title: + Canonical: Turning Point + Source: + Authors: + - Shawn Tomkin + Title: Ironsworn Rulebook + Page: 188 + License: https://creativecommons.org/licenses/by-sa/4.0/ + Tables: + Combat Action: + Title: + Canonical: "Oracle 16: Combat Action" + Standard: Combat Action + Short: Combat Action + _idFragment: Combat Action + Description: Use this oracle to help inspire an action for an NPC in combat. When you’re not sure what your foe does next, particularly when they have initiative, roll on this table and interpret the result as appropriate to the situation. + Source: + Page: 188 + Table: + - [1, 3, "Compel a surrender."] + - [4, 6, "Coordinate with allies."] + - [7, 9, "Gather reinforcements."] + - [10, 13, "Seize something or someone."] + - [14, 17, "Provoke a reckless response."] + - [18, 21, "Intimidate or frighten."] + - [22, 25, "Reveal a surprising truth."] + - [26, 29, "Shift focus to someone or something else."] + - [30, 33, "Destroy something, or render it useless."] + - [34, 39, "Take a decisive action."] + - [40, 45, "Reinforce defenses."] + - [46, 52, "Ready an action."] + - [53, 60, "Use the terrain to gain advantage."] + - [61, 68, "Leverage the advantage of a weapon or ability."] + - [69, 78, "Create an opportunity."] + - [79, 89, "Attack with precision."] + - [90, 99, "Attack with power."] + - [100, 100, "Take a completely unexpected action."] + Mystic Backlash: + Title: + Canonical: "Oracle 17: Mystic Backlash" + Standard: Mystic Backlash + Short: Mystic Backlash + _idFragment: Mystic Backlash + Source: + License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + Page: 189 + Description: Those who deal in magic may find themselves at the mercy of chaos. This oracle can supplement, or replace, the [Pay the Price](Ironsworn/Moves/Fate/Pay_the_Price) table when resolving the outcome of a failed ritual or other negative interaction with mystical forces. Use this oracle in dramatic moments, or to introduce an unexpected outcome triggered by a match. + Table: + - [1, 4, "Your ritual has the opposite affect."] + - [5, 8, "You are sapped of strength."] + - [9, 12, "Your friend, ally, or companion is adversely affected."] + - [13, 16, "You destroy an important object."] + - [17, 20, "You inadvertently summon a horror."] + - [21, 24, "You collapse, and drift into a troubled sleep."] + - [ + 25, + 28, + "You undergo a physical torment which leaves its mark upon you.", + ] + - [29, 32, "You hear ghostly voices whispering of dark portents."] + - [ + 33, + 36, + "You are lost in shadow, and find yourself in another place without memory of how you got there.", + ] + - [37, 40, "You alert someone or something to your presence."] + - [ + 41, + 44, + "You are not yourself, and act against a friend, ally, or companion.", + ] + - [ + 45, + 48, + "You affect or damage your surroundings, causing a disturbance or potential harm.", + ] + - [49, 52, "You waste resources."] + - [53, 56, "You suffer the loss of a sense for several hours."] + - [ + 57, + 60, + "You lose your connection to magic for a day or so, and cannot perform rituals.", + ] + - [ + 61, + 64, + "Your ritual affects the target in an unexpected and problematic way.", + ] + - [65, 68, "Your ritual reveals a surprising and troubling truth."] + - [69, 72, "You are tempted by dark powers."] + - [73, 76, "You see a troubling vision of your future."] + - [ + 77, + 80, + "You can't perform this ritual again until you acquire an important component.", + ] + - [81, 84, "You develop a strange fear or compulsion."] + - [ + 85, + 88, + "Your ritual causes creatures to exhibit strange or aggressive behavior.", + ] + - [89, 92, "You are tormented by an apparition from your past."] + - [93, 96, "You are wracked with sudden sickness."] + - [ + 97, + 100, + "Roll twice more on this table. Both results occur. If they are the same result, make it worse.", + *result:RollTwice.MakeItWorse + ] + Major Plot Twist: + Title: + Canonical: "Oracle 18: Major Plot Twist" + Standard: Major Plot Twist + Short: Plot Twist + _idFragment: Major Plot Twist + Description: Use this oracle to introduce a narrative surprise or revelation. Most of these results have a negative implication, and can be used to resolve a match at a crucial moment in your story. In particular, this is an effective tool to leverage when you make a move with matched 10’s on the challenge dice. + Source: + Page: 190 + Table: + - [1, 5, "It was all a diversion."] + - [6, 10, "A dark secret is revealed."] + - [11, 15, "A trap is sprung."] + - [16, 20, "An assumption is revealed to be false."] + - [21, 25, "A secret alliance is revealed."] + - [26, 30, "Your actions benefit an enemy."] + - [31, 35, "Someone returns unexpectedly."] + - [36, 40, "A more dangerous foe is revealed."] + - [41, 45, "You and an enemy share a common goal."] + - [46, 50, "A true identity is revealed."] + - [51, 55, "You are betrayed by someone who was trusted."] + - [56, 60, "You are too late."] + - [61, 65, "The true enemy is revealed."] + - [66, 70, "The enemy gains new allies."] + - [71, 75, "A new danger appears."] + - [76, 80, "Someone or something goes missing."] + - [81, 85, "The truth of a relationship is revealed."] + - [ + 86, + 90, + "Two seemingly unrelated situations are shown to be connected.", + ] + - [91, 95, "Unexpected powers or abilities are revealed."] + - [ + 96, + 100, + "Roll twice more on this table. Both results occur. If they are the same result, make it more dramatic.", + *result:RollTwice.MakeItWorse + ] + Sets: + Challenge Rank: + Title: + Canonical: "Oracle 19: Challenge Rank" + Standard: Challenge Rank + Short: Rank + _idFragment: Challenge Rank + Display: + Columns: + - Type: dice range + Content: Ironsworn/Oracles/Turning_Point/Challenge_Rank/Quest + - Content: Ironsworn/Oracles/Turning_Point/Challenge_Rank/Quest + Label: Rank + Type: string + Key: Result + - Content: Ironsworn/Oracles/Turning_Point/Challenge_Rank/Quest + Label: Quest + Type: string + Key: Summary + - Content: Ironsworn/Oracles/Turning_Point/Challenge_Rank/Journey + Label: Journey + Type: string + Key: Summary + - Content: Ironsworn/Oracles/Turning_Point/Challenge_Rank/Foes + Label: Foes + Type: string + Key: Summary + Description: Use this oracle when you want to randomly determine the challenge rank of a quest, journey, or foe. + Source: + Page: 190 + Tables: + Quest: + Title: + Canonical: Quest + Display: + Column of: Ironsworn/Oracles/Turning_Point/Challenge_Rank + Table: &challenge_rank_table + - [1, 20, Troublesome, "A challenging quest with a small number of obstacles"] + - [21, 55, Dangerous, "An involved quest with several tough obstacles"] + - [56, 80, Formidable, "A complex quest with many intimidating obstacles"] + - [81, 93, Extreme, "An overwhelming quest of staggering proportions"] + - [94, 100, Epic, "A life-defining quest of unknowable scope"] + Journey: + Title: + Canonical: Journey + Display: + Column of: Ironsworn/Oracles/Turning_Point/Challenge_Rank + _templateTableRows: + rolls: *challenge_rank_table + content: + - [Troublesome, "Traveling a moderate distance within a single region"] + - [Dangerous, "Traveling a long distance within a single region, or across rough terrain"] + - [Formidable, "Traveling from one region to another, or across especially challenging terrain,"] + - [Extreme, "Traveling through multiple regions"] + - [Epic, "Traveling from one end of the Ironlands to another, or to a separate land"] + Foe: + Title: + Canonical: Foes + Short: Foe + _idFragment: Foes + Display: + Column of: Ironsworn/Oracles/Turning_Point/Challenge_Rank + _templateTableRows: + rolls: *challenge_rank_table + content: + - [Troublesome, "Common enemies"] + - [Dangerous, "Capable fighters and deadly creatures"] + - [Formidable, "Exceptional fighters and mighty creatures"] + - [Extreme, "Foes of overwhelming skill or power"] + - [Epic, "Legendary foes of mythic power"] diff --git a/_master-data/Ironsworn/Truths.yaml b/_master-data/Ironsworn/Truths.yaml index e7de3862a..b42882e19 100644 --- a/_master-data/Ironsworn/Truths.yaml +++ b/_master-data/Ironsworn/Truths.yaml @@ -1,10 +1,13 @@ -$schema: ./schema/cyclopedia.json +Source: + Title: Ironsworn Rulebook + License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + Authors: + - Shawn Tomkin Setting Truths: - - Title: + The Old World: + Title: Canonical: The Old World Source: - Title: Ironsworn Rulebook - License: https://creativecommons.org/licenses/by-nc-sa/4.0/ Page: 123 Options: - Description: |- @@ -19,11 +22,10 @@ Setting Truths: The Old World could no longer sustain us. We were too large in number. We had felled the forests. Our crops withered in the barren ground. The cities and villages overflowed with desperate, hungry people. Petty kings battled for scraps. We cast our fate to the sea and found the Ironlands. A new world. A fresh start. Quest Starter: |- Decades ago, the exodus ended. Since then, no ships have sailed here from the Old World. Until now. Word comes of a single ship, newly arrived across the vast ocean, grounded on the rocks of the Barrier Islands. When you hear the name of this ship, you swear to uncover the fate of its passengers. Why is it so important to you? - - Title: + Iron: + Title: Canonical: Iron Source: - Title: Ironsworn Rulebook - License: https://creativecommons.org/licenses/by-nc-sa/4.0/ Page: 124 Options: - Description: |- @@ -38,11 +40,10 @@ Setting Truths: Inscrutable metal pillars are found throughout the land. They are iron gray, and smooth as river stone. No one knows their purpose. Some say they are as old as the world. Some, such as the Iron Priests, worship them and swear vows upon them. Most make the warding sign and hurry along their way when they happen across one. The pillars do not tarnish, and even the sharpest blade cannot mark them. Quest Starter: |- Your dreams are haunted by visions of a pillar which stands in an unfamiliar landscape. What do you see? Why are you sworn to seek it out? - - Title: + Legacies: + Title: Canonical: Legacies Source: - Title: Ironsworn Rulebook - License: https://creativecommons.org/licenses/by-nc-sa/4.0/ Page: 124 Options: - Description: |- @@ -57,11 +58,10 @@ Setting Truths: Before the Ironlanders, before even the firstborn, another people lived here. Their ancient ruins are found throughout the Ironlands. Quest Starter: |- Miners uncovered an underground ruin. Thereafter, the people of the settlement are haunted by strange dreams. The ruins call to them, they say. Several have disappeared in that dark, ancient place – including someone important to you. - - Title: + Communities: + Title: Canonical: Communities Source: - Title: Ironsworn Rulebook - License: https://creativecommons.org/licenses/by-nc-sa/4.0/ Page: 125 Options: - Description: |- @@ -76,11 +76,10 @@ Setting Truths: We have forged the Ironlands into a home. Villages within the Havens are connected by well-trod roads. Trade caravans travel between settlements in the Havens and those in outlying regions. Even so, much of this land is untamed. Quest Starter: |- Caravans are forced to pay for passage along a trade road. This payment, one-quarter of the goods carried, leaves several communities without sufficient winter stores. Who is making these demands? How will you set things right? - - Title: + Leaders: + Title: Canonical: Leaders Source: - Title: Ironsworn Rulebook - License: https://creativecommons.org/licenses/by-nc-sa/4.0/ Page: 125 Options: - Description: |- @@ -95,11 +94,10 @@ Setting Truths: Numerous clan-chiefs rule over petty domains. Most are intent on becoming the one true king. Their squabbles will be our undoing. Quest Starter: |- You secretly possess one-half of the True Crown, an Old World relic. Centuries ago, this crown was broken in two when an assassin’s axe split the head of the supreme ruler. You are descended from that lineage. Who gave you this relic? Will you find the other half of the broken crown and attempt to unite the clans under your rule? Or, do you see another use for it? - - Title: + Defense: + Title: Canonical: Defense Source: - Title: Ironsworn Rulebook - License: https://creativecommons.org/licenses/by-nc-sa/4.0/ Page: 126 Options: - Description: |- @@ -114,11 +112,10 @@ Setting Truths: Our warbands are rallied to strike at our enemies or defend our holdings. Though not nearly as impressive as the armies that once marched across the Old World, these forces are as well-trained and equipped as their communities can manage. The banners of the warbands are adorned with depictions of their Old World history and Ironland victories. Quest Starter: |- A warband was wiped out in a battle against an overwhelming enemy. What is your connection to this band? Who defeated them? Will you carry their banner on a quest for vengeance, or do you vow to see it brought home to a place of honor? - - Title: + Mysticism: + Title: Canonical: Mysticism Source: - Title: Ironsworn Rulebook - License: https://creativecommons.org/licenses/by-nc-sa/4.0/ Page: 127 Options: - Description: |- @@ -136,11 +133,10 @@ Setting Truths: # Magic courses through this land as the rivers flow through the hills. Quest Starter: |- Someone you love walked the paths of power, and succumbed to it. Who are they? Why did they fall into darkness? Where are they now? Do you seek to save them or defeat them? - - Title: + Religion: + Title: Canonical: Religion Source: - Title: Ironsworn Rulebook - License: https://creativecommons.org/licenses/by-nc-sa/4.0/ Page: 127 Options: - Description: |- @@ -156,11 +152,10 @@ Setting Truths: Our gods are many. They make themselves known through manifestations and miracles. Some say they even secretly walk among us. The priests convey the will of the gods and hold sway over many communities. Quest Starter: |- You bear the mark of a god. What is it? The priests declare this as a sign you are chosen to fulfill a destiny. Do you accept this fate, and swear to see it through, or are you determined to see it undone? What force opposes you? - - Title: + Firstborn: + Title: Canonical: Firstborn Source: - Title: Ironsworn Rulebook - License: https://creativecommons.org/licenses/by-nc-sa/4.0/ Page: 128 Options: - Description: |- @@ -176,11 +171,10 @@ Setting Truths: The firstborn hold sway in the Ironlands. The elves of the deep forests and the giants of the hills tolerate us and even trade with us—for now. Ironlanders fear the day they decide we are no longer welcome here. Quest Starter: |- Humans and giants are on the brink of war. What has happened? Who do you side with? Can anything be done to defuse the situation? - - Title: + Beasts: + Title: Canonical: Beasts Source: - Title: Ironsworn Rulebook - License: https://creativecommons.org/licenses/by-nc-sa/4.0/ Page: 128 Options: - Description: |- @@ -195,11 +189,10 @@ Setting Truths: Beasts of all sorts roam the Ironlands. They dwell primarily in the reaches, but range into the settled lands to hunt. There, they often prey on cattle, but attacks on travelers, caravans, or even settlements are not uncommon. Quest Starter: |- Professional slayers earn their keep by killing beasts. This particular slayer, famed throughout the Ironlands for her numerous kills, has gone missing on a hunt. Did she finally meet her match, or is something more nefarious at play. What is your connection to her? - - Title: + Horrors: + Title: Canonical: Horrors Source: - Title: Ironsworn Rulebook - License: https://creativecommons.org/licenses/by-nc-sa/4.0/ Page: 129 Options: - Description: |- diff --git a/dataforged-tools/.eslintrc.json b/dataforged-tools/.eslintrc.json index f7d6e4d06..86d99e471 100644 --- a/dataforged-tools/.eslintrc.json +++ b/dataforged-tools/.eslintrc.json @@ -13,7 +13,6 @@ "*.d.ts", "analysis", "src/utils" - ], "parser": "@typescript-eslint/parser", "parserOptions": { diff --git a/dataforged-tools/build/constants/index.d.ts b/dataforged-tools/build/constants/index.d.ts index d313c9946..b95d9b1b1 100644 --- a/dataforged-tools/build/constants/index.d.ts +++ b/dataforged-tools/build/constants/index.d.ts @@ -6,6 +6,10 @@ export declare const MASTER_DATA_PATH = "../_master-data"; * @internal */ export declare const REFS_PATH: string; +/** + * @internal + */ +export declare const TEMPLATES_PATH: string; /** * @internal */ diff --git a/dataforged-tools/build/constants/index.d.ts.map b/dataforged-tools/build/constants/index.d.ts.map index c829e879c..6eea4984a 100644 --- a/dataforged-tools/build/constants/index.d.ts.map +++ b/dataforged-tools/build/constants/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,eAAO,MAAM,gBAAgB,oBAAoB,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,SAAS,QAA8B,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,OAAO,QAAkC,CAAC;AACvD;;GAEG;AACH,eAAO,MAAM,OAAO,QAAmC,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,UAAU,UAAwD,CAAC;AAEhF;;GAEG;AACH,eAAO,MAAM,OAAO,gBAAgB,CAAC;AAErC;;GAEG;AACH,eAAO,MAAM,eAAe,QAAgD,CAAC;AAE7E;;GAEG;AACH,eAAO,MAAM,QAAQ,QAAqC,CAAC"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,eAAO,MAAM,gBAAgB,oBAAoB,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,SAAS,QAA8B,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,cAAc,QAAwC,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,OAAO,QAAkC,CAAC;AACvD;;GAEG;AACH,eAAO,MAAM,OAAO,QAAmC,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,UAAU,UAAwD,CAAC;AAEhF;;GAEG;AACH,eAAO,MAAM,OAAO,gBAAgB,CAAC;AAErC;;GAEG;AACH,eAAO,MAAM,eAAe,QAAgD,CAAC;AAE7E;;GAEG;AACH,eAAO,MAAM,QAAQ,QAAqC,CAAC"} \ No newline at end of file diff --git a/dataforged-tools/build/constants/index.js b/dataforged-tools/build/constants/index.js index 00388cff0..d4649d0b9 100644 --- a/dataforged-tools/build/constants/index.js +++ b/dataforged-tools/build/constants/index.js @@ -6,6 +6,10 @@ export const MASTER_DATA_PATH = "../_master-data"; * @internal */ export const REFS_PATH = MASTER_DATA_PATH + "/_refs"; +/** + * @internal + */ +export const TEMPLATES_PATH = MASTER_DATA_PATH + "/_refs/templates"; /** * @internal */ diff --git a/dataforged-tools/build/constants/index.js.map b/dataforged-tools/build/constants/index.js.map index 3666a43fc..7551b010b 100644 --- a/dataforged-tools/build/constants/index.js.map +++ b/dataforged-tools/build/constants/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,iBAAiB,CAAC;AAElD;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,gBAAgB,GAAG,QAAQ,CAAC;AAErD;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,gBAAgB,GAAG,YAAY,CAAC;AACvD;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,gBAAgB,GAAG,aAAa,CAAC;AAExD;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,CAAE,CAAC;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC;AAErC;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,gBAAgB,GAAC,4BAA4B,CAAC;AAE7E;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,gBAAgB,GAAC,iBAAiB,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,iBAAiB,CAAC;AAElD;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,gBAAgB,GAAG,QAAQ,CAAC;AAErD;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;AAEpE;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,gBAAgB,GAAG,YAAY,CAAC;AACvD;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,gBAAgB,GAAG,aAAa,CAAC;AAExD;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,CAAE,CAAC;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC;AAErC;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,gBAAgB,GAAC,4BAA4B,CAAC;AAE7E;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,gBAAgB,GAAC,iBAAiB,CAAC"} \ No newline at end of file diff --git a/dataforged-tools/build/index.d.ts b/dataforged-tools/build/index.d.ts index d76261a13..3beded219 100644 --- a/dataforged-tools/build/index.d.ts +++ b/dataforged-tools/build/index.d.ts @@ -1,17 +1,6 @@ -export * from "./schema_json"; -export * from "./schema_yaml"; +export * from "./schema"; export * from "./builders"; export * from "./constants"; -export * from "./game_objects"; export * from "./utils"; -import type { Ironsworn, Starforged } from "./schema_json/GameData.js"; -/** - * @public - */ -declare const starforged: Starforged; -/** - * @public - */ -declare const ironsworn: Ironsworn; -export { starforged, ironsworn }; +export { starforged, ironsworn } from "./game-data.js"; //# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/dataforged-tools/build/index.d.ts.map b/dataforged-tools/build/index.d.ts.map index bb442d67d..3f77b7fc9 100644 --- a/dataforged-tools/build/index.d.ts.map +++ b/dataforged-tools/build/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,8BAA6B;AAC7B,8BAA6B;AAC7B,2BAA0B;AAC1B,4BAA2B;AAC3B,+BAA8B;AAC9B,wBAAuB;AACvB,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,kCAAiC;AAKtE;;GAEG;AACH,QAAA,MAAM,UAAU,YAA8B,CAAC;AAC/C;;GAEG;AACH,QAAA,MAAM,SAAS,WAA6B,CAAC;AAE7C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yBAAwB;AACxB,2BAA0B;AAC1B,4BAA2B;AAC3B,wBAAuB;AAEvB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"} \ No newline at end of file diff --git a/dataforged-tools/build/index.js b/dataforged-tools/build/index.js index f34e96fd3..83389fe66 100644 --- a/dataforged-tools/build/index.js +++ b/dataforged-tools/build/index.js @@ -1,20 +1,7 @@ -/* eslint-disable no-restricted-imports */ -// export * from "@utils/index.js"; -export * from "./schema_json"; -export * from "./schema_yaml"; +export * from "./schema"; export * from "./builders"; export * from "./constants"; -export * from "./game_objects"; export * from "./utils"; -import IS from "./json/ironsworn/datasworn.json" assert { type: "json" }; -import SF from "./json/starforged/dataforged.json" assert { type: "json" }; -/** - * @public - */ -const starforged = SF; -/** - * @public - */ -const ironsworn = IS; -export { starforged, ironsworn }; +// eslint-disable-next-line no-restricted-imports +export { starforged, ironsworn } from "./game-data.js"; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dataforged-tools/build/index.js.map b/dataforged-tools/build/index.js.map index 2413f210f..51f021d81 100644 --- a/dataforged-tools/build/index.js.map +++ b/dataforged-tools/build/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,mCAAmC;AACnC,8BAA6B;AAC7B,8BAA6B;AAC7B,2BAA0B;AAC1B,4BAA2B;AAC3B,+BAA8B;AAC9B,wBAAuB;AAGvB,OAAO,EAAE,MAAM,iCAAiC,CAAC,SAAQ,IAAI,EAAE,MAAM,EAAC,CAAC;AACvE,OAAO,EAAE,MAAM,mCAAmC,CAAC,SAAQ,IAAI,EAAE,MAAM,EAAC,CAAC;AAEzE;;GAEG;AACH,MAAM,UAAU,GAAG,EAA2B,CAAC;AAC/C;;GAEG;AACH,MAAM,SAAS,GAAG,EAA0B,CAAC;AAE7C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yBAAwB;AACxB,2BAA0B;AAC1B,4BAA2B;AAC3B,wBAAuB;AACvB,iDAAiD;AACjD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"} \ No newline at end of file diff --git a/dataforged-tools/build/start-ironsworn.d.ts.map b/dataforged-tools/build/start-ironsworn.d.ts.map index 06ff705a6..4e2c7c4fd 100644 --- a/dataforged-tools/build/start-ironsworn.d.ts.map +++ b/dataforged-tools/build/start-ironsworn.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"start-ironsworn.d.ts","sourceRoot":"","sources":["../src/start-ironsworn.ts"],"names":[],"mappings":"AAEA,OAAO,gCAAgC,CAAC"} \ No newline at end of file +{"version":3,"file":"start-ironsworn.d.ts","sourceRoot":"","sources":["../src/start-ironsworn.ts"],"names":[],"mappings":"AAAA,OAAO,gCAAgC,CAAC"} \ No newline at end of file diff --git a/dataforged-tools/build/start-ironsworn.js b/dataforged-tools/build/start-ironsworn.js index 244743be6..a97e161d0 100644 --- a/dataforged-tools/build/start-ironsworn.js +++ b/dataforged-tools/build/start-ironsworn.js @@ -1,11 +1,10 @@ -/* eslint-disable no-console */ import "source-map-support/register.js"; import { JSON_PATHS } from "./constants"; -import { Gamespace } from "./schema_json"; -import { buildDataforged } from "./utils/buildDataforged.js"; +import { Game } from "./schema"; +import { buildDataforged } from "./utils/builders/buildDataforged.js"; import { writeJson } from "./utils/io/writeJSON.js"; import _ from "lodash-es"; -const data = buildDataforged(Gamespace.Ironsworn); +const data = buildDataforged(Game.Ironsworn); _.forEach(data, (value, key) => { if (typeof value !== "string" && typeof value !== "undefined") { let fileName = ""; @@ -47,6 +46,7 @@ _.forEach(data, (value, key) => { } JSON_PATHS.forEach(path => { const newPath = path + `/ironsworn/${fileName}.json`; + // eslint-disable-next-line no-console console.log(`[StartIronsworn] Writing json to ${newPath}`); writeJson(newPath, value); }); diff --git a/dataforged-tools/build/start-ironsworn.js.map b/dataforged-tools/build/start-ironsworn.js.map index a676d2776..6d46b4683 100644 --- a/dataforged-tools/build/start-ironsworn.js.map +++ b/dataforged-tools/build/start-ironsworn.js.map @@ -1 +1 @@ -{"version":3,"file":"start-ironsworn.js","sourceRoot":"","sources":["../src/start-ironsworn.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAE/B,OAAO,gCAAgC,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,oBAAmB;AACxC,OAAO,EAAE,SAAS,EAAE,sBAAqB;AAEzC,OAAO,EAAE,eAAe,EAAE,mCAAkC;AAC5D,OAAO,EAAE,SAAS,EAAE,gCAA+B;AACnD,OAAO,CAAC,MAAM,WAAW,CAAC;AAE1B,MAAM,IAAI,GAAG,eAAe,CAAC,SAAS,CAAC,SAAS,CAAe,CAAC;AAEhE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;QAC7D,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,QAAQ,GAAsB,EAAE;YAC9B,KAAK,aAAa,CAAC,CAAC;gBAClB,QAAQ,GAAG,QAAQ,CAAC;gBACpB,MAAM;aACP;YACD,KAAK,YAAY,CAAC,CAAC;gBACjB,QAAQ,GAAG,YAAY,CAAC;gBACxB,MAAM;aACP;YACD,KAAK,aAAa,CAAC,CAAC;gBAClB,QAAQ,GAAG,SAAS,CAAC;gBACrB,MAAM;aACP;YACD,KAAK,iBAAiB,CAAC,CAAC;gBACtB,QAAQ,GAAG,OAAO,CAAC;gBACnB,MAAM;aACP;YACD,KAAK,gBAAgB,CAAC,CAAC;gBACrB,QAAQ,GAAG,QAAQ,CAAC;gBACpB,MAAM;aACP;YACD,KAAK,cAAc,CAAC,CAAC;gBACnB,QAAQ,GAAG,oBAAoB,CAAC;gBAChC,MAAM;aACP;YACD,KAAK,aAAa,CAAC,CAAC;gBAClB,QAAQ,GAAG,mBAAmB,CAAC;gBAC/B,MAAM;aACP;YACD,KAAK,SAAU,CAAC,CAAC;gBACf,QAAQ,GAAG,SAAS,CAAC;gBACrB,MAAM;aACP;YACD;gBACE,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,EAAE,CAAC,CAAC;SACnE;QACD,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACxB,MAAM,OAAO,GAAG,IAAI,GAAG,cAAc,QAAQ,OAAO,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,oCAAoC,OAAO,EAAE,CAAC,CAAC;YAC3D,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;KACJ;AACH,CAAC,CAAC,CAAC;AAEH,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAE,IAAI,GAAE,2BAA2B,EAAE,IAAI,CAAC,CAAC,CAAC;AAEhF,8CAA8C;AAE9C,0CAA0C;AAE1C,yBAAyB;AACzB,qCAAqC;AAErC,gFAAgF"} \ No newline at end of file +{"version":3,"file":"start-ironsworn.js","sourceRoot":"","sources":["../src/start-ironsworn.ts"],"names":[],"mappings":"AAAA,OAAO,gCAAgC,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,oBAAmB;AACxC,OAAO,EAAE,IAAI,EAAE,iBAAgB;AAE/B,OAAO,EAAE,eAAe,EAAE,4CAA2C;AACrE,OAAO,EAAE,SAAS,EAAE,gCAA+B;AACnD,OAAO,CAAC,MAAM,WAAW,CAAC;AAE1B,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAe,CAAC;AAE3D,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;QAC7D,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,QAAQ,GAAsB,EAAE;YAC9B,KAAK,aAAa,CAAC,CAAC;gBAClB,QAAQ,GAAG,QAAQ,CAAC;gBACpB,MAAM;aACP;YACD,KAAK,YAAY,CAAC,CAAC;gBACjB,QAAQ,GAAG,YAAY,CAAC;gBACxB,MAAM;aACP;YACD,KAAK,aAAa,CAAC,CAAC;gBAClB,QAAQ,GAAG,SAAS,CAAC;gBACrB,MAAM;aACP;YACD,KAAK,iBAAiB,CAAC,CAAC;gBACtB,QAAQ,GAAG,OAAO,CAAC;gBACnB,MAAM;aACP;YACD,KAAK,gBAAgB,CAAC,CAAC;gBACrB,QAAQ,GAAG,QAAQ,CAAC;gBACpB,MAAM;aACP;YACD,KAAK,cAAc,CAAC,CAAC;gBACnB,QAAQ,GAAG,oBAAoB,CAAC;gBAChC,MAAM;aACP;YACD,KAAK,aAAa,CAAC,CAAC;gBAClB,QAAQ,GAAG,mBAAmB,CAAC;gBAC/B,MAAM;aACP;YACD,KAAK,SAAU,CAAC,CAAC;gBACf,QAAQ,GAAG,SAAS,CAAC;gBACrB,MAAM;aACP;YACD;gBACE,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,EAAE,CAAC,CAAC;SACnE;QACD,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACxB,MAAM,OAAO,GAAG,IAAI,GAAG,cAAc,QAAQ,OAAO,CAAC;YACrD,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,oCAAoC,OAAO,EAAE,CAAC,CAAC;YAC3D,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;KACJ;AACH,CAAC,CAAC,CAAC;AAEH,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAE,IAAI,GAAE,2BAA2B,EAAE,IAAI,CAAC,CAAC,CAAC;AAEhF,8CAA8C;AAE9C,0CAA0C;AAE1C,yBAAyB;AACzB,qCAAqC;AAErC,gFAAgF"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/buildAssets.d.ts b/dataforged-tools/build/utils/buildAssets.d.ts deleted file mode 100644 index 9644eb119..000000000 --- a/dataforged-tools/build/utils/buildAssets.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Gamespace } from "../schema_json"; -import { AssetTypeBuilder } from "../builders"; -/** - * Build and validate all asset objects from YAML. - * @returns An array of Asset objects. - */ -export declare function buildAssets(gamespace?: Gamespace): { - [x: string]: AssetTypeBuilder; -}; -//# sourceMappingURL=buildAssets.d.ts.map \ No newline at end of file diff --git a/dataforged-tools/build/utils/buildAssets.d.ts.map b/dataforged-tools/build/utils/buildAssets.d.ts.map deleted file mode 100644 index e721ec656..000000000 --- a/dataforged-tools/build/utils/buildAssets.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"buildAssets.d.ts","sourceRoot":"","sources":["../../src/utils/buildAssets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,uBAAqB;AAMzC,OAAO,EAAE,gBAAgB,EAAE,oBAAkB;AAE7C;;;GAGG;AACH,wBAAgB,WAAW,CAAC,SAAS,GAAE,SAAgC;;EAStE"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/buildAssets.js b/dataforged-tools/build/utils/buildAssets.js deleted file mode 100644 index df5535c09..000000000 --- a/dataforged-tools/build/utils/buildAssets.js +++ /dev/null @@ -1,20 +0,0 @@ -import { MASTER_DATA_PATH } from "../constants"; -import { Gamespace } from "../schema_json"; -import { buildLog } from "./logging/buildLog.js"; -import yaml from "js-yaml"; -import _ from "lodash-es"; -import fs from "fs"; -import { AssetTypeBuilder } from "../builders"; -/** - * Build and validate all asset objects from YAML. - * @returns An array of Asset objects. - */ -export function buildAssets(gamespace = Gamespace.Starforged) { - const assetPath = `${MASTER_DATA_PATH}/${gamespace}/Assets.yaml`; - const data = fs.readFileSync(assetPath, { encoding: "utf-8" }); - const json = yaml.load(data); - const result = _.mapValues(json["Asset Types"], (assetTypeYaml, key) => new AssetTypeBuilder(assetTypeYaml, gamespace, json.Source)); - buildLog(buildAssets, `Finished building ${result.length} asset types containing a total of ${_.sum(_.map(result, type => Object.keys(type.Assets).length))} assets.`); - return result; -} -//# sourceMappingURL=buildAssets.js.map \ No newline at end of file diff --git a/dataforged-tools/build/utils/buildAssets.js.map b/dataforged-tools/build/utils/buildAssets.js.map deleted file mode 100644 index 5941700f3..000000000 --- a/dataforged-tools/build/utils/buildAssets.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"buildAssets.js","sourceRoot":"","sources":["../../src/utils/buildAssets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,qBAAmB;AAC9C,OAAO,EAAE,SAAS,EAAE,uBAAqB;AACzC,OAAO,EAAE,QAAQ,EAAE,8BAAmC;AACtD,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,CAAC,MAAM,WAAW,CAAC;AAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,gBAAgB,EAAE,oBAAkB;AAE7C;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,YAAuB,SAAS,CAAC,UAAU;IACrE,MAAM,SAAS,GAAG,GAAG,gBAA0B,IAAI,SAAS,cAAc,CAAC;IAC3E,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAkB,CAAC;IAC9C,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,EAC5C,CAAC,aAAa,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,gBAAgB,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACvF,QAAQ,CAAC,WAAW,EAAE,qBAAqB,MAAM,CAAC,MAAM,sCAAsC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;IAEtK,OAAO,MAAM,CAAC;AAChB,CAAC"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/buildDataforged.d.ts b/dataforged-tools/build/utils/buildDataforged.d.ts deleted file mode 100644 index e4ee17c1c..000000000 --- a/dataforged-tools/build/utils/buildDataforged.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Gamespace } from "../schema_json"; -import type { Ironsworn, Starforged } from "../schema_json"; -/** - * Builds all data for Dataforged. - * @returns An object keyed with the game data. -*/ -export declare function buildDataforged(gamespace?: Gamespace): Starforged | Ironsworn; -//# sourceMappingURL=buildDataforged.d.ts.map \ No newline at end of file diff --git a/dataforged-tools/build/utils/buildDataforged.d.ts.map b/dataforged-tools/build/utils/buildDataforged.d.ts.map deleted file mode 100644 index fcf0de70e..000000000 --- a/dataforged-tools/build/utils/buildDataforged.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"buildDataforged.d.ts","sourceRoot":"","sources":["../../src/utils/buildDataforged.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,SAAS,EAAE,uBAAqB;AACxD,OAAO,KAAK,EAAE,SAAS,EAAG,UAAU,EAAE,uBAAqB;AAW3D;;;EAGE;AACF,wBAAgB,eAAe,CAAC,SAAS,GAAE,SAAgC,0BAqC1E"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/buildDataforged.js b/dataforged-tools/build/utils/buildDataforged.js deleted file mode 100644 index da4b0acb2..000000000 --- a/dataforged-tools/build/utils/buildDataforged.js +++ /dev/null @@ -1,53 +0,0 @@ -import { DelveCardType, Gamespace } from "../schema_json"; -import { buildAssets } from "./buildAssets.js"; -import { buildEncounters } from "./buildEncounters.js"; -import { buildMoves } from "./buildMoves.js"; -import { buildOracles } from "./buildOracles.js"; -import { buildTruths } from "./buildTruths.js"; -import { dataforgedStats } from "./dataforgedStats.js"; -import { buildLog } from "./logging/buildLog.js"; -import { buildDelveSiteCards } from "./buildDelveSiteCards.js"; -import { buildIronlandsRegions } from "./buildIronswornRegions.js"; -/** - * Builds all data for Dataforged. - * @returns An object keyed with the game data. -*/ -export function buildDataforged(gamespace = Gamespace.Starforged) { - buildLog(buildDataforged, `Building Dataforged for ${gamespace}...`); - let data; - switch (gamespace) { - case Gamespace.Starforged: { - data = { - // $schema: "./schema.json", - "Asset Types": buildAssets(gamespace), - Encounters: buildEncounters(gamespace), - "Move Categories": buildMoves(gamespace), - "Oracle Sets": buildOracles(gamespace), - "Setting Truths": buildTruths(gamespace) - }; - break; - } - case Gamespace.Ironsworn: { - data = { - // $schema: "./schema.json", - "Asset Types": buildAssets(gamespace), - Encounters: buildEncounters(gamespace), - "Move Categories": buildMoves(gamespace), - "Oracle Sets": buildOracles(gamespace), - "Setting Truths": buildTruths(gamespace), - "Site Themes": buildDelveSiteCards(DelveCardType.Theme), - "Site Domains": buildDelveSiteCards(DelveCardType.Domain), - Regions: buildIronlandsRegions(), - // Rarities - // Delve Sites (the sample ones from Delve) - }; - break; - } - default: - throw new Error(); - } - buildLog(buildDataforged, `Finished building JSON for ${gamespace}: - ${dataforgedStats(gamespace, data)}`); - return data; -} -//# sourceMappingURL=buildDataforged.js.map \ No newline at end of file diff --git a/dataforged-tools/build/utils/buildDataforged.js.map b/dataforged-tools/build/utils/buildDataforged.js.map deleted file mode 100644 index e13104f15..000000000 --- a/dataforged-tools/build/utils/buildDataforged.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"buildDataforged.js","sourceRoot":"","sources":["../../src/utils/buildDataforged.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,uBAAqB;AAExD,OAAO,EAAE,WAAW,EAAE,yBAA8B;AACpD,OAAO,EAAE,eAAe,EAAE,6BAAkC;AAC5D,OAAO,EAAE,UAAU,EAAE,wBAA6B;AAClD,OAAO,EAAE,YAAY,EAAE,0BAA+B;AACtD,OAAO,EAAE,WAAW,EAAE,yBAA8B;AACpD,OAAO,EAAE,eAAe,EAAE,6BAAkC;AAC5D,OAAO,EAAE,QAAQ,EAAE,8BAAmC;AACtD,OAAO,EAAE,mBAAmB,EAAE,iCAAsC;AACpE,OAAO,EAAE,qBAAqB,EAAE,mCAAwC;AAExE;;;EAGE;AACF,MAAM,UAAU,eAAe,CAAC,YAAuB,SAAS,CAAC,UAAU;IACzE,QAAQ,CAAC,eAAe,EAAE,2BAA2B,SAAS,KAAK,CAAC,CAAC;IACrE,IAAI,IAA0B,CAAC;IAC/B,QAAQ,SAAS,EAAE;QACjB,KAAK,SAAS,CAAC,UAAU,CAAC,CAAC;YACzB,IAAI,GAAG;gBACL,4BAA4B;gBAC5B,aAAa,EAAE,WAAW,CAAC,SAAS,CAAC;gBACrC,UAAU,EAAE,eAAe,CAAC,SAAS,CAAC;gBACtC,iBAAiB,EAAE,UAAU,CAAC,SAAS,CAAC;gBACxC,aAAa,EAAE,YAAY,CAAC,SAAS,CAAC;gBACtC,gBAAgB,EAAE,WAAW,CAAC,SAAS,CAAC;aAC3B,CAAC;YAChB,MAAM;SAAC;QACT,KAAK,SAAS,CAAC,SAAS,CAAC,CAAC;YACxB,IAAI,GAAG;gBACL,4BAA4B;gBAC5B,aAAa,EAAG,WAAW,CAAC,SAAS,CAAC;gBACtC,UAAU,EAAE,eAAe,CAAC,SAAS,CAAC;gBACtC,iBAAiB,EAAE,UAAU,CAAC,SAAS,CAAC;gBACxC,aAAa,EAAE,YAAY,CAAC,SAAS,CAAC;gBACtC,gBAAgB,EAAE,WAAW,CAAC,SAAS,CAAC;gBACxC,aAAa,EAAE,mBAAmB,CAAC,aAAa,CAAC,KAAK,CAAC;gBACvD,cAAc,EAAE,mBAAmB,CAAC,aAAa,CAAC,MAAM,CAAC;gBACzD,OAAO,EAAE,qBAAqB,EAAE;gBAChC,WAAW;gBACX,2CAA2C;aAC/B,CAAC;YACf,MAAM;SACP;QACD;YACE,MAAM,IAAI,KAAK,EAAE,CAAC;KACrB;IAED,QAAQ,CAAC,eAAe,EAAE,8BAA8B,SAAS;MAC7D,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC;AACd,CAAC"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/buildEncounters.d.ts b/dataforged-tools/build/utils/buildEncounters.d.ts deleted file mode 100644 index 79e419c95..000000000 --- a/dataforged-tools/build/utils/buildEncounters.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { EncounterNatureClassicInfoBuilder } from "../builders"; -import { EncounterStarforgedBuilder } from "../builders"; -import { Gamespace } from "../schema_json"; -/** - * Assembles encounter data from YAML shorthand into JSON. - * @returns - */ -export declare function buildEncounters(gamespace: G): { - [key: string]: EncounterStarforgedBuilder; -} | { - [key: string]: EncounterNatureClassicInfoBuilder; -}; -//# sourceMappingURL=buildEncounters.d.ts.map \ No newline at end of file diff --git a/dataforged-tools/build/utils/buildEncounters.d.ts.map b/dataforged-tools/build/utils/buildEncounters.d.ts.map deleted file mode 100644 index a3748db7c..000000000 --- a/dataforged-tools/build/utils/buildEncounters.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"buildEncounters.d.ts","sourceRoot":"","sources":["../../src/utils/buildEncounters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,oBAAkB;AAC9D,OAAO,EAAE,0BAA0B,EAAE,oBAAkB;AAEvD,OAAO,EAAE,SAAS,EAAc,uBAAqB;AASrD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,SAAS,EAAE,SAAS,EAAE,CAAC;;;;EA+BhE"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/buildEncounters.js b/dataforged-tools/build/utils/buildEncounters.js deleted file mode 100644 index e53531bb6..000000000 --- a/dataforged-tools/build/utils/buildEncounters.js +++ /dev/null @@ -1,43 +0,0 @@ -import { EncounterNatureClassicInfoBuilder } from "../builders"; -import { EncounterStarforgedBuilder } from "../builders"; -import { MASTER_DATA_PATH } from "../constants"; -import { Gamespace } from "../schema_json"; -import { encounterStats } from "./dataforgedStats.js"; -import { badJsonError } from "./logging/badJsonError.js"; -import { buildLog } from "./logging/buildLog.js"; -import { concatWithYamlRefs } from "./process_yaml/concatWithYamlRefs.js"; -import fg from "fast-glob"; -import _ from "lodash"; -/** - * Assembles encounter data from YAML shorthand into JSON. - * @returns - */ -export function buildEncounters(gamespace) { - buildLog(buildEncounters, "Building encounters..."); - const encounterFiles = fg.sync(`${MASTER_DATA_PATH}/${gamespace}/Encounters*.(yml|yaml)`, { onlyFiles: true }); - console.log(encounterFiles); - const encounterRootYaml = concatWithYamlRefs(undefined, ...encounterFiles); - let result; - switch (gamespace) { - case Gamespace.Starforged: { - result = _.mapValues(encounterRootYaml.Encounters, enc => new EncounterStarforgedBuilder(enc, encounterRootYaml.Source)); - break; - } - case Gamespace.Ironsworn: { - result = _.mapValues(encounterRootYaml.Encounters, enc => new EncounterNatureClassicInfoBuilder(enc, encounterRootYaml.Source)); - break; - } - default: - throw badJsonError(buildEncounters); - } - buildLog(buildEncounters, `Finished building ${encounterStats(gamespace, result)}`); - switch (gamespace) { - case Gamespace.Starforged: - return result; - case Gamespace.Ironsworn: - return result; - default: - throw badJsonError(buildEncounters); - } -} -//# sourceMappingURL=buildEncounters.js.map \ No newline at end of file diff --git a/dataforged-tools/build/utils/buildEncounters.js.map b/dataforged-tools/build/utils/buildEncounters.js.map deleted file mode 100644 index 9634f3ea9..000000000 --- a/dataforged-tools/build/utils/buildEncounters.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"buildEncounters.js","sourceRoot":"","sources":["../../src/utils/buildEncounters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,oBAAkB;AAC9D,OAAO,EAAE,0BAA0B,EAAE,oBAAkB;AACvD,OAAO,EAAE,gBAAgB,EAAE,qBAAmB;AAC9C,OAAO,EAAE,SAAS,EAAc,uBAAqB;AAErD,OAAO,EAAE,cAAc,EAAE,6BAAkC;AAC3D,OAAO,EAAE,YAAY,EAAE,kCAAuC;AAC9D,OAAO,EAAE,QAAQ,EAAE,8BAAmC;AACtD,OAAO,EAAE,kBAAkB,EAAE,6CAAkD;AAC/E,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3B,OAAO,CAAC,MAAM,QAAQ,CAAC;AAEvB;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAsB,SAAY;IAG/D,QAAQ,CAAC,eAAe,EAAE,wBAAwB,CAAC,CAAC;IACpD,MAAM,cAAc,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,gBAA0B,IAAI,SAAS,yBAAyB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzH,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC5B,MAAM,iBAAiB,GAAG,kBAAkB,CAAoB,SAAS,EAAE,GAAG,cAAc,CAAsB,CAAC;IACnH,IAAI,MAAM,CAAC;IAEX,QAAQ,SAAS,EAAE;QACjB,KAAK,SAAS,CAAC,UAAU,CAAC,CAAC;YACzB,MAAM,GAAG,CAAC,CAAC,SAAS,CAAE,iBAAiD,CAAC,UAAU,EAAC,GAAG,CAAC,EAAE,CAAC,IAAI,0BAA0B,CAAC,GAAG,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAC/G,CAAA;YACxC,MAAM;SACP;QACD,KAAK,SAAS,CAAC,SAAS,CAAC,CAAC;YACxB,MAAM,GAAG,CAAC,CAAC,SAAS,CAAE,iBAA8C,CAAC,UAAU,EAAC,GAAG,CAAC,EAAE,CAAC,IAAI,iCAAiC,CAAC,GAAG,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC7J,MAAM;SACP;QACD;YACE,MAAM,YAAY,CAAC,eAAe,CAAC,CAAC;KACvC;IACD,QAAQ,CAAC,eAAe,EAAE,qBAAqB,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IACpF,QAAQ,SAAS,EAAE;QACjB,KAAK,SAAS,CAAC,UAAU;YACvB,OAAO,MAAqD,CAAC;QAC/D,KAAK,SAAS,CAAC,SAAS;YACtB,OAAO,MAA4D,CAAC;QACtE;YACE,MAAM,YAAY,CAAC,eAAe,CAAC,CAAC;KACvC;AACH,CAAC"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/buildImages.d.ts b/dataforged-tools/build/utils/buildImages.d.ts deleted file mode 100644 index f5c52a621..000000000 --- a/dataforged-tools/build/utils/buildImages.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Clones raster images and converts them to webp. - * - * @param srcRoot - the root directory of source files - * @param outPng - The destination filepath for png images. - * @param srcPng - the directory of png files - * @param outWebP - The destination filepath for webp images. - */ -export declare function buildImages(srcRoot: string, outPng: string, srcPng: string, outWebP: string): void; -//# sourceMappingURL=buildImages.d.ts.map \ No newline at end of file diff --git a/dataforged-tools/build/utils/buildImages.d.ts.map b/dataforged-tools/build/utils/buildImages.d.ts.map deleted file mode 100644 index 334c764e8..000000000 --- a/dataforged-tools/build/utils/buildImages.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"buildImages.d.ts","sourceRoot":"","sources":["../../src/utils/buildImages.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,QAG3F"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/buildImages.js b/dataforged-tools/build/utils/buildImages.js deleted file mode 100644 index b52722ec0..000000000 --- a/dataforged-tools/build/utils/buildImages.js +++ /dev/null @@ -1,15 +0,0 @@ -import { cloneImages } from "./process_img/cloneImages.js"; -import { convertRasterImages } from "./process_img/convertRasterImages.js"; -/** - * Clones raster images and converts them to webp. - * - * @param srcRoot - the root directory of source files - * @param outPng - The destination filepath for png images. - * @param srcPng - the directory of png files - * @param outWebP - The destination filepath for webp images. - */ -export function buildImages(srcRoot, outPng, srcPng, outWebP) { - cloneImages(srcRoot, outPng); - convertRasterImages(srcPng, outWebP); -} -//# sourceMappingURL=buildImages.js.map \ No newline at end of file diff --git a/dataforged-tools/build/utils/buildImages.js.map b/dataforged-tools/build/utils/buildImages.js.map deleted file mode 100644 index 974f50fc9..000000000 --- a/dataforged-tools/build/utils/buildImages.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"buildImages.js","sourceRoot":"","sources":["../../src/utils/buildImages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,qCAA0C;AAChE,OAAO,EAAE,mBAAmB,EAAE,6CAAkD;AAEhF;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,MAAc,EAAE,MAAc,EAAE,OAAe;IAC1F,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7B,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/buildMoves.d.ts b/dataforged-tools/build/utils/buildMoves.d.ts deleted file mode 100644 index 65158ba5f..000000000 --- a/dataforged-tools/build/utils/buildMoves.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { GameDataRoot, Gamespace } from "../schema_json"; -/** - * Build datasworn JSON moves from YAML shorthand. - */ -export declare function buildMoves(gamespace?: Gamespace): GameDataRoot["Move Categories"]; -//# sourceMappingURL=buildMoves.d.ts.map \ No newline at end of file diff --git a/dataforged-tools/build/utils/buildMoves.d.ts.map b/dataforged-tools/build/utils/buildMoves.d.ts.map deleted file mode 100644 index 782483e9c..000000000 --- a/dataforged-tools/build/utils/buildMoves.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"buildMoves.d.ts","sourceRoot":"","sources":["../../src/utils/buildMoves.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,uBAAqB;AAcvD;;GAEG;AACH,wBAAgB,UAAU,CAAC,SAAS,GAAE,SAAgC,GAAG,YAAY,CAAC,iBAAiB,CAAC,CAcvG"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/buildMoves.js b/dataforged-tools/build/utils/buildMoves.js deleted file mode 100644 index 301c24da2..000000000 --- a/dataforged-tools/build/utils/buildMoves.js +++ /dev/null @@ -1,28 +0,0 @@ -import { MASTER_DATA_PATH } from "../constants"; -import { Gamespace } from "../schema_json"; -import { buildLog } from "./logging/buildLog.js"; -import fg from "fast-glob"; -import _ from "lodash-es"; -import fs from "fs-extra"; -import yaml from "js-yaml"; -import { moveStats } from "./dataforgedStats.js"; -import { validate } from "jsonschema"; -import { badJsonError } from "./logging/badJsonError.js"; -import { MoveCategoryBuilder } from "../builders"; -const SCHEMA_YAML = fs.readJsonSync("../_master-data/schema/moves.json"); -/** - * Build datasworn JSON moves from YAML shorthand. - */ -export function buildMoves(gamespace = Gamespace.Starforged) { - buildLog(buildMoves, "Building moves..."); - const filePaths = fg.sync(`${MASTER_DATA_PATH}/${gamespace}/Moves*.(yml|yaml)`, { onlyFiles: true }); - const moveCatsYaml = filePaths.map(path => yaml.load(fs.readFileSync(path, { encoding: "utf-8" }))); - if (moveCatsYaml.some(mvCat => !validate(mvCat, SCHEMA_YAML).valid)) { - throw badJsonError(buildMoves, moveCatsYaml); - } - const builtCats = moveCatsYaml.map(mvRoot => _.mapValues(mvRoot["Move Categories"], (mvCat) => new MoveCategoryBuilder(mvCat, gamespace, mvRoot.Source))); - const json = builtCats.reduce((prev, cur) => _.merge(prev, cur)); - buildLog(buildMoves, `Finished building ${moveStats(json)}`); - return json; -} -//# sourceMappingURL=buildMoves.js.map \ No newline at end of file diff --git a/dataforged-tools/build/utils/buildMoves.js.map b/dataforged-tools/build/utils/buildMoves.js.map deleted file mode 100644 index c8321a904..000000000 --- a/dataforged-tools/build/utils/buildMoves.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"buildMoves.js","sourceRoot":"","sources":["../../src/utils/buildMoves.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,qBAAmB;AAC9C,OAAO,EAAgB,SAAS,EAAE,uBAAqB;AACvD,OAAO,EAAE,QAAQ,EAAE,8BAAmC;AACtD,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3B,OAAO,CAAC,MAAM,WAAW,CAAC;AAC1B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,6BAAkC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,kCAAuC;AAE9D,OAAO,EAAE,mBAAmB,EAAE,oBAAkB;AAEhD,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,mCAAmC,CAAC,CAAA;AAExE;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,YAAuB,SAAS,CAAC,UAAU;IACpE,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;IAE1C,MAAM,SAAS,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,gBAA0B,IAAI,SAAS,oBAAoB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/G,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAmB,CAAC;IAEtH,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,KAAK,CAAC,EAAE;QACnE,MAAM,YAAY,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;KAC7C;IAED,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACzJ,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAC,GAAG,CAAC,CAAC,CAAC;IAChE,QAAQ,CAAC,UAAU,EAAE,qBAAqB,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC5D,OAAO,IAAuC,CAAC;AACjD,CAAC"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/buildOracles.d.ts b/dataforged-tools/build/utils/buildOracles.d.ts deleted file mode 100644 index 173a92088..000000000 --- a/dataforged-tools/build/utils/buildOracles.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { GameDataRoot, Gamespace } from "../schema_json"; -/** - * It takes the data from the oracles directory and builds a list of {@link OracleSetBuilder} objects. - * @returns An array of {@link OracleSetBuilder} objects. - */ -export declare function buildOracles(gamespace?: Gamespace): GameDataRoot["Oracle Sets"]; -//# sourceMappingURL=buildOracles.d.ts.map \ No newline at end of file diff --git a/dataforged-tools/build/utils/buildOracles.d.ts.map b/dataforged-tools/build/utils/buildOracles.d.ts.map deleted file mode 100644 index 26605c422..000000000 --- a/dataforged-tools/build/utils/buildOracles.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"buildOracles.d.ts","sourceRoot":"","sources":["../../src/utils/buildOracles.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,uBAAqB;AAevD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,SAAS,GAAE,SAAgC,GAAG,YAAY,CAAC,aAAa,CAAC,CAerG"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/buildOracles.js b/dataforged-tools/build/utils/buildOracles.js deleted file mode 100644 index 830ba890c..000000000 --- a/dataforged-tools/build/utils/buildOracles.js +++ /dev/null @@ -1,29 +0,0 @@ -import { OracleSetBuilder } from "../builders"; -import { MASTER_DATA_PATH, REFS_PATH } from "../constants"; -import { Gamespace } from "../schema_json"; -import { oracleStats } from "./dataforgedStats.js"; -import { buildLog } from "./logging/buildLog.js"; -import { concatWithYamlRefs } from "./process_yaml/concatWithYamlRefs.js"; -import fs from "fs-extra"; -import fg from "fast-glob"; -import _ from "lodash"; -import { validate } from "jsonschema"; -import { badJsonError } from "./logging/badJsonError.js"; -const SCHEMA_YAML = fs.readJsonSync("../_master-data/schema/oracles.json"); -/** - * It takes the data from the oracles directory and builds a list of {@link OracleSetBuilder} objects. - * @returns An array of {@link OracleSetBuilder} objects. - */ -export function buildOracles(gamespace = Gamespace.Starforged) { - buildLog(buildOracles, "Building oracles..."); - let oracleSetFiles = fg.sync(`${MASTER_DATA_PATH}/${gamespace}/Oracles/**/*.(yml|yaml)`, { onlyFiles: true }); - const oracleSetData = _.omitBy(concatWithYamlRefs(REFS_PATH, ...oracleSetFiles), (v, k) => k.startsWith("_")); - const validation = validate(oracleSetData, SCHEMA_YAML); - if (!validation.valid) { - throw badJsonError(buildOracles, validation.errors.map(err => _.omit(err, "instance", "schema"))); - } - const oracleJson = _(oracleSetData).mapValues((oracleSet) => new OracleSetBuilder(oracleSet, `${gamespace}/Oracles`)).value(); - buildLog(buildOracles, `Finished building ${oracleStats(oracleJson)}`); - return oracleJson; -} -//# sourceMappingURL=buildOracles.js.map \ No newline at end of file diff --git a/dataforged-tools/build/utils/buildOracles.js.map b/dataforged-tools/build/utils/buildOracles.js.map deleted file mode 100644 index ada98c2f4..000000000 --- a/dataforged-tools/build/utils/buildOracles.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"buildOracles.js","sourceRoot":"","sources":["../../src/utils/buildOracles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,oBAAkB;AAC7C,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,qBAAmB;AACzD,OAAO,EAAgB,SAAS,EAAE,uBAAqB;AACvD,OAAO,EAAE,WAAW,EAAE,6BAAkC;AACxD,OAAO,EAAE,QAAQ,EAAE,8BAAmC;AACtD,OAAO,EAAE,kBAAkB,EAAE,6CAAkD;AAC/E,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3B,OAAO,CAAC,MAAM,QAAQ,CAAC;AAEvB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,kCAAuC;AAE9D,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,qCAAqC,CAAC,CAAA;AAG1E;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,YAAuB,SAAS,CAAC,UAAU;IACtE,QAAQ,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC;IAE9C,IAAI,cAAc,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,gBAA0B,IAAI,SAAS,0BAA0B,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAExH,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAoB,SAAS,EAAE,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAmC,CAAC;IAClK,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,EAAC,WAAW,CAAC,CAAA;IACtD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;QACrB,MAAM,YAAY,CAAC,YAAY,EAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;KACjG;IAED,MAAM,UAAU,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,gBAAgB,CAAC,SAAS,EAAE,GAAG,SAAS,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;IAE7H,QAAQ,CAAC,YAAY,EAAE,qBAAqB,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACvE,OAAO,UAAU,CAAC;AACpB,CAAC"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/buildTruths.d.ts b/dataforged-tools/build/utils/buildTruths.d.ts deleted file mode 100644 index 420450d45..000000000 --- a/dataforged-tools/build/utils/buildTruths.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { TruthBuilder, TruthClassicBuilder } from "../builders"; -import { Gamespace } from "../schema_json"; -/** - * It takes the YAML files that contain the setting truths, and builds a list of SettingTruth objects - * @returns An array of SettingTruth objects. - */ -export declare function buildTruths(gamespace: G): { - [x: string]: TruthClassicBuilder; -} | { - [x: string]: TruthBuilder; -}; -//# sourceMappingURL=buildTruths.d.ts.map \ No newline at end of file diff --git a/dataforged-tools/build/utils/buildTruths.d.ts.map b/dataforged-tools/build/utils/buildTruths.d.ts.map deleted file mode 100644 index 88a5a8a73..000000000 --- a/dataforged-tools/build/utils/buildTruths.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"buildTruths.d.ts","sourceRoot":"","sources":["../../src/utils/buildTruths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,oBAAkB;AAE9D,OAAO,EAAE,SAAS,EAAE,uBAAqB;AAOzC;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,SAAS,EAAE,SAAS,EAAE,CAAC;;;;EAuB5D"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/buildTruths.js b/dataforged-tools/build/utils/buildTruths.js deleted file mode 100644 index 89a02f7e0..000000000 --- a/dataforged-tools/build/utils/buildTruths.js +++ /dev/null @@ -1,35 +0,0 @@ -import { TruthBuilder, TruthClassicBuilder } from "../builders"; -import { MASTER_DATA_PATH } from "../constants"; -import { Gamespace } from "../schema_json"; -import { buildLog } from "./logging/buildLog.js"; -import { concatWithYamlRefs } from "./process_yaml/concatWithYamlRefs.js"; -import { existsSync } from "fs"; -import _ from "lodash-es"; -/** - * It takes the YAML files that contain the setting truths, and builds a list of SettingTruth objects - * @returns An array of SettingTruth objects. - */ -export function buildTruths(gamespace) { - buildLog(buildTruths, "Building setting truths..."); - const filePath = `${MASTER_DATA_PATH}/${gamespace}/Truths.yaml`; - if (!existsSync(filePath)) { - buildLog(buildTruths, "No setting truth file found. Returned an empty array."); - return {}; - } - switch (gamespace) { - case Gamespace.Ironsworn: { - const truthsRoot = concatWithYamlRefs(undefined, filePath); - const truths = _.mapValues(truthsRoot["Setting Truths"], item => new TruthClassicBuilder(item)); - return truths; - } - case Gamespace.Starforged: { - const truthsRoot = concatWithYamlRefs(undefined, filePath); - const truths = _.mapValues(truthsRoot["Setting Truths"], item => new TruthBuilder(item, truthsRoot.Source, gamespace)); - buildLog(buildTruths, `Finished building ${truths.length} setting truth categories.`); - return truths; - } - default: - throw new Error(); - } -} -//# sourceMappingURL=buildTruths.js.map \ No newline at end of file diff --git a/dataforged-tools/build/utils/buildTruths.js.map b/dataforged-tools/build/utils/buildTruths.js.map deleted file mode 100644 index fd96c848d..000000000 --- a/dataforged-tools/build/utils/buildTruths.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"buildTruths.js","sourceRoot":"","sources":["../../src/utils/buildTruths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,oBAAkB;AAC9D,OAAO,EAAE,gBAAgB,EAAE,qBAAmB;AAC9C,OAAO,EAAE,SAAS,EAAE,uBAAqB;AACzC,OAAO,EAAE,QAAQ,EAAE,8BAAmC;AACtD,OAAO,EAAE,kBAAkB,EAAE,6CAAkD;AAE/E,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,CAAC,MAAM,WAAW,CAAC;AAE1B;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAsB,SAAY;IAC3D,QAAQ,CAAC,WAAW,EAAE,4BAA4B,CAAC,CAAC;IAEpD,MAAM,QAAQ,GAAG,GAAG,gBAA0B,IAAI,SAAS,cAAc,CAAC;IAC1E,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;QACzB,QAAQ,CAAC,WAAW,EAAE,uDAAuD,CAAC,CAAC;QAC/E,OAAO,EAAE,CAAC;KACX;IACD,QAAQ,SAAS,EAAE;QACjB,KAAK,SAAS,CAAC,SAAS,CAAC,CAAC;YACxB,MAAM,UAAU,GAAG,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAyB,CAAC;YACnF,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAC,IAAI,CAAC,EAAE,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/F,OAAO,MAAM,CAAC;SACf;QACD,KAAK,SAAS,CAAC,UAAU,CAAC,CAAC;YACzB,MAAM,UAAU,GAAG,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAkB,CAAC;YAC5E,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAC,IAAI,CAAC,EAAE,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;YACtH,QAAQ,CAAC,WAAW,EAAE,qBAAqB,MAAM,CAAC,MAAM,4BAA4B,CAAC,CAAC;YACtF,OAAO,MAAM,CAAC;SACf;QACD;YACE,MAAM,IAAI,KAAK,EAAE,CAAC;KACrB;AACH,CAAC"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/dataforgedStats.d.ts b/dataforged-tools/build/utils/dataforgedStats.d.ts index 9153c9219..ee8ebd000 100644 --- a/dataforged-tools/build/utils/dataforgedStats.d.ts +++ b/dataforged-tools/build/utils/dataforgedStats.d.ts @@ -1,9 +1,9 @@ -import { Gamespace } from "../schema_json"; -import type { GameDataRoot } from "../schema_json"; +import { Game } from "../schema"; +import type { GameDataRoot } from "../schema"; /** * Extracts statistics on Ironsworn game data. */ -export declare function dataforgedStats(gamespace: G, { "Asset Types": assets, Encounters: encounters, "Move Categories": moves, "Oracle Sets": oracles, "Setting Truths": truths }: GameDataRoot): string; +export declare function dataforgedStats(gamespace: G, { "Asset Types": assets, Encounters: encounters, "Move Categories": moves, "Oracle Sets": oracles, "Setting Truths": truths }: GameDataRoot): string; export declare function assetStats(assetTypes: GameDataRoot["Asset Types"]): string; export declare function truthStats(truthCategories: GameDataRoot["Setting Truths"]): string; export declare function moveStats(moveCategories: GameDataRoot["Move Categories"]): string; @@ -17,5 +17,5 @@ export declare function oracleStats(oracles: GameDataRoot["Oracle Sets"]): strin * @param gamespace * @param json */ -export declare function encounterStats(gamespace: G, json: GameDataRoot["Encounters"]): string; +export declare function encounterStats(gamespace: G, json: GameDataRoot["Encounters"]): string; //# sourceMappingURL=dataforgedStats.d.ts.map \ No newline at end of file diff --git a/dataforged-tools/build/utils/dataforgedStats.d.ts.map b/dataforged-tools/build/utils/dataforgedStats.d.ts.map index 161ad7311..d793bb4eb 100644 --- a/dataforged-tools/build/utils/dataforgedStats.d.ts.map +++ b/dataforged-tools/build/utils/dataforgedStats.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"dataforgedStats.d.ts","sourceRoot":"","sources":["../../src/utils/dataforgedStats.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,uBAAqB;AACzC,OAAO,KAAK,EAAE,YAAY,EAA0B,uBAAqB;AAIzE;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,SAAS,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,YAAY,UAQ7M;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,YAAY,CAAC,aAAa,CAAC,UAIjE;AAED,wBAAgB,UAAU,CAAC,eAAe,EAAE,YAAY,CAAC,gBAAgB,CAAC,UAEzE;AAED,wBAAgB,SAAS,CAAC,cAAc,EAAE,YAAY,CAAC,iBAAiB,CAAC,UAIxE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,aAAa,CAAC,UAG/D;AAGD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,SAAS,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,YAAY,CAAC,UAsBjG"} \ No newline at end of file +{"version":3,"file":"dataforgedStats.d.ts","sourceRoot":"","sources":["../../src/utils/dataforgedStats.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,kBAAgB;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAyB,kBAAgB;AAInE;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,YAAY,UAQxM;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,YAAY,CAAC,aAAa,CAAC,UAIjE;AAED,wBAAgB,UAAU,CAAC,eAAe,EAAE,YAAY,CAAC,gBAAgB,CAAC,UAEzE;AAED,wBAAgB,SAAS,CAAC,cAAc,EAAE,YAAY,CAAC,iBAAiB,CAAC,UAIxE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,aAAa,CAAC,UAG/D;AAGD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,YAAY,CAAC,UAsB5F"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/dataforgedStats.js b/dataforged-tools/build/utils/dataforgedStats.js index 43a90a602..06721aac4 100644 --- a/dataforged-tools/build/utils/dataforgedStats.js +++ b/dataforged-tools/build/utils/dataforgedStats.js @@ -1,4 +1,4 @@ -import { Gamespace } from "../schema_json"; +import { Game } from "../schema"; import { JSONPath } from "jsonpath-plus"; import _ from "lodash-es"; /** @@ -42,7 +42,7 @@ export function oracleStats(oracles) { export function encounterStats(gamespace, json) { let text; switch (gamespace) { - case Gamespace.Starforged: + case Game.Starforged: { let encounterJson = json; const encounters = Object.keys(encounterJson); @@ -50,7 +50,7 @@ export function encounterStats(gamespace, json) { text = `${encounters.length} encounters (plus ${variants.length} encounter variants)`; } break; - case Gamespace.Ironsworn: + case Game.Ironsworn: { let encounterJson = json; const natures = Object.keys(encounterJson); diff --git a/dataforged-tools/build/utils/dataforgedStats.js.map b/dataforged-tools/build/utils/dataforgedStats.js.map index 4459f8ae7..2dff2dd15 100644 --- a/dataforged-tools/build/utils/dataforgedStats.js.map +++ b/dataforged-tools/build/utils/dataforgedStats.js.map @@ -1 +1 @@ -{"version":3,"file":"dataforgedStats.js","sourceRoot":"","sources":["../../src/utils/dataforgedStats.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,uBAAqB;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,CAAC,MAAM,WAAW,CAAC;AAE1B;;GAEG;AACH,MAAM,UAAU,eAAe,CAAsB,SAAY,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAgB;IAC5M,OAAO;QACL,UAAU,CAAC,MAAM,CAAC;QAClB,cAAc,CAAC,SAAS,EAAE,UAAU,CAAC;QACrC,SAAS,CAAC,KAAK,CAAC;QAChB,UAAU,CAAC,MAAM,CAAC;QAClB,WAAW,CAAC,OAAO,CAAC;KACrB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACf,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,UAAuC;IAChE,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACnC,IAAI,MAAM,GAAI,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IACvE,OAAO,GAAG,MAAM,CAAC,MAAM,sBAAsB,KAAK,CAAC,MAAM,QAAQ,CAAA;AACnE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,eAA+C;IACxE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,IAAI,CAAC,2BAA2B,CAAA;AAC/E,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,cAA+C;IACvE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;IAClF,OAAO,GAAG,UAAU,CAAC,MAAM,+BAA+B,KAAK,CAAC,MAAM,QAAQ,CAAC;AACjF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,OAAoC;IAC9D,MAAM,YAAY,GAAG,QAAQ,CAAuB,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACrG,OAAO,GAAG,YAAY,CAAC,MAAM,qBAAqB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC;AACtG,CAAC;AAGD;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAsB,SAAY,EAAE,IAAgC;IAChG,IAAI,IAAY,CAAC;IACjB,QAAQ,SAAS,EAAE;QACjB,KAAK,SAAS,CAAC,UAAU;YAAE;gBACzB,IAAI,aAAa,GAAG,IAAgC,CAAC;gBACrD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC9C,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;gBAChE,IAAI,GAAG,GAAG,UAAU,CAAC,MAAM,qBAAqB,QAAQ,CAAC,MAAM,sBAAsB,CAAC;aACvF;YACC,MAAM;QACR,KAAK,SAAS,CAAC,SAAS;YAAE;gBACxB,IAAI,aAAa,GAAG,IAA+B,CAAC;gBAEpD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC3C,MAAM,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAC3E,IAAI,GAAG,GAAG,UAAU,CAAC,MAAM,sBAAsB,OAAO,CAAC,MAAM,eAAe,CAAC;aAChF;YACC,MAAM;QACR;YACE,MAAM,IAAI,KAAK,EAAE,CAAC;KACrB;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AACD,CAAC"} \ No newline at end of file +{"version":3,"file":"dataforgedStats.js","sourceRoot":"","sources":["../../src/utils/dataforgedStats.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,kBAAgB;AAE/B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,CAAC,MAAM,WAAW,CAAC;AAE1B;;GAEG;AACH,MAAM,UAAU,eAAe,CAAiB,SAAY,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAgB;IACvM,OAAO;QACL,UAAU,CAAC,MAAM,CAAC;QAClB,cAAc,CAAC,SAAS,EAAE,UAAU,CAAC;QACrC,SAAS,CAAC,KAAK,CAAC;QAChB,UAAU,CAAC,MAAM,CAAC;QAClB,WAAW,CAAC,OAAO,CAAC;KACrB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACf,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,UAAuC;IAChE,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACnC,IAAI,MAAM,GAAI,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IACvE,OAAO,GAAG,MAAM,CAAC,MAAM,sBAAsB,KAAK,CAAC,MAAM,QAAQ,CAAA;AACnE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,eAA+C;IACxE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,IAAI,CAAC,2BAA2B,CAAA;AAC/E,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,cAA+C;IACvE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;IAClF,OAAO,GAAG,UAAU,CAAC,MAAM,+BAA+B,KAAK,CAAC,MAAM,QAAQ,CAAC;AACjF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,OAAoC;IAC9D,MAAM,YAAY,GAAG,QAAQ,CAAuB,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACrG,OAAO,GAAG,YAAY,CAAC,MAAM,qBAAqB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC;AACtG,CAAC;AAGD;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAiB,SAAY,EAAE,IAAgC;IAC3F,IAAI,IAAY,CAAC;IACjB,QAAQ,SAAS,EAAE;QACjB,KAAK,IAAI,CAAC,UAAU;YAAE;gBACpB,IAAI,aAAa,GAAG,IAAgC,CAAC;gBACrD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC9C,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;gBAChE,IAAI,GAAG,GAAG,UAAU,CAAC,MAAM,qBAAqB,QAAQ,CAAC,MAAM,sBAAsB,CAAC;aACvF;YACC,MAAM;QACR,KAAK,IAAI,CAAC,SAAS;YAAE;gBACnB,IAAI,aAAa,GAAG,IAA+B,CAAC;gBAEpD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC3C,MAAM,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAC3E,IAAI,GAAG,GAAG,UAAU,CAAC,MAAM,sBAAsB,OAAO,CAAC,MAAM,eAAe,CAAC;aAChF;YACC,MAAM;QACR;YACE,MAAM,IAAI,KAAK,EAAE,CAAC;KACrB;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AACD,CAAC"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/getNameFromId.d.ts b/dataforged-tools/build/utils/getNameFromId.d.ts deleted file mode 100644 index 076cc5a5b..000000000 --- a/dataforged-tools/build/utils/getNameFromId.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import type { OracleTable } from "../schema_json"; -/** - * Gets the last item of a path-like oracle ID. - */ -export declare function getNameFromId(oracleId: OracleTable["$id"]): string; -//# sourceMappingURL=getNameFromId.d.ts.map \ No newline at end of file diff --git a/dataforged-tools/build/utils/getNameFromId.d.ts.map b/dataforged-tools/build/utils/getNameFromId.d.ts.map deleted file mode 100644 index 9bad3312a..000000000 --- a/dataforged-tools/build/utils/getNameFromId.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"getNameFromId.d.ts","sourceRoot":"","sources":["../../src/utils/getNameFromId.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,uBAAqB;AAGhD;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,MAAM,CAGlE"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/getNameFromId.js b/dataforged-tools/build/utils/getNameFromId.js deleted file mode 100644 index ea8e6afb7..000000000 --- a/dataforged-tools/build/utils/getNameFromId.js +++ /dev/null @@ -1,9 +0,0 @@ -// TODO: generate fallback names for when it's unspecified -/** - * Gets the last item of a path-like oracle ID. - */ -export function getNameFromId(oracleId) { - const fragments = oracleId.split("/"); - return fragments[fragments.length - 1]; -} -//# sourceMappingURL=getNameFromId.js.map \ No newline at end of file diff --git a/dataforged-tools/build/utils/getNameFromId.js.map b/dataforged-tools/build/utils/getNameFromId.js.map deleted file mode 100644 index 3d1ced1aa..000000000 --- a/dataforged-tools/build/utils/getNameFromId.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"getNameFromId.js","sourceRoot":"","sources":["../../src/utils/getNameFromId.ts"],"names":[],"mappings":"AACA,0DAA0D;AAK1D;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,QAA4B;IACxD,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtC,OAAO,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/object_transform/extractRowContent.d.ts b/dataforged-tools/build/utils/object_transform/extractRowContent.d.ts index 60a1894f7..3238b093b 100644 --- a/dataforged-tools/build/utils/object_transform/extractRowContent.d.ts +++ b/dataforged-tools/build/utils/object_transform/extractRowContent.d.ts @@ -1,4 +1,4 @@ -import { YamlRowContentItem, YamlSimpleTableRow } from "../../schema_yaml"; +import { YamlRowContentItem, YamlSimpleTableRow } from "../../schema"; /** * Extracts the content of a Row array. In other words, it excludes the Floor and Ceiling numbers.s */ diff --git a/dataforged-tools/build/utils/object_transform/extractRowContent.d.ts.map b/dataforged-tools/build/utils/object_transform/extractRowContent.d.ts.map index 78fb83649..93d31410a 100644 --- a/dataforged-tools/build/utils/object_transform/extractRowContent.d.ts.map +++ b/dataforged-tools/build/utils/object_transform/extractRowContent.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"extractRowContent.d.ts","sourceRoot":"","sources":["../../../src/utils/object_transform/extractRowContent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAC,kBAAkB,EAAE,0BAAqB;AAErE;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,kBAAkB,GAAG,kBAAkB,EAAE,GAAG,kBAAkB,EAAE,CAQtG"} \ No newline at end of file +{"version":3,"file":"extractRowContent.d.ts","sourceRoot":"","sources":["../../../src/utils/object_transform/extractRowContent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAC,kBAAkB,EAAE,qBAAgB;AAEhE;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,kBAAkB,GAAG,kBAAkB,EAAE,GAAG,kBAAkB,EAAE,CAQtG"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/object_transform/extractRowRolls.d.ts b/dataforged-tools/build/utils/object_transform/extractRowRolls.d.ts index 8912d8389..265ab942f 100644 --- a/dataforged-tools/build/utils/object_transform/extractRowRolls.d.ts +++ b/dataforged-tools/build/utils/object_transform/extractRowRolls.d.ts @@ -1,4 +1,4 @@ -import { YamlRowRoll, YamlSimpleTableRow } from "../../schema_yaml"; +import { YamlRowRoll, YamlSimpleTableRow } from "../../schema"; /** * Extracts the first two elements (floor and ceiling) of a raw row array. * @param row - YamlRow | YamlRowRoll diff --git a/dataforged-tools/build/utils/object_transform/extractRowRolls.d.ts.map b/dataforged-tools/build/utils/object_transform/extractRowRolls.d.ts.map index 78526f177..76d550b56 100644 --- a/dataforged-tools/build/utils/object_transform/extractRowRolls.d.ts.map +++ b/dataforged-tools/build/utils/object_transform/extractRowRolls.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"extractRowRolls.d.ts","sourceRoot":"","sources":["../../../src/utils/object_transform/extractRowRolls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,WAAW,EAAE,kBAAkB,EAAE,0BAAqB;AAGnF;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,kBAAkB,GAAG,WAAW,GAAG,WAAW,CAMlF"} \ No newline at end of file +{"version":3,"file":"extractRowRolls.d.ts","sourceRoot":"","sources":["../../../src/utils/object_transform/extractRowRolls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,WAAW,EAAE,kBAAkB,EAAE,qBAAgB;AAG9E;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,kBAAkB,GAAG,WAAW,GAAG,WAAW,CAMlF"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/object_transform/inferSetsAttributes.d.ts b/dataforged-tools/build/utils/object_transform/inferSetsAttributes.d.ts index 1b60b320e..810d5a670 100644 --- a/dataforged-tools/build/utils/object_transform/inferSetsAttributes.d.ts +++ b/dataforged-tools/build/utils/object_transform/inferSetsAttributes.d.ts @@ -1,4 +1,4 @@ -import type { Attribute, OracleTableRow, RowNullStub } from "../../schema_json"; +import type { Attribute, OracleTableRow, RowNullStub } from "../../schema"; /** * Infers a SetsAttributes object for an Oracle from its table rows. * @param table - The table of data to infer attributes from. diff --git a/dataforged-tools/build/utils/object_transform/inferSetsAttributes.d.ts.map b/dataforged-tools/build/utils/object_transform/inferSetsAttributes.d.ts.map index ce5d93de8..a06c889b6 100644 --- a/dataforged-tools/build/utils/object_transform/inferSetsAttributes.d.ts.map +++ b/dataforged-tools/build/utils/object_transform/inferSetsAttributes.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"inferSetsAttributes.d.ts","sourceRoot":"","sources":["../../../src/utils/object_transform/inferSetsAttributes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,0BAAqB;AAEzF;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,CAAC,cAAc,GAAC,WAAW,CAAC,EAAE,GAAG,SAAS,EAAE,CAWtF"} \ No newline at end of file +{"version":3,"file":"inferSetsAttributes.d.ts","sourceRoot":"","sources":["../../../src/utils/object_transform/inferSetsAttributes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,qBAAgB;AAEpF;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,CAAC,cAAc,GAAC,WAAW,CAAC,EAAE,GAAG,SAAS,EAAE,CAWtF"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/object_transform/pickInput.d.ts b/dataforged-tools/build/utils/object_transform/pickInput.d.ts index 6612ca803..5e513bf3e 100644 --- a/dataforged-tools/build/utils/object_transform/pickInput.d.ts +++ b/dataforged-tools/build/utils/object_transform/pickInput.d.ts @@ -1,7 +1,7 @@ import { InputClockBuilder, InputNumberBuilder, InputSelectBuilder, InputTextBuilder } from "../../builders"; -import type { Asset, AssetAbility } from "../../schema_json"; -import { InputType } from "../../schema_json"; -import type { YamlInput } from "../../schema_yaml"; +import type { Asset, AssetAbility } from "../../schema"; +import { InputType } from "../../schema"; +import type { YamlInput } from "../../schema"; /** * Infers the correct class for an YamlInput object and constructs it. * @param inputJson - The data to pick a class for. diff --git a/dataforged-tools/build/utils/object_transform/pickInput.d.ts.map b/dataforged-tools/build/utils/object_transform/pickInput.d.ts.map index f02236941..21df1a6e3 100644 --- a/dataforged-tools/build/utils/object_transform/pickInput.d.ts.map +++ b/dataforged-tools/build/utils/object_transform/pickInput.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"pickInput.d.ts","sourceRoot":"","sources":["../../../src/utils/object_transform/pickInput.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,uBAAkB;AACxG,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,0BAAqB;AACxD,OAAO,EAAE,SAAS,EAAE,0BAAqB;AACzC,OAAO,KAAK,EAAmE,SAAS,EAAE,0BAAqB;AAE/G;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG;IAAC,YAAY,EAAE,CAAC,CAAA;CAAC,EAAE,MAAM,EAAE,KAAK,GAAC,YAAY,kFAkBlH"} \ No newline at end of file +{"version":3,"file":"pickInput.d.ts","sourceRoot":"","sources":["../../../src/utils/object_transform/pickInput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,uBAAkB;AACxG,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,qBAAgB;AACnD,OAAO,EAAE,SAAS,EAAE,qBAAgB;AACpC,OAAO,KAAK,EAAmE,SAAS,EAAE,qBAAgB;AAE1G;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG;IAAC,YAAY,EAAE,CAAC,CAAA;CAAC,EAAE,MAAM,EAAE,KAAK,GAAC,YAAY,kFAkBlH"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/object_transform/pickInput.js b/dataforged-tools/build/utils/object_transform/pickInput.js index bd42e4e5a..766f48cd8 100644 --- a/dataforged-tools/build/utils/object_transform/pickInput.js +++ b/dataforged-tools/build/utils/object_transform/pickInput.js @@ -1,5 +1,5 @@ import { InputClockBuilder, InputNumberBuilder, InputSelectBuilder, InputTextBuilder } from "../../builders"; -import { InputType } from "../../schema_json"; +import { InputType } from "../../schema"; /** * Infers the correct class for an YamlInput object and constructs it. * @param inputJson - The data to pick a class for. diff --git a/dataforged-tools/build/utils/object_transform/pickInput.js.map b/dataforged-tools/build/utils/object_transform/pickInput.js.map index 29689ab55..5d977ee5f 100644 --- a/dataforged-tools/build/utils/object_transform/pickInput.js.map +++ b/dataforged-tools/build/utils/object_transform/pickInput.js.map @@ -1 +1 @@ -{"version":3,"file":"pickInput.js","sourceRoot":"","sources":["../../../src/utils/object_transform/pickInput.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,uBAAkB;AAExG,OAAO,EAAE,SAAS,EAAE,0BAAqB;AAGzC;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAsB,SAAwC,EAAE,MAA0B;IACjH,QAAQ,SAAS,CAAC,YAAY,CAAC,EAAE;QAC/B,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,IAAI,iBAAiB,CAAC,SAAsC,EAAE,MAAM,CAAC,CAAC;SAC9E;QACD,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC;YACrB,OAAO,IAAI,kBAAkB,CAAC,SAAuC,EAAE,MAAM,CAAC,CAAC;SAChF;QACD,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC;YACrB,OAAO,IAAI,kBAAkB,CAAC,SAAuC,EAAE,MAAM,CAAC,CAAC;SAChF;QACD,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC;YACnB,OAAO,IAAI,gBAAgB,CAAC,SAA0B,EAAE,MAAM,CAAC,CAAC;SACjE;QACD,OAAO,CAAC,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;SACpF;KACF;AACH,CAAC"} \ No newline at end of file +{"version":3,"file":"pickInput.js","sourceRoot":"","sources":["../../../src/utils/object_transform/pickInput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,uBAAkB;AAExG,OAAO,EAAE,SAAS,EAAE,qBAAgB;AAGpC;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAsB,SAAwC,EAAE,MAA0B;IACjH,QAAQ,SAAS,CAAC,YAAY,CAAC,EAAE;QAC/B,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,IAAI,iBAAiB,CAAC,SAAsC,EAAE,MAAM,CAAC,CAAC;SAC9E;QACD,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC;YACrB,OAAO,IAAI,kBAAkB,CAAC,SAAuC,EAAE,MAAM,CAAC,CAAC;SAChF;QACD,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC;YACrB,OAAO,IAAI,kBAAkB,CAAC,SAAuC,EAAE,MAAM,CAAC,CAAC;SAChF;QACD,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC;YACnB,OAAO,IAAI,gBAAgB,CAAC,SAA0B,EAAE,MAAM,CAAC,CAAC;SACjE;QACD,OAAO,CAAC,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;SACpF;KACF;AACH,CAAC"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/object_transform/templateOracle.d.ts b/dataforged-tools/build/utils/object_transform/templateOracle.d.ts index b96bc1189..923afbb3a 100644 --- a/dataforged-tools/build/utils/object_transform/templateOracle.d.ts +++ b/dataforged-tools/build/utils/object_transform/templateOracle.d.ts @@ -1,4 +1,4 @@ -import { YamlOracleSet, YamlOracleTable, YamlTemplateBase } from "../../schema_yaml"; +import { YamlOracleSet, YamlOracleTable, YamlTemplateBase } from "../../schema"; /** * It takes an oracle metadata template and builds it out with variables from a json object. * @param json - The JSON object that you want to replace the template variables in. diff --git a/dataforged-tools/build/utils/object_transform/templateOracle.d.ts.map b/dataforged-tools/build/utils/object_transform/templateOracle.d.ts.map index 234f63cf6..1c86c4a8b 100644 --- a/dataforged-tools/build/utils/object_transform/templateOracle.d.ts.map +++ b/dataforged-tools/build/utils/object_transform/templateOracle.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"templateOracle.d.ts","sourceRoot":"","sources":["../../../src/utils/object_transform/templateOracle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAyB,eAAe,EAA2B,gBAAgB,EAAE,0BAAqB;AAMhI;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,aAAa,GACtD,eAAe,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAC,gBAAgB,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAgB3E"} \ No newline at end of file +{"version":3,"file":"templateOracle.d.ts","sourceRoot":"","sources":["../../../src/utils/object_transform/templateOracle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAyB,eAAe,EAA2B,gBAAgB,EAAE,qBAAgB;AAM3H;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,aAAa,GACtD,eAAe,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAC,gBAAgB,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAgB3E"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/object_transform/templateOracleTable.d.ts b/dataforged-tools/build/utils/object_transform/templateOracleTable.d.ts index af92f93fa..1bd11c506 100644 --- a/dataforged-tools/build/utils/object_transform/templateOracleTable.d.ts +++ b/dataforged-tools/build/utils/object_transform/templateOracleTable.d.ts @@ -1,4 +1,4 @@ -import { YamlSimpleTableRow, YamlTemplateTable } from "../../schema_yaml"; +import { YamlSimpleTableRow, YamlTemplateTable } from "../../schema"; /** * Given a table template object, extract the rolls and content into separate arrays and combine them into a single table. * @param template - The template object. diff --git a/dataforged-tools/build/utils/object_transform/templateOracleTable.d.ts.map b/dataforged-tools/build/utils/object_transform/templateOracleTable.d.ts.map index 128fdb347..a887845f7 100644 --- a/dataforged-tools/build/utils/object_transform/templateOracleTable.d.ts.map +++ b/dataforged-tools/build/utils/object_transform/templateOracleTable.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"templateOracleTable.d.ts","sourceRoot":"","sources":["../../../src/utils/object_transform/templateOracleTable.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,kBAAkB,EAAE,iBAAiB,EAAE,0BAAqB;AAKtF;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,kBAAkB,EAAE,CAiBnF"} \ No newline at end of file +{"version":3,"file":"templateOracleTable.d.ts","sourceRoot":"","sources":["../../../src/utils/object_transform/templateOracleTable.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,kBAAkB,EAAE,iBAAiB,EAAE,qBAAgB;AAKjF;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,kBAAkB,EAAE,CAiBnF"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/process_yaml/concatWithYamlRefs.d.ts b/dataforged-tools/build/utils/process_yaml/concatWithYamlRefs.d.ts deleted file mode 100644 index 01b6ceadf..000000000 --- a/dataforged-tools/build/utils/process_yaml/concatWithYamlRefs.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { YamlWithRef } from "../../schema_yaml"; -/** - * Concatenates YAML with reference objects. - * @param referencePath - The path to the directory containing the reference files. - * @param filePaths - The files to load. - * @returns A JavaScript object with the following properties: - */ -export declare function concatWithYamlRefs(referencePath?: string, ...filePaths: string[]): T & YamlWithRef; -//# sourceMappingURL=concatWithYamlRefs.d.ts.map \ No newline at end of file diff --git a/dataforged-tools/build/utils/process_yaml/concatWithYamlRefs.d.ts.map b/dataforged-tools/build/utils/process_yaml/concatWithYamlRefs.d.ts.map deleted file mode 100644 index 353fc1608..000000000 --- a/dataforged-tools/build/utils/process_yaml/concatWithYamlRefs.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"concatWithYamlRefs.d.ts","sourceRoot":"","sources":["../../../src/utils/process_yaml/concatWithYamlRefs.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,0BAAqB;AAKhD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,aAAa,GAAE,MAAkB,EAAE,GAAG,SAAS,EAAE,MAAM,EAAE,mBAO9F"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/process_yaml/concatWithYamlRefs.js b/dataforged-tools/build/utils/process_yaml/concatWithYamlRefs.js deleted file mode 100644 index ff9df97f8..000000000 --- a/dataforged-tools/build/utils/process_yaml/concatWithYamlRefs.js +++ /dev/null @@ -1,21 +0,0 @@ -import { REFS_PATH } from "../../constants"; -import { loadYamlRefs } from "./loadYamlRefs.js"; -import { loadYamlTemplates } from "./loadYamlTemplates.js"; -import yaml from "js-yaml"; -import fs from "fs"; -import _ from "lodash"; -/** - * Concatenates YAML with reference objects. - * @param referencePath - The path to the directory containing the reference files. - * @param filePaths - The files to load. - * @returns A JavaScript object with the following properties: - */ -export function concatWithYamlRefs(referencePath = REFS_PATH, ...filePaths) { - const refString = loadYamlRefs(referencePath); - const templateString = loadYamlTemplates(referencePath + "/templates/"); - const fileStrings = filePaths.map(path => fs.readFileSync(path, { encoding: "utf-8" })); - const refsString = refString + "\n\n" + templateString; - const dataObject = fileStrings.map(yamlString => yaml.load(refsString + "\n\n" + yamlString)).reduce((prev, current) => _.merge(prev, current), {}); - return dataObject; -} -//# sourceMappingURL=concatWithYamlRefs.js.map \ No newline at end of file diff --git a/dataforged-tools/build/utils/process_yaml/concatWithYamlRefs.js.map b/dataforged-tools/build/utils/process_yaml/concatWithYamlRefs.js.map deleted file mode 100644 index 4844c1260..000000000 --- a/dataforged-tools/build/utils/process_yaml/concatWithYamlRefs.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"concatWithYamlRefs.js","sourceRoot":"","sources":["../../../src/utils/process_yaml/concatWithYamlRefs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,wBAAmB;AACvC,OAAO,EAAE,YAAY,EAAE,0BAA4C;AACnE,OAAO,EAAE,iBAAiB,EAAE,+BAAiD;AAE7E,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,CAAC,MAAM,QAAQ,CAAC;AAEvB;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAI,gBAAwB,SAAS,EAAE,GAAG,SAAmB;IAC7F,MAAM,SAAS,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;IAC9C,MAAM,cAAc,GAAG,iBAAiB,CAAC,aAAa,GAAG,aAAa,CAAC,CAAC;IACxE,MAAM,WAAW,GAAa,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAClG,MAAM,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,cAAc,CAAC;IACvD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;IACjJ,OAAO,UAA6B,CAAC;AACvC,CAAC"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/process_yaml/loadYamlRefs.d.ts b/dataforged-tools/build/utils/process_yaml/loadYamlRefs.d.ts deleted file mode 100644 index 1b7037811..000000000 --- a/dataforged-tools/build/utils/process_yaml/loadYamlRefs.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -/** - * It loads all the yaml files in the refs folder and joins them into a single string. - * @param path - The path to the directory containing the YAML files. - * @returns A string of YAML that is the concatenation of the contents of the files in the `index` - * directory. - */ -export declare function loadYamlRefs(path?: string): string; -//# sourceMappingURL=loadYamlRefs.d.ts.map \ No newline at end of file diff --git a/dataforged-tools/build/utils/process_yaml/loadYamlRefs.d.ts.map b/dataforged-tools/build/utils/process_yaml/loadYamlRefs.d.ts.map deleted file mode 100644 index e4938d93e..000000000 --- a/dataforged-tools/build/utils/process_yaml/loadYamlRefs.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"loadYamlRefs.d.ts","sourceRoot":"","sources":["../../../src/utils/process_yaml/loadYamlRefs.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,GAAE,MAAkB,UAMpD"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/process_yaml/loadYamlRefs.js b/dataforged-tools/build/utils/process_yaml/loadYamlRefs.js deleted file mode 100644 index b8ac49587..000000000 --- a/dataforged-tools/build/utils/process_yaml/loadYamlRefs.js +++ /dev/null @@ -1,17 +0,0 @@ -import { REFS_PATH } from "../../constants"; -import FastGlob from "fast-glob"; -import fs from "fs"; -/** - * It loads all the yaml files in the refs folder and joins them into a single string. - * @param path - The path to the directory containing the YAML files. - * @returns A string of YAML that is the concatenation of the contents of the files in the `index` - * directory. - */ -export function loadYamlRefs(path = REFS_PATH) { - const files = FastGlob.sync(path + "/*.(yml|yaml)", { onlyFiles: true }); - let refString = files.map(file => fs.readFileSync(file, { encoding: "utf-8" })).join("\n"); - refString = refString.replaceAll(/^/gim, " "); - refString = "_refs:\n" + refString; - return refString; -} -//# sourceMappingURL=loadYamlRefs.js.map \ No newline at end of file diff --git a/dataforged-tools/build/utils/process_yaml/loadYamlRefs.js.map b/dataforged-tools/build/utils/process_yaml/loadYamlRefs.js.map deleted file mode 100644 index dee360033..000000000 --- a/dataforged-tools/build/utils/process_yaml/loadYamlRefs.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"loadYamlRefs.js","sourceRoot":"","sources":["../../../src/utils/process_yaml/loadYamlRefs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,wBAAmB;AACvC,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe,SAAS;IACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,IAAI,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3F,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC/C,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IACnC,OAAO,SAAS,CAAC;AACnB,CAAC"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/process_yaml/loadYamlTemplates.d.ts b/dataforged-tools/build/utils/process_yaml/loadYamlTemplates.d.ts deleted file mode 100644 index e87255235..000000000 --- a/dataforged-tools/build/utils/process_yaml/loadYamlTemplates.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * It loads all the yaml files in the templates directory and joins them into a single string. - * @param path - The path to the directory containing the YAML files. - * @returns A string of YAML that can be parsed by the `yaml` module. - */ -export declare function loadYamlTemplates(path?: string): string; -//# sourceMappingURL=loadYamlTemplates.d.ts.map \ No newline at end of file diff --git a/dataforged-tools/build/utils/process_yaml/loadYamlTemplates.d.ts.map b/dataforged-tools/build/utils/process_yaml/loadYamlTemplates.d.ts.map deleted file mode 100644 index 957b894d4..000000000 --- a/dataforged-tools/build/utils/process_yaml/loadYamlTemplates.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"loadYamlTemplates.d.ts","sourceRoot":"","sources":["../../../src/utils/process_yaml/loadYamlTemplates.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,MAA6C,UAOpF"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/process_yaml/loadYamlTemplates.js b/dataforged-tools/build/utils/process_yaml/loadYamlTemplates.js deleted file mode 100644 index 2de66d4a5..000000000 --- a/dataforged-tools/build/utils/process_yaml/loadYamlTemplates.js +++ /dev/null @@ -1,16 +0,0 @@ -import { REFS_PATH } from "../../constants"; -import fs from "fs"; -/** - * It loads all the yaml files in the templates directory and joins them into a single string. - * @param path - The path to the directory containing the YAML files. - * @returns A string of YAML that can be parsed by the `yaml` module. - */ -export function loadYamlTemplates(path = REFS_PATH.toString() + "/templates/") { - const files = fs.readdirSync(path).filter(item => item.match(".yaml")) - .map(item => path.toString() + item); - let templateString = files.map(file => fs.readFileSync(file, { encoding: "utf-8" })).join("\n"); - templateString = templateString.replaceAll(/^/gim, " "); - templateString = "_templates:\n" + templateString; - return templateString; -} -//# sourceMappingURL=loadYamlTemplates.js.map \ No newline at end of file diff --git a/dataforged-tools/build/utils/process_yaml/loadYamlTemplates.js.map b/dataforged-tools/build/utils/process_yaml/loadYamlTemplates.js.map deleted file mode 100644 index 5aeb7a330..000000000 --- a/dataforged-tools/build/utils/process_yaml/loadYamlTemplates.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"loadYamlTemplates.js","sourceRoot":"","sources":["../../../src/utils/process_yaml/loadYamlTemplates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,wBAAmB;AACvC,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe,SAAS,CAAC,QAAQ,EAAE,GAAG,aAAa;IACnF,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SACnE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC;IACvC,IAAI,cAAc,GAAW,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxG,cAAc,GAAG,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzD,cAAc,GAAG,eAAe,GAAG,cAAc,CAAC;IAClD,OAAO,cAAc,CAAC;AACxB,CAAC"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/sortIronsworn.d.ts b/dataforged-tools/build/utils/sortIronsworn.d.ts index 825c6be0d..27bbb89c6 100644 --- a/dataforged-tools/build/utils/sortIronsworn.d.ts +++ b/dataforged-tools/build/utils/sortIronsworn.d.ts @@ -1,4 +1,4 @@ -import { Source } from "../schema_json"; +import { Source } from "../schema"; /** * Sort comparison function for Ironsworn source data. * @param source1 - The first source to compare. diff --git a/dataforged-tools/build/utils/sortIronsworn.d.ts.map b/dataforged-tools/build/utils/sortIronsworn.d.ts.map index e6b629fce..a643477c9 100644 --- a/dataforged-tools/build/utils/sortIronsworn.d.ts.map +++ b/dataforged-tools/build/utils/sortIronsworn.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"sortIronsworn.d.ts","sourceRoot":"","sources":["../../src/utils/sortIronsworn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAe,uBAAqB;AAUnD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAC,MAAM,EAAE,OAAO,EAAC,MAAM,UAW3D"} \ No newline at end of file +{"version":3,"file":"sortIronsworn.d.ts","sourceRoot":"","sources":["../../src/utils/sortIronsworn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAe,kBAAgB;AAU9C;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAC,MAAM,EAAE,OAAO,EAAC,MAAM,UAW3D"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/sortIronsworn.js b/dataforged-tools/build/utils/sortIronsworn.js index 195c2dbc1..51f6ca416 100644 --- a/dataforged-tools/build/utils/sortIronsworn.js +++ b/dataforged-tools/build/utils/sortIronsworn.js @@ -1,4 +1,4 @@ -import { SourceTitle } from "../schema_json"; +import { SourceTitle } from "../schema"; const order = [ SourceTitle.Starforged, SourceTitle.StarforgedAssets, diff --git a/dataforged-tools/build/utils/sortIronsworn.js.map b/dataforged-tools/build/utils/sortIronsworn.js.map index 8927af721..eb0702a38 100644 --- a/dataforged-tools/build/utils/sortIronsworn.js.map +++ b/dataforged-tools/build/utils/sortIronsworn.js.map @@ -1 +1 @@ -{"version":3,"file":"sortIronsworn.js","sourceRoot":"","sources":["../../src/utils/sortIronsworn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,WAAW,EAAE,uBAAqB;AAEnD,MAAM,KAAK,GAAkB;IAC3B,WAAW,CAAC,UAAU;IACtB,WAAW,CAAC,gBAAgB;IAC5B,WAAW,CAAC,SAAS;IACrB,WAAW,CAAC,eAAe;IAC3B,WAAW,CAAC,cAAc;CAC3B,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,OAAc,EAAE,OAAc;IAC1D,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,EAAE;QACnC,OAAO,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;KACtG;SAAM,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE;QACvC,OAAO,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;KACpC;SAAM,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE;QACvC,gDAAgD;QAChD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YAAE,OAAO,CAAC,CAAC;SAAE;QAChC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YAAE,OAAO,CAAC,CAAC,CAAC;SAAE;KAClC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"} \ No newline at end of file +{"version":3,"file":"sortIronsworn.js","sourceRoot":"","sources":["../../src/utils/sortIronsworn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,WAAW,EAAE,kBAAgB;AAE9C,MAAM,KAAK,GAAkB;IAC3B,WAAW,CAAC,UAAU;IACtB,WAAW,CAAC,gBAAgB;IAC5B,WAAW,CAAC,SAAS;IACrB,WAAW,CAAC,eAAe;IAC3B,WAAW,CAAC,cAAc;CAC3B,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,OAAc,EAAE,OAAc;IAC1D,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,EAAE;QACnC,OAAO,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;KACtG;SAAM,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE;QACvC,OAAO,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;KACpC;SAAM,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE;QACvC,gDAAgD;QAChD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YAAE,OAAO,CAAC,CAAC;SAAE;QAChC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YAAE,OAAO,CAAC,CAAC,CAAC;SAAE;KAClC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/types/AttributeHash.d.ts b/dataforged-tools/build/utils/types/AttributeHash.d.ts index a0cf8a469..6f688058b 100644 --- a/dataforged-tools/build/utils/types/AttributeHash.d.ts +++ b/dataforged-tools/build/utils/types/AttributeHash.d.ts @@ -1,4 +1,4 @@ -import type { AttributeKey, AttributeMaster } from "../../schema_json"; +import type { AttributeKey, AttributeMaster } from "../../schema"; /** * @alpha */ diff --git a/dataforged-tools/build/utils/types/AttributeHash.d.ts.map b/dataforged-tools/build/utils/types/AttributeHash.d.ts.map index 3bdf9ae28..6a3ef34ce 100644 --- a/dataforged-tools/build/utils/types/AttributeHash.d.ts.map +++ b/dataforged-tools/build/utils/types/AttributeHash.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"AttributeHash.d.ts","sourceRoot":"","sources":["../../../src/utils/types/AttributeHash.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,0BAAqB;AAClE;;GAEG;AACH,oBAAY,aAAa,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,IAAI;KAChE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,GAAG,IAAI;CAC1E,CAAC"} \ No newline at end of file +{"version":3,"file":"AttributeHash.d.ts","sourceRoot":"","sources":["../../../src/utils/types/AttributeHash.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,qBAAgB;AAC7D;;GAEG;AACH,oBAAY,aAAa,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,IAAI;KAChE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,GAAG,IAAI;CAC1E,CAAC"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/validateColor.d.ts b/dataforged-tools/build/utils/validateColor.d.ts deleted file mode 100644 index 5e8923d8f..000000000 --- a/dataforged-tools/build/utils/validateColor.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * It checks if the string is a valid hex color. - * @param str - The string to be validated. - * @returns A boolean value. - */ -export declare function validateColor(str: string): boolean; -//# sourceMappingURL=validateColor.d.ts.map \ No newline at end of file diff --git a/dataforged-tools/build/utils/validateColor.d.ts.map b/dataforged-tools/build/utils/validateColor.d.ts.map deleted file mode 100644 index db6f28400..000000000 --- a/dataforged-tools/build/utils/validateColor.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"validateColor.d.ts","sourceRoot":"","sources":["../../src/utils/validateColor.ts"],"names":[],"mappings":"AACA;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,WAExC"} \ No newline at end of file diff --git a/dataforged-tools/build/utils/validateColor.js b/dataforged-tools/build/utils/validateColor.js deleted file mode 100644 index 0a7ced569..000000000 --- a/dataforged-tools/build/utils/validateColor.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * It checks if the string is a valid hex color. - * @param str - The string to be validated. - * @returns A boolean value. - */ -export function validateColor(str) { - return RegExp(/#?[0-9A-Fa-f]{6}/g).test(str); -} -//# sourceMappingURL=validateColor.js.map \ No newline at end of file diff --git a/dataforged-tools/build/utils/validateColor.js.map b/dataforged-tools/build/utils/validateColor.js.map deleted file mode 100644 index 06db694f0..000000000 --- a/dataforged-tools/build/utils/validateColor.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"validateColor.js","sourceRoot":"","sources":["../../src/utils/validateColor.ts"],"names":[],"mappings":"AACA;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,OAAO,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,CAAC"} \ No newline at end of file diff --git a/dataforged-tools/src/builders/CollectionBuilder.ts b/dataforged-tools/src/builders/CollectionBuilder.ts new file mode 100644 index 000000000..e00585843 --- /dev/null +++ b/dataforged-tools/src/builders/CollectionBuilder.ts @@ -0,0 +1,164 @@ +import type { MASTER_DATA_PATH } from "@constants"; +import { REFS_PATH , TEMPLATES_PATH } from "@constants"; +import type { Game, HasSource, Source, YamlDataRoot } from "@schema"; +import { buildLog } from "@utils/logging/buildLog.js"; +import fg from "fast-glob"; +import fs from "fs-extra"; +import yaml from "js-yaml"; +import _ from "lodash-es"; + +export interface HashBuilder TMapItem > extends Map { + /** + * Dumps the Map items as a simple hash object. + */ + toJson: () => Record; + /** + * Processes the data into a format that can be passed to the builder. + * @param sourceDataItem The data to process. + */ + processSourceFile(sourceDataItem: Partial): TYamlRoot; + buildItem(item: TYamlItem): TMapItem; + /** + * The object parsed from the source data files + */ + srcDataFiles: Partial[]; + /** + * The builder class that builds the source data into the final JSON. + */ + ItemBuilder: TBuilder; + /** + * Builds the YAML data into Map items. + */ + collect(): this + /** + * A string used to log stats of the built items. + */ + buildStatsMessage: string; +} + +export interface BuilderFromGlob { + sourceFileGlob: string; + // schemaIn: Schema; + // schemaOut: Schema; + rawSourceFilesData: string[]; +} + +type CollectionFileGlob = `${typeof MASTER_DATA_PATH}/${G}/${string}.(yml|yaml)`; + +/** + * @internal + */ +export abstract class CollectionBuilder TMapItem +// SchemaIn extends Schema, SchemaOut extends Schema +> extends Map implements HashBuilder, BuilderFromGlob { + /** + * The path to the directory containing the YAML files. + */ + public static readonly referencePath = REFS_PATH; + public static readonly templatePath = TEMPLATES_PATH; + private _collectionKey: keyof TYamlRoot; + private _builder: TBuilder; + public get ItemBuilder(): TBuilder { + return this._builder; + } + abstract buildItem(item: TYamlItem): TMapItem; + public get collectionKey(): keyof TYamlRoot { + return this._collectionKey; + } + collect() { + buildLog(this.constructor, `Building ${this.collectionKey.toString()} from ${this.rawSourceFilesData.length} files...`); + _.forEach( + this.mergedData as Record, + (value,key) => { + buildLog(this.ItemBuilder.constructor, `Building ${key}...`); + const item = this.buildItem(value); + this.set(key, item); + } + ); + buildLog(this.constructor, `Finished building ${this.buildStatsMessage} from ${this.rawSourceFilesData.length} files.`); + return this; + } + toJson() { + return Object.fromEntries(this.entries()); + } + abstract get buildStatsMessage(): string; + private _game: Game; + public get game(): Game { + return this._game; + } + /** + * Loads the `_refs` and `_templates` files, and returns them as a string + * @returns A string that can be parsed as YAML. + */ + public static loadYamlRefs() { + const refFiles = fg.sync(CollectionBuilder.referencePath+"/*.(yml|yaml)", { onlyFiles: true }); + let refString = refFiles.map(file => fs.readFileSync(file, { encoding: "utf-8" })).join("\n"); + refString = refString.replaceAll(/^/gim, " "); + refString = "_refs:\n" + refString; + const templateFiles = fs.readdirSync(CollectionBuilder.templatePath).filter(item => item.match(".yaml")) + .map(item => CollectionBuilder.templatePath.toString() + item); + let templateString: string = templateFiles.map(file => fs.readFileSync(file, { encoding: "utf-8" })).join("\n"); + templateString = templateString.replaceAll(/^/gim, " "); + templateString = "_templates:\n" + templateString; + return refString + "\n\n" + templateString; + } + + public get rawSourceFilesData() { + return fg.sync(this._sourceFileGlob, { onlyFiles: true }); + } + private _srcDataFiles: Partial[]; + public get srcDataFiles(): Partial[] { + return this._srcDataFiles; + } + /** + * Composes the yaml data for each file with references and template data. + */ + public composeSourceData() { + // TODO: this should attempt to validate the data individually, too + const yamlRefs = CollectionBuilder.loadYamlRefs(); + const parsed = this.rawSourceFilesData.map(yamlStr =>{ + const composedYaml = yamlRefs + "\n\n"+ yamlStr; + const parsedYaml = yaml.load(composedYaml) as Partial; + // const cleanYaml = _.omitBy(parsedYaml,(v,key)=> key.startsWith("_")) as Partial; + return parsedYaml; + }); + return parsed; + } + abstract processSourceFile(sourceDataItem: Partial): TYamlRoot; + + private _sourceFileGlob: CollectionFileGlob; + public get sourceFileGlob(): CollectionFileGlob { + return this._sourceFileGlob; + } + public get mergedData(): TYamlRoot[typeof this.collectionKey] & Record { + const collections = this.srcDataFiles.map(item => { + const processed = this.processSourceFile(item); + return processed[this.collectionKey]; + }); + const mergedData = (collections.length === 1 ? collections[0] : _.merge({} as TYamlRoot[typeof this.collectionKey], ...collections) ) as TYamlRoot[typeof this.collectionKey]; + return mergedData as TYamlRoot[typeof this.collectionKey] & Record; + } + Source: Source; + /** + * @param game - The game to build for. + * @param sourceFileGlob - The glob of the source YAML files to be built from. + * @param collectionKey - The key in the YAML data to collect and build as objects. + */ + constructor(game: Game, sourceFileGlob: CollectionFileGlob, + collectionKey: keyof TYamlRoot, + source: Source, + builder: TBuilder + // schemaIn: SchemaIn, schemaOut: SchemaOut + ) { + super(); + this._game = game; + this._sourceFileGlob = sourceFileGlob; + this._collectionKey = collectionKey; + // this._schemaIn = schemaIn; + // this._schemaOut = schemaOut; + this._srcDataFiles = this.composeSourceData(); + this.Source = source; + this._builder = builder; + } +} diff --git a/dataforged-tools/src/builders/IronlandsBuilder.ts b/dataforged-tools/src/builders/IronlandsBuilder.ts new file mode 100644 index 000000000..b227b1d7c --- /dev/null +++ b/dataforged-tools/src/builders/IronlandsBuilder.ts @@ -0,0 +1,29 @@ +import { IronlandsRegionBuilder } from "@builders"; +import { CollectionBuilder } from "@builders/CollectionBuilder.js"; +import { Game } from "@schema"; +import type { IronlandsRegion,Source, YamlIronlandsRegionRoot , YamlIronswornRegion } from "@schema"; + + +/** + * @internal + */ +export class IronlandsBuilder extends CollectionBuilder { + buildItem(item: YamlIronswornRegion): IronlandsRegion { + return new this.ItemBuilder(item, this.Source); + } + processSourceFile(sourceDataItem: Partial): YamlIronlandsRegionRoot { + return sourceDataItem as YamlIronlandsRegionRoot; + } + + get buildStatsMessage(): string { + return `${this.size} Ironlands regions`; + } + constructor(source: Source) { + super( + Game.Ironsworn, + "../_master-data/Ironsworn/Regions.(yml|yaml)", "Regions", + source, + IronlandsRegionBuilder + ); + } +} \ No newline at end of file diff --git a/dataforged-tools/src/builders/RootDataBuilder.ts b/dataforged-tools/src/builders/RootDataBuilder.ts new file mode 100644 index 000000000..e69de29bb diff --git a/dataforged-tools/src/builders/assets/AlterMomentumBuilder.ts b/dataforged-tools/src/builders/assets/AlterMomentumBuilder.ts index 18ea81215..4403f797d 100644 --- a/dataforged-tools/src/builders/assets/AlterMomentumBuilder.ts +++ b/dataforged-tools/src/builders/assets/AlterMomentumBuilder.ts @@ -1,5 +1,4 @@ -import type { AlterMomentum, AlterMomentumBurn , AlterMomentumReset, AssetAbility, HasText } from "@schema_json"; -import type { YamlAlterMomentum, YamlAlterMomentumBurn, YamlAlterMomentumReset } from "@schema_yaml"; +import type { AlterMomentum, AlterMomentumBurn, AlterMomentumReset , AssetAbility, HasText, YamlAlterMomentum, YamlAlterMomentumBurn, YamlAlterMomentumReset } from "@schema"; import { formatId } from "@utils"; /** diff --git a/dataforged-tools/src/builders/assets/AlterMoveBuilder.ts b/dataforged-tools/src/builders/assets/AlterMoveBuilder.ts index 9adbcb783..122bc4a88 100644 --- a/dataforged-tools/src/builders/assets/AlterMoveBuilder.ts +++ b/dataforged-tools/src/builders/assets/AlterMoveBuilder.ts @@ -1,6 +1,5 @@ -import { AlterMoveOutcomesBuilder , MoveTriggerBuilder } from "@builders"; -import type { AlterMove, AlterMoveOutcomes, AssetAbility , Move, MoveTrigger } from "@schema_json"; -import type { YamlAlterMove } from "@schema_yaml"; +import { AlterMoveOutcomesBuilder, MoveTriggerBuilder } from "@builders"; +import type { AlterMove, AlterMoveOutcomes, AssetAbility, Move, MoveTrigger , YamlAlterMove } from "@schema"; import { formatId } from "@utils"; import _ from "lodash-es"; diff --git a/dataforged-tools/src/builders/assets/AssetAbilityBuilder.ts b/dataforged-tools/src/builders/assets/AssetAbilityBuilder.ts index bf848a0a6..27a573078 100644 --- a/dataforged-tools/src/builders/assets/AssetAbilityBuilder.ts +++ b/dataforged-tools/src/builders/assets/AssetAbilityBuilder.ts @@ -1,12 +1,11 @@ -import { AlterMomentumBuilder , AlterMoveBuilder , MoveBuilder } from "@builders"; +import { AlterMomentumBuilder, AlterMoveBuilder, MoveBuilder } from "@builders"; import { AssetAlterPropertiesBuilder } from "@builders/assets/AssetAlterPropertiesBuilder.js"; -import type { AlterMomentum, AlterMove, Asset , AssetAbility, Gamespace, InputClock, InputNumber, InputSelect, InputText, Move } from "@schema_json"; -import { Replacement } from "@schema_json"; -import type { YamlAssetAbility } from "@schema_yaml"; +import { Replacement } from "@schema"; +import type { AlterMomentum , AlterMove, Asset, AssetAbility, Gamespace, InputClock, InputNumber, InputSelect, InputText, Move, YamlAssetAbility } from "@schema"; import { formatId } from "@utils"; import { pickInput } from "@utils/object_transform/pickInput.js"; import { replaceInAllStrings } from "@utils/object_transform/replaceInAllStrings.js"; -import _ from "lodash-es"; +import _ from "lodash-es";Game /** * @internal @@ -22,7 +21,7 @@ export class AssetAbilityBuilder implements AssetAbility { "Alter Momentum"?: AlterMomentum | undefined; Enabled: boolean; constructor(json: YamlAssetAbility, id: AssetAbility["$id"], gamespace: Gamespace, parent: Asset) { - this.$id = id; + this.$id = id;Game this.Label = json.Label; this.Text = json.Text; if (json.Inputs) { diff --git a/dataforged-tools/src/builders/assets/AssetAlterPropertiesBuilder.ts b/dataforged-tools/src/builders/assets/AssetAlterPropertiesBuilder.ts index 0b0c86302..96750703c 100644 --- a/dataforged-tools/src/builders/assets/AssetAlterPropertiesBuilder.ts +++ b/dataforged-tools/src/builders/assets/AssetAlterPropertiesBuilder.ts @@ -1,7 +1,6 @@ import { AssetStateBuilder } from "@builders"; -import type { AssetAlterProperties } from "@schema_json"; +import type { AssetAlterProperties , YamlAssetAlterProperties } from "@schema"; import { formatId } from "@utils"; -import type { YamlAssetAlterProperties } from "@schema_yaml"; export class AssetAlterPropertiesBuilder implements AssetAlterProperties { $id: string; diff --git a/dataforged-tools/src/builders/assets/AssetBuilder.ts b/dataforged-tools/src/builders/assets/AssetBuilder.ts index 53aff168f..d1db3e3f9 100644 --- a/dataforged-tools/src/builders/assets/AssetBuilder.ts +++ b/dataforged-tools/src/builders/assets/AssetBuilder.ts @@ -1,13 +1,12 @@ -import { AssetAbilityBuilder , AssetStateBuilder , ConditionMeterBuilder , DisplayBuilder , SourceInheritorBuilder , TitleBuilder } from "@builders"; -import type { Asset , AssetAbility, AssetAttachment , AssetState, AssetType, AssetUsage, ConditionMeter, Display, Gamespace, InputClock, InputNumber, InputSelect, InputText, Source, Title } from "@schema_json"; -import { InputSelectOptionType , InputType , Replacement } from "@schema_json"; -import type { YamlAsset } from "@schema_yaml"; +import { AssetAbilityBuilder, AssetStateBuilder, ConditionMeterBuilder, DisplayBuilder, SourceInheritorBuilder, TitleBuilder } from "@builders"; +import { InputSelectOptionType, InputType, Replacement } from "@schema"; +import type { Asset , AssetAbility, AssetAttachment, AssetState, AssetType, AssetUsage, ConditionMeter, Display, Gamespace, InputClock, InputNumber, InputSelect, InputText, Source, Title, YamlAsset } from "@schema"; import { formatId } from "@utils"; import { badJsonError } from "@utils/logging/badJsonError.js"; import { buildLog } from "@utils/logging/buildLog.js"; import { pickInput } from "@utils/object_transform/pickInput.js"; import { replaceInAllStrings } from "@utils/object_transform/replaceInAllStrings.js"; -import _ from "lodash-es"; +import _ from "lodash-es";Game /** * @internal @@ -26,7 +25,7 @@ export class AssetBuilder extends SourceInheritorBuilder implements Asset { Abilities: [AssetAbility, AssetAbility, AssetAbility]; "Condition Meter"?: ConditionMeter | undefined; constructor(json: YamlAsset, gamespace: Gamespace, parent: AssetType, rootSource: Source) { - // uses RootSource as a starting point because category info has page numbers in the rulebook, rather than the asset pdf + // uses RootSource as a starting pointGamecategory info has page numbers in the rulebook, rather than the asset pdf super(json.Source ?? {}, rootSource); // console.log(this.Source); this["Asset Type"] = parent.$id; diff --git a/dataforged-tools/src/builders/assets/AssetStateBuilder.ts b/dataforged-tools/src/builders/assets/AssetStateBuilder.ts index dd8700dfb..8d2f4c450 100644 --- a/dataforged-tools/src/builders/assets/AssetStateBuilder.ts +++ b/dataforged-tools/src/builders/assets/AssetStateBuilder.ts @@ -1,6 +1,5 @@ -import type { AssetState, HasId } from "@schema_json"; +import type { AssetState , HasId, YamlAssetState } from "@schema"; import { formatId } from "@utils"; -import type { YamlAssetState } from "@schema_yaml"; /** * @internal diff --git a/dataforged-tools/src/builders/assets/AssetTypeBuilder.ts b/dataforged-tools/src/builders/assets/AssetTypeBuilder.ts index 354ef974e..3167e21c7 100644 --- a/dataforged-tools/src/builders/assets/AssetTypeBuilder.ts +++ b/dataforged-tools/src/builders/assets/AssetTypeBuilder.ts @@ -1,8 +1,7 @@ -import { AssetBuilder , DisplayBuilder, SourceInheritorBuilder, TitleBuilder } from "@builders"; -import type { Asset, AssetType , AssetUsage, Display, Gamespace, Source, Title } from "@schema_json"; -import type { YamlAssetType } from "@schema_yaml"; +import { AssetBuilder, DisplayBuilder, SourceInheritorBuilder, TitleBuilder } from "@builders"; +import type { Asset , AssetType, AssetUsage, Display, Gamespace, Source, Title, YamlAssetType } from "@schema"; import { formatId } from "@utils"; -import _ from "lodash-es"; +import _ from "lodash-es";Game /** * @internal @@ -16,7 +15,7 @@ export class AssetTypeBuilder extends SourceInheritorBuilder implements AssetTyp Display: Display; Usage: AssetUsage; constructor(json: YamlAssetType, gamespace: Gamespace, rootSource: Source) { - super(json.Source ?? {}, rootSource); + super(json.Source ?? {}, rootSource);Game const fragment = json._idFragment ?? json.Title.Short ?? json.Title.Standard ?? json.Title.Canonical; this.$id = formatId(fragment,gamespace,"Assets"); this.Aliases = json.Aliases; diff --git a/dataforged-tools/src/builders/common/AttributeRequirementsBuilder.ts b/dataforged-tools/src/builders/common/AttributeRequirementsBuilder.ts index f63d279d2..84bd0a4a7 100644 --- a/dataforged-tools/src/builders/common/AttributeRequirementsBuilder.ts +++ b/dataforged-tools/src/builders/common/AttributeRequirementsBuilder.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/naming-convention */ -import type { AttributeChoices, AttributeKey, AttributeValue } from "@schema_json"; +import type { AttributeChoices, AttributeKey, AttributeValue } from "@schema"; import type { AttributeHash } from "@utils/types/AttributeHash.js"; import _ from "lodash-es"; diff --git a/dataforged-tools/src/builders/common/ConditionMeterBuilder.ts b/dataforged-tools/src/builders/common/ConditionMeterBuilder.ts index 74ed6d1af..517e2af20 100644 --- a/dataforged-tools/src/builders/common/ConditionMeterBuilder.ts +++ b/dataforged-tools/src/builders/common/ConditionMeterBuilder.ts @@ -1,7 +1,6 @@ import { MeterBuilder } from "@builders"; -import { MeterAlias } from "@schema_json"; -import type { AssetType, ConditionMeter , MeterCondition } from "@schema_json"; -import type { YamlConditionMeter } from "@schema_yaml"; +import { MeterAlias } from "@schema"; +import type { AssetType , ConditionMeter, MeterCondition, YamlConditionMeter } from "@schema"; /** * @internal diff --git a/dataforged-tools/src/builders/common/CustomStatOptionBuilder.ts b/dataforged-tools/src/builders/common/CustomStatOptionBuilder.ts index 39b397c6b..8b889d345 100644 --- a/dataforged-tools/src/builders/common/CustomStatOptionBuilder.ts +++ b/dataforged-tools/src/builders/common/CustomStatOptionBuilder.ts @@ -1,5 +1,5 @@ +import type { CustomStatOption } from "@schema"; import { formatId } from "@utils"; -import type { CustomStatOption } from "@schema_json"; /** * @internal diff --git a/dataforged-tools/src/builders/common/DisplayBuilder.ts b/dataforged-tools/src/builders/common/DisplayBuilder.ts index b5406bf4b..024323557 100644 --- a/dataforged-tools/src/builders/common/DisplayBuilder.ts +++ b/dataforged-tools/src/builders/common/DisplayBuilder.ts @@ -1,4 +1,4 @@ -import type { Display } from "@schema_json"; +import type { Display } from "@schema"; /** * @internal */ diff --git a/dataforged-tools/src/builders/common/InputBuilder.ts b/dataforged-tools/src/builders/common/InputBuilder.ts index 5097f84b5..3bd476288 100644 --- a/dataforged-tools/src/builders/common/InputBuilder.ts +++ b/dataforged-tools/src/builders/common/InputBuilder.ts @@ -1,7 +1,5 @@ -import type { AssetAbilityBuilder , AssetBuilder } from "@builders"; -import { ClockType } from "@schema_json"; -import type { Asset, AssetAbility, ClockSegments, Input, InputClock, InputNumber , InputText , InputType } from "@schema_json"; -import type { YamlInput, YamlInputClock, YamlInputNumber, YamlInputText } from "@schema_yaml"; +import { ClockType } from "@schema"; +import type { Asset, AssetAbility, ClockSegments, Input , InputClock, InputNumber, InputText, InputType, YamlInput, YamlInputClock, YamlInputNumber, YamlInputText } from "@schema"; import { formatId } from "@utils"; /** diff --git a/dataforged-tools/src/builders/common/InputSelectBuilder.ts b/dataforged-tools/src/builders/common/InputSelectBuilder.ts index a5816966e..021f149bc 100644 --- a/dataforged-tools/src/builders/common/InputSelectBuilder.ts +++ b/dataforged-tools/src/builders/common/InputSelectBuilder.ts @@ -1,8 +1,7 @@ import { InputBuilder } from "@builders"; -import { InputType } from "@schema_json"; -import type { Asset, AssetAbility, InputSelect, InputSelectAttributeDefinition, InputSelectOption, InputSelectOptionSetter , InputSelectOptionSetterMeter, InputSelectOptionSetterNumber, InputSelectOptionSetterStat, InputSelectOptionSetterString, InputSelectOptionType } from "@schema_json"; -import type { YamlInputSelect, YamlInputSelectOption, YamlInputSelectOptionSetter } from "@schema_yaml"; +import type { Asset, AssetAbility, InputSelect , InputSelectAttributeDefinition, InputSelectOption, InputSelectOptionSetter, InputSelectOptionSetterMeter, InputSelectOptionSetterNumber, InputSelectOptionSetterStat, InputSelectOptionSetterString, InputSelectOptionType, YamlInputSelect, YamlInputSelectOption, YamlInputSelectOptionSetter } from "@schema"; +import { InputType } from "@schema"; import { formatId } from "@utils"; import { badJsonError } from "@utils/logging/badJsonError.js"; diff --git a/dataforged-tools/src/builders/common/MeterBuilder.ts b/dataforged-tools/src/builders/common/MeterBuilder.ts index ae791ce6c..16be5c657 100644 --- a/dataforged-tools/src/builders/common/MeterBuilder.ts +++ b/dataforged-tools/src/builders/common/MeterBuilder.ts @@ -1,5 +1,4 @@ -import type { Meter } from "@schema_json"; -import type { YamlMeter } from "@schema_yaml"; +import type { Meter , YamlMeter } from "@schema"; /** * Class representing a meter (Starforged) or status track (Ironsworn). diff --git a/dataforged-tools/src/builders/common/RequirementsBuilder.ts b/dataforged-tools/src/builders/common/RequirementsBuilder.ts index 51b4953ac..8732fb9a7 100644 --- a/dataforged-tools/src/builders/common/RequirementsBuilder.ts +++ b/dataforged-tools/src/builders/common/RequirementsBuilder.ts @@ -1,6 +1,5 @@ import { AttributeRequirementsBuilder } from "@builders"; -import type { Requirements } from "@schema_json"; -import type { YamlRequirements } from "@schema_yaml"; +import type { Requirements , YamlRequirements } from "@schema"; /** * @internal diff --git a/dataforged-tools/src/builders/common/RollTemplateBuilder.ts b/dataforged-tools/src/builders/common/RollTemplateBuilder.ts index 2bdd304a1..d4d4a5490 100644 --- a/dataforged-tools/src/builders/common/RollTemplateBuilder.ts +++ b/dataforged-tools/src/builders/common/RollTemplateBuilder.ts @@ -1,5 +1,4 @@ -import type { YamlRollTemplate } from "@schema_yaml"; -import type { HasId, RollTemplate } from "@schema_json"; +import type { HasId, RollTemplate, YamlRollTemplate } from "@schema"; /** * @internal diff --git a/dataforged-tools/src/builders/common/SourceBuilder.ts b/dataforged-tools/src/builders/common/SourceBuilder.ts index f837376b7..d0f1166e1 100644 --- a/dataforged-tools/src/builders/common/SourceBuilder.ts +++ b/dataforged-tools/src/builders/common/SourceBuilder.ts @@ -1,7 +1,6 @@ -import type { Source } from "@schema_json"; -import { License, SourceTitle } from "@schema_json"; -import type { YamlSource } from "@schema_yaml"; +import type { Source , YamlSource } from "@schema"; +import { Game , License, SourceTitle } from "@schema"; import _ from "lodash-es"; /** @@ -14,6 +13,23 @@ export class SourceBuilder implements Source { Page?: number | undefined; Url?: string | undefined; License: License; + static default(game: Game) { + return new SourceBuilder({ Title: game === Game.Ironsworn ? SourceTitle.Ironsworn : SourceTitle.Starforged, Authors: ["Shawn Tomkin"] }); + } + static getDefaultLicense(sourceTitle: SourceTitle|string) { + switch (sourceTitle as SourceTitle) { + case SourceTitle.Ironsworn: + case SourceTitle.IronswornAssets: + return License.CC_BY_NC_SA; + case SourceTitle.IronswornDelve: + return License.CC_BY_NC_SA; + case SourceTitle.Starforged: + case SourceTitle.StarforgedAssets: + return License.CC_BY_SA; + case SourceTitle.SunderedIslesPreview: + return License.None; + } + } constructor(json: YamlSource, ...ancestorSourceJson: YamlSource[]) { const sourceStack = _.cloneDeep([ ..._.compact( ancestorSourceJson) @@ -29,28 +45,12 @@ export class SourceBuilder implements Source { this.Date = merged.Date; this.Page = merged.Page; this.Url = merged.Url; - if (merged.License) { - this.License = merged.License; - } else{ - switch (this.Title as SourceTitle) { - case SourceTitle.Ironsworn: - case SourceTitle.IronswornAssets: - this.License = License.CC_BY_NC_SA; - break; - case SourceTitle.IronswornDelve: - this.License = License.CC_BY_NC_SA; - break; - case SourceTitle.Starforged: - case SourceTitle.StarforgedAssets: - this.License = License.CC_BY_SA; - break; - case SourceTitle.SunderedIslesPreview: - this.License = License.None; - break; - default: - throw new Error(`Could not infer a valid license!\n${JSON.stringify(this)}`); - } + const license: undefined|License = merged.License ?? SourceBuilder.getDefaultLicense(merged.Title); + if (!license) { + throw new Error(`Could not infer a valid license!\n${JSON.stringify(merged)}`); } + this.License = license; } } + diff --git a/dataforged-tools/src/builders/common/SourceInheritorBuilder.ts b/dataforged-tools/src/builders/common/SourceInheritorBuilder.ts index b6291c903..d519d427b 100644 --- a/dataforged-tools/src/builders/common/SourceInheritorBuilder.ts +++ b/dataforged-tools/src/builders/common/SourceInheritorBuilder.ts @@ -1,5 +1,5 @@ import { SourceBuilder } from "@builders"; -import type { HasSource, Source } from "@schema_json"; +import type { HasSource, Source } from "@schema"; /** * @internal diff --git a/dataforged-tools/src/builders/common/SuggestionsBuilder.ts b/dataforged-tools/src/builders/common/SuggestionsBuilder.ts index 6f9ba965f..bb96ef386 100644 --- a/dataforged-tools/src/builders/common/SuggestionsBuilder.ts +++ b/dataforged-tools/src/builders/common/SuggestionsBuilder.ts @@ -1,6 +1,5 @@ import { GameObjectBuilder } from "@builders"; -import type { Asset , EncounterStarforged , GameObject, Move, OracleTable, Suggestions } from "@schema_json"; -import type { YamlSuggestions } from "@schema_yaml"; +import type { Asset , EncounterStarforged, GameObject, Move, OracleTable, Suggestions, YamlSuggestions } from "@schema"; /** * @internal diff --git a/dataforged-tools/src/builders/common/TitleBuilder.ts b/dataforged-tools/src/builders/common/TitleBuilder.ts index dc5572896..458a8a320 100644 --- a/dataforged-tools/src/builders/common/TitleBuilder.ts +++ b/dataforged-tools/src/builders/common/TitleBuilder.ts @@ -1,6 +1,5 @@ -import type { HasId, Title } from "@schema_json"; +import type { HasId , Title, YamlTitle } from "@schema"; import { formatId } from "@utils/formatId.js"; -import type { YamlTitle } from "@schema_yaml"; /** * @internal @@ -10,7 +9,7 @@ export class TitleBuilder implements Title { Canonical: string; Standard: string; Short: string; - constructor(json: YamlTitle, parent: HasId ) { + constructor(json: YamlTitle, parent: HasId) { if (!json ?? !json.Canonical) { throw new Error(`Missing canonical title for ${parent.$id}:\n${JSON.stringify(parent)}`); } diff --git a/dataforged-tools/src/builders/cyclopedia/EncounterBuilder.ts b/dataforged-tools/src/builders/cyclopedia/EncounterBuilder.ts index e3da7acf0..0201918f0 100644 --- a/dataforged-tools/src/builders/cyclopedia/EncounterBuilder.ts +++ b/dataforged-tools/src/builders/cyclopedia/EncounterBuilder.ts @@ -1,5 +1,4 @@ -import type { ChallengeRank, Display, Encounter, EncounterNatureClassic, EncounterNatureStarforged, EncounterTags, Source, Title } from "@schema_json"; -import type { YamlEncounterClassic, YamlEncounterStarforged } from "@schema_yaml"; +import type { ChallengeRank, Display , Encounter, EncounterNatureClassic, EncounterNatureStarforged, EncounterTags, Source, Title, YamlEncounterClassic, YamlEncounterStarforged } from "@schema"; /** * @internal diff --git a/dataforged-tools/src/builders/cyclopedia/EncounterClassicBuilder.ts b/dataforged-tools/src/builders/cyclopedia/EncounterClassicBuilder.ts index eba297502..ffae1b2b9 100644 --- a/dataforged-tools/src/builders/cyclopedia/EncounterClassicBuilder.ts +++ b/dataforged-tools/src/builders/cyclopedia/EncounterClassicBuilder.ts @@ -1,7 +1,6 @@ -import { DisplayBuilder , EncounterBuilder , SourceBuilder , TitleBuilder } from "@builders"; -import { EncounterNatureClassic } from "@schema_json"; -import type { Display, EncounterClassic , EncounterNatureClassicInfo, Source , Title } from "@schema_json"; -import type { YamlEncounterClassic } from "@schema_yaml"; +import { DisplayBuilder, EncounterBuilder, SourceBuilder, TitleBuilder } from "@builders"; +import { EncounterNatureClassic } from "@schema"; +import type { Display , EncounterClassic, EncounterNatureClassicInfo, Source, Title, YamlEncounterClassic } from "@schema"; import { formatId } from "@utils"; diff --git a/dataforged-tools/src/builders/cyclopedia/EncounterNatureClassicBuilder.ts b/dataforged-tools/src/builders/cyclopedia/EncounterNatureClassicBuilder.ts index 20c47410b..743f33555 100644 --- a/dataforged-tools/src/builders/cyclopedia/EncounterNatureClassicBuilder.ts +++ b/dataforged-tools/src/builders/cyclopedia/EncounterNatureClassicBuilder.ts @@ -1,7 +1,7 @@ -import { DisplayBuilder , EncounterClassicBuilder , SourceBuilder , TitleBuilder } from "@builders"; -import { Gamespace } from "@schema_json"; -import type { Display , EncounterClassic , EncounterNatureClassicInfo , Source } from "@schema_json"; -import type { YamlEncounterNatureInfo } from "@schema_yaml/cyclopedia/YamlEncounterIronsworn.js"; +import { DisplayBuilder, EncounterClassicBuilder, SourceBuilder, TitleBuilder } from "@builders"; +import { Gamespace } from "@schema"; +import type { Display , EncounterClassic, EncounterNatureClassicInfo, Source } from "@schema"; +import tyGameEncounterNatureInfo } from "@schema/yaml/cyclopedia/YamlEncounterIronsworn.js"; import { formatId } from "@utils"; import _ from "lodash-es"; @@ -19,7 +19,7 @@ export class EncounterNatureClassicInfoBuilder implements EncounterNatureClassic Encounters: {[key: string]: EncounterClassic}; constructor(json: YamlEncounterNatureInfo, parentSource: Source) { const fragment = json._idFragment ?? json.Title.Short ?? json.Title.Standard ?? json.Title.Canonical; - this.$id = formatId(fragment, Gamespace.Ironsworn, "Encounters"); + this.$id = formatId(fragment, Game.Ironsworn, "Encounters"); this.Title = new TitleBuilder(json.Title, this) as EncounterNatureClassicInfo["Title"]; this.Source = new SourceBuilder(json.Source ?? {}, parentSource); diff --git a/dataforged-tools/src/builders/cyclopedia/EncounterStarforgedBuilder.ts b/dataforged-tools/src/builders/cyclopedia/EncounterStarforgedBuilder.ts index 5d4c1b556..c1f186916 100644 --- a/dataforged-tools/src/builders/cyclopedia/EncounterStarforgedBuilder.ts +++ b/dataforged-tools/src/builders/cyclopedia/EncounterStarforgedBuilder.ts @@ -1,8 +1,7 @@ -import { DisplayBuilder , EncounterVariantBuilder , SourceBuilder , TitleBuilder } from "@builders"; -import { Gamespace } from "@schema_json"; -import type { ChallengeRank, Display, EncounterNatureStarforged, EncounterStarforged, EncounterTags , EncounterVariant, Source, Title } from "@schema_json"; -import type { YamlEncounterStarforged } from "@schema_yaml"; -import { formatId } from "@utils/formatId.js"; +import { DisplayBuilder, EncounterVariantBuilder, SourceBuilder, TitleBuilder } from "@builders"; +import { Gamespace } from "@schema"; +import type { ChallengeRank , Display, EncounterNatureStarforged, EncounterStarforged, EncounterTags, EncounterVariant, Source, Title, YamlEncounterStarforged } from "@schema"; +import { Game} from "@utils/formatId.js"; /** * @internal @@ -24,7 +23,7 @@ export class EncounterStarforgedBuilder implements EncounterStarforged { Source: Source; constructor(json: YamlEncounterStarforged, ...ancestorSourceJson: Source[]) { const gamespace = Gamespace.Starforged; - const fragment = json._idFragment?? json.Title.Canonical; + const fragment = jGameagment?? json.Title.Canonical; this.$id = formatId(fragment, gamespace, "Encounters"); this.Title = new TitleBuilder(json.Title, this); this.Nature = json.Nature; diff --git a/dataforged-tools/src/builders/cyclopedia/EncounterVariantBuilder.ts b/dataforged-tools/src/builders/cyclopedia/EncounterVariantBuilder.ts index 797bcd098..7c14300a3 100644 --- a/dataforged-tools/src/builders/cyclopedia/EncounterVariantBuilder.ts +++ b/dataforged-tools/src/builders/cyclopedia/EncounterVariantBuilder.ts @@ -1,6 +1,5 @@ -import { DisplayBuilder , SourceBuilder , TitleBuilder } from "@builders"; -import type { ChallengeRank, Display, EncounterNatureStarforged, EncounterStarforged, EncounterTags, EncounterVariant, Source, Title } from "@schema_json"; -import type { YamlEncounterVariant } from "@schema_yaml"; +import { DisplayBuilder, SourceBuilder, TitleBuilder } from "@builders"; +import type { ChallengeRank , Display, EncounterNatureStarforged, EncounterStarforged, EncounterTags, EncounterVariant, Source, Title, YamlEncounterVariant } from "@schema"; import { formatId } from "@utils"; diff --git a/dataforged-tools/src/builders/cyclopedia/IronlandsRegionBuilder.ts b/dataforged-tools/src/builders/cyclopedia/IronlandsRegionBuilder.ts index 35c7a50ee..a70da09d5 100644 --- a/dataforged-tools/src/builders/cyclopedia/IronlandsRegionBuilder.ts +++ b/dataforged-tools/src/builders/cyclopedia/IronlandsRegionBuilder.ts @@ -1,7 +1,6 @@ -import { DisplayBuilder, SourceBuilder , TitleBuilder } from "@builders"; -import { Gamespace } from "@schema_json"; -import type { Display, IronlandsRegion as IronlandsRegion , Source , Title } from "@schema_json"; -import type { YamlIronswornRegion } from "@schema_yaml"; +import { DisplayBuilder, SourceBuilder, TitleBuilder } from "@builders"; +import { Game } from "@schema"; +import type { Display, IronlandsRegion, Source, Title , YamlIronswornRegion } from "@schema"; import { formatId } from "@utils"; /** @@ -20,7 +19,7 @@ export class IronlandsRegionBuilder implements IronlandsRegion { constructor(json: YamlIronswornRegion, rootSource: Source) { const fragment = json._idFragment ?? json.Title.Short ?? json.Title.Standard ?? json.Title.Canonical; - this.$id = formatId(fragment, Gamespace.Ironsworn, "Regions"); + this.$id = formatId(fragment, Game.Ironsworn, "Regions"); this.Title = new TitleBuilder(json.Title,this); this.Display = new DisplayBuilder({ }); this.Source = new SourceBuilder(json.Source ?? {}, rootSource); diff --git a/dataforged-tools/src/builders/delve_site/DelveCardBuilder.ts b/dataforged-tools/src/builders/delve_site/DelveCardBuilder.ts index aee7bef23..d5bdbce51 100644 --- a/dataforged-tools/src/builders/delve_site/DelveCardBuilder.ts +++ b/dataforged-tools/src/builders/delve_site/DelveCardBuilder.ts @@ -1,8 +1,6 @@ import { OracleTableRowBuilder, SourceBuilder, TitleBuilder } from "@builders"; -import { DelveCardType, Gamespace } from "@schema_json"; -import type { DelveCard, DelveDomain , DelveTheme, OracleTableRow, Source , Title } from "@schema_json"; - -import type { YamlDelveCard, YamlDelveDomain, YamlDelveTheme } from "@schema_yaml"; +import { DelveCardType, Gamespace } from "@schema"; +import type { DelveCard,Gameain, DelveTheme, OracleTableRow, Source, Title , YamlDelveCard, YamlDelveDomain, YamlDelveTheme } from "@schema"; import type { PartialBy } from "@utils"; import { formatId } from "@utils"; import _ from "lodash-es"; @@ -57,7 +55,7 @@ abstract class DelveCardBuilder implements DelveCard { constructor(type: DelveCardType, json: YamlDelveCard, parentSource?: Source | undefined, domainFeaturesStaticRows: PartialBy[] = domainFeaturesStatic) { const fragment = json._idFragment??json.Title.Short ?? json.Title.Standard ?? json.Title.Canonical; this.$id = formatId(fragment, Gamespace.Ironsworn, type); - this.Type = type; + this.Type = type;Game this.Title = new TitleBuilder(json.Title, this); this.Source = new SourceBuilder(json.Source ?? {}, parentSource ?? {}); this.Summary = json.Summary; diff --git a/dataforged-tools/src/builders/delve_site/index.ts b/dataforged-tools/src/builders/delve_site/index.ts new file mode 100644 index 000000000..cbd4e3373 --- /dev/null +++ b/dataforged-tools/src/builders/delve_site/index.ts @@ -0,0 +1 @@ +export * from "@builders/delve_site/DelveCardBuilder"; \ No newline at end of file diff --git a/dataforged-tools/src/builders/index.ts b/dataforged-tools/src/builders/index.ts index c2adb92d0..f12fc9250 100644 --- a/dataforged-tools/src/builders/index.ts +++ b/dataforged-tools/src/builders/index.ts @@ -1,7 +1,8 @@ export * from "@builders/assets/index"; export * from "@builders/common/index"; export * from "@builders/cyclopedia/index"; +export * from "@builders/delve_site/index"; export * from "@builders/moves/index"; export * from "@builders/oracles/index"; -export * from "@builders/truths/index"; -export * from "@builders/rarities/index"; \ No newline at end of file +export * from "@builders/rarities/index"; +export * from "@builders/truths/index"; \ No newline at end of file diff --git a/dataforged-tools/src/builders/moves/CustomStatBuilder.ts b/dataforged-tools/src/builders/moves/CustomStatBuilder.ts index 5bd9b187a..f8d001f92 100644 --- a/dataforged-tools/src/builders/moves/CustomStatBuilder.ts +++ b/dataforged-tools/src/builders/moves/CustomStatBuilder.ts @@ -1,6 +1,5 @@ import { CustomStatOptionBuilder } from "@builders"; -import type { CustomStat, CustomStatOption, MoveTriggerOptionBase } from "@schema_json"; -import type { YamlCustomStat } from "@schema_yaml"; +import type { CustomStat , CustomStatOption, MoveTriggerOptionBase, YamlCustomStat } from "@schema"; import { formatId } from "@utils"; /** diff --git a/dataforged-tools/src/builders/moves/MoveBuilder.ts b/dataforged-tools/src/builders/moves/MoveBuilder.ts index baac921d7..35f791c49 100644 --- a/dataforged-tools/src/builders/moves/MoveBuilder.ts +++ b/dataforged-tools/src/builders/moves/MoveBuilder.ts @@ -1,9 +1,7 @@ -import { DisplayBuilder , MoveTriggerBuilder , OutcomesBuilder , SourceInheritorBuilder , TitleBuilder } from "@builders"; -import type { Asset, AssetAbility , Display, Gamespace , Move , MoveCategory, MoveTrigger, OracleTable, Outcomes, Source, Suggestions, Title, } from "@schema_json"; -import type { YamlMove } from "@schema_yaml"; +import { DisplayBuilder, MoveTriggerBuilder, OutcomesBuilder, SourceInheritorBuilder, TitleBuilder } from "@builders"; +import type { Asset , AssetAbility, Display, Game, Move, MoveCategory, MoveTrigger, OracleTable, Outcomes, Source, Suggestions, Title, YamlMove, } from "@schema"; import { formatId } from "@utils"; import { buildLog } from "@utils/logging/buildLog.js"; - /** * Object representing a Starforged move. * @internal @@ -13,7 +11,7 @@ export class MoveBuilder extends SourceInheritorBuilder implements Move { Title: Title; Optional: boolean; Category: MoveCategory["$id"]; - Asset?: this["Category"] extends `${Gamespace}/Moves/Assets` ? Asset["$id"] : undefined; + Asset?: this["Category"] extends `${Game}/Moves/Assets` ? Asset["$id"] : undefined; "Progress Move"?: boolean | undefined; "Variant of"?: Move["$id"] | undefined; Display: Display; @@ -23,9 +21,9 @@ export class MoveBuilder extends SourceInheritorBuilder implements Move { Oracles?: OracleTable["$id"][] | undefined; Suggestions?: Suggestions | undefined; Outcomes?: Outcomes | undefined; - constructor(json: YamlMove, parent: MoveCategory|AssetAbility, gamespace: Gamespace,...sourceAncestors: Source[]) { + constructor(json: YamlMove, parent: MoveCategory|AssetAbility, game: Game,...sourceAncestors: Source[]) { super(json.Source ?? {}, ...sourceAncestors); - this.Category = json.Category ?? `${gamespace}/Moves/Assets`; + this.Category = json.Category ?? `${game}/Moves/Assets`; const fragment = json._idFragment??json.Title.Canonical; this.$id = json.$id ?? formatId(fragment, this.Category); buildLog(this.constructor, `Building: ${this.$id}`); diff --git a/dataforged-tools/src/builders/moves/MoveCategoryBuilder.ts b/dataforged-tools/src/builders/moves/MoveCategoryBuilder.ts index 67af25e1c..7e069e143 100644 --- a/dataforged-tools/src/builders/moves/MoveCategoryBuilder.ts +++ b/dataforged-tools/src/builders/moves/MoveCategoryBuilder.ts @@ -1,8 +1,7 @@ -import { DisplayBuilder , MoveBuilder , SourceBuilder , TitleBuilder } from "@builders"; -import type { Display, Gamespace , Move, MoveCategory, Source, Title } from "@schema_json"; -import type { YamlMoveCategory } from "@schema_yaml"; +import { DisplayBuilder, MoveBuilder, SourceBuilder, TitleBuilder } from "@builders"; +import type { Display , Gamespace, Move, MoveCategory, Source, Title, YamlMoveCategory } from "@schema"; import { formatId } from "@utils"; -import _ from "lodash-es"; +import _ from "lodash-eGame /** * @internal @@ -16,7 +15,7 @@ export class MoveCategoryBuilder implements MoveCategory { Display: Display; Optional: boolean; constructor(json: YamlMoveCategory, gamespace: Gamespace, ...ancestorSourceJson: Source[]) { - if (!json.Title.Canonical) { + if (!json.Title.Canonical) {Game throw new Error(`Missing a title field: ${JSON.stringify(json)}`); } const fragment = json._idFragment ?? json.Title.Canonical; diff --git a/dataforged-tools/src/builders/moves/MoveCategoryDisplayBuilder.ts b/dataforged-tools/src/builders/moves/MoveCategoryDisplayBuilder.ts index 3f5b2ace9..48d8d3c45 100644 --- a/dataforged-tools/src/builders/moves/MoveCategoryDisplayBuilder.ts +++ b/dataforged-tools/src/builders/moves/MoveCategoryDisplayBuilder.ts @@ -1,6 +1,6 @@ -import type { Display } from "@schema_json"; +import type { Display } from "@schema"; import { badJsonError } from "@utils/logging/badJsonError.js"; -import { validateColor } from "@utils/validateColor.js"; +import { validateColor } from "@utils/validation/validateColor.js"; /** * @internal diff --git a/dataforged-tools/src/builders/moves/MoveTriggerBuilder.ts b/dataforged-tools/src/builders/moves/MoveTriggerBuilder.ts index d97924f7f..1edf99ce8 100644 --- a/dataforged-tools/src/builders/moves/MoveTriggerBuilder.ts +++ b/dataforged-tools/src/builders/moves/MoveTriggerBuilder.ts @@ -1,7 +1,6 @@ -import { MoveTriggerOptionActionBuilder , MoveTriggerOptionProgressBuilder } from "@builders"; -import type { AlterMove, Move, MoveTrigger, MoveTriggerBy, MoveTriggerOptionAction, MoveTriggerOptionProgress } from "@schema_json"; -import { RollType } from "@schema_json"; -import type { YamlAlterMoveTrigger , YamlMoveTrigger, YamlMoveTriggerOptionAction, YamlMoveTriggerOptionProgress } from "@schema_yaml"; +import { MoveTriggerOptionActionBuilder, MoveTriggerOptionProgressBuilder } from "@builders"; +import type { AlterMove, Move, MoveTrigger, MoveTriggerBy , MoveTriggerOptionAction, MoveTriggerOptionProgress, YamlAlterMoveTrigger, YamlMoveTrigger, YamlMoveTriggerOptionAction, YamlMoveTriggerOptionProgress } from "@schema"; +import { RollType } from "@schema"; // TODO: add ironsworn moves, or have the constructor use move data to figure it out diff --git a/dataforged-tools/src/builders/moves/MoveTriggerOptionBuilder.ts b/dataforged-tools/src/builders/moves/MoveTriggerOptionBuilder.ts index 5ca69b2ef..534216c53 100644 --- a/dataforged-tools/src/builders/moves/MoveTriggerOptionBuilder.ts +++ b/dataforged-tools/src/builders/moves/MoveTriggerOptionBuilder.ts @@ -1,7 +1,6 @@ import { CustomStatBuilder } from "@builders"; -import type { CustomStat, MoveTrigger, MoveTriggerOptionAction, MoveTriggerOptionBase, MoveTriggerOptionProgress, ProgressTypeIronsworn, ProgressTypeStarforged, RollableStat } from "@schema_json"; -import { Replacement , RollMethod , RollType } from "@schema_json"; -import type { YamlMoveTriggerOptionAction, YamlMoveTriggerOptionProgress } from "@schema_yaml"; +import type { CustomStat, MoveTrigger , MoveTriggerOptionAction, MoveTriggerOptionBase, MoveTriggerOptionProgress, ProgressTypeIronsworn, ProgressTypeStarforged, RollableStat, YamlMoveTriggerOptionAction, YamlMoveTriggerOptionProgress } from "@schema"; +import { Replacement, RollMethod, RollType } from "@schema"; /** * @internal diff --git a/dataforged-tools/src/builders/moves/OutcomeBuilder.ts b/dataforged-tools/src/builders/moves/OutcomeBuilder.ts index fafa87912..9edbb363b 100644 --- a/dataforged-tools/src/builders/moves/OutcomeBuilder.ts +++ b/dataforged-tools/src/builders/moves/OutcomeBuilder.ts @@ -1,6 +1,5 @@ -import type { MoveReroll, OutcomeBase, OutcomeMiss, OutcomeMissMatch, OutcomeStrongHit, OutcomeStrongHitMatch, OutcomeWeakHit } from "@schema_json"; -import { MoveOutcome } from "@schema_json"; -import type { YamlOutcome, YamlOutcomeMiss, YamlOutcomeStrongHit, YamlOutcomeStrongHitMatch, YamlOutcomeWeakHit } from "@schema_yaml"; +import type { MoveReroll, OutcomeBase, OutcomeMiss, OutcomeMissMatch, OutcomeStrongHit , OutcomeStrongHitMatch, OutcomeWeakHit, YamlOutcome, YamlOutcomeMiss, YamlOutcomeStrongHit, YamlOutcomeStrongHitMatch, YamlOutcomeWeakHit } from "@schema"; +import { MoveOutcome } from "@schema"; import { formatId } from "@utils/formatId"; /** diff --git a/dataforged-tools/src/builders/moves/OutcomesBuilder.ts b/dataforged-tools/src/builders/moves/OutcomesBuilder.ts index 7d0891438..46c9aa9ea 100644 --- a/dataforged-tools/src/builders/moves/OutcomesBuilder.ts +++ b/dataforged-tools/src/builders/moves/OutcomesBuilder.ts @@ -1,6 +1,5 @@ import { OutcomeMissBuilder, OutcomeStrongHitBuilder, OutcomeWeakHitBuilder } from "@builders"; -import type { AlterMoveOutcomes, Outcomes } from "@schema_json"; -import type { YamlAlterMoveOutcomes, YamlOutcomes } from "@schema_yaml"; +import type { AlterMoveOutcomes, Outcomes , YamlAlterMoveOutcomes, YamlOutcomes } from "@schema"; import { formatId } from "@utils/formatId.js"; /** diff --git a/dataforged-tools/src/builders/oracles/AttributeSetterBuilder.ts b/dataforged-tools/src/builders/oracles/AttributeSetterBuilder.ts index 7e500fbaa..7688db1ae 100644 --- a/dataforged-tools/src/builders/oracles/AttributeSetterBuilder.ts +++ b/dataforged-tools/src/builders/oracles/AttributeSetterBuilder.ts @@ -1,4 +1,4 @@ -import type { Attribute } from "@schema_json"; +import type { Attribute } from "@schema"; import type { AttributeHash } from "@utils/types/AttributeHash.js"; import _ from "lodash-es"; diff --git a/dataforged-tools/src/builders/oracles/GameObjectBuilder.ts b/dataforged-tools/src/builders/oracles/GameObjectBuilder.ts index f01de194a..fc9766b26 100644 --- a/dataforged-tools/src/builders/oracles/GameObjectBuilder.ts +++ b/dataforged-tools/src/builders/oracles/GameObjectBuilder.ts @@ -1,8 +1,7 @@ import { RequirementsBuilder } from "@builders"; import type { GameObjectRecord } from "@game_objects"; import type { GameObjectType } from "@game_objects/enum/GameObjectType.js"; -import type { GameObject, Requirements } from "@schema_json"; -import type { YamlRequirements } from "@schema_yaml"; +import type { GameObject, Requirements , YamlRequirements } from "@schema"; import type { AttributeHash } from "@utils/types/AttributeHash.js"; import _ from "lodash-es"; diff --git a/dataforged-tools/src/builders/oracles/MultipleRollsBuilder.ts b/dataforged-tools/src/builders/oracles/MultipleRollsBuilder.ts index f976aff65..09fbfd088 100644 --- a/dataforged-tools/src/builders/oracles/MultipleRollsBuilder.ts +++ b/dataforged-tools/src/builders/oracles/MultipleRollsBuilder.ts @@ -1,4 +1,4 @@ -import type { MultipleRolls } from "@schema_json"; +import type { MultipleRolls } from "@schema"; /** diff --git a/dataforged-tools/src/builders/oracles/OracleBuilder.ts b/dataforged-tools/src/builders/oracles/OracleBuilder.ts index 7f6ca5763..a08b90931 100644 --- a/dataforged-tools/src/builders/oracles/OracleBuilder.ts +++ b/dataforged-tools/src/builders/oracles/OracleBuilder.ts @@ -1,6 +1,5 @@ -import { OracleUsageBuilder as OracleUsage , SourceInheritorBuilder , TitleBuilder } from "@builders"; -import type { OracleBase, OracleDisplayBase, OracleSet, OracleTable, OracleTableRow, RowNullStub, Title } from "@schema_json"; -import type { YamlOracleSet, YamlOracleSetTemplate, YamlOracleTable, YamlOracleTableTemplate, YamlTitle } from "@schema_yaml"; +import { OracleUsageBuilder, SourceInheritorBuilder, TitleBuilder } from "@builders"; +import type { OracleBase, OracleDisplayBase, OracleSet, OracleTable, OracleTableRow, OracleUsage, RowNullStub, Title , YamlOracleSet, YamlOracleSetTemplate, YamlOracleTable, YamlOracleTableTemplate, YamlTitle } from "@schema"; import { formatId } from "@utils"; import { extractAncestors } from "@utils/extractAncestors.js"; import { buildLog } from "@utils/logging/buildLog.js"; @@ -21,12 +20,12 @@ export abstract class OracleBuilder extends SourceInheritorBuilder implements Or Summary?: string | undefined; Description?: string | undefined; Usage?: OracleUsage | undefined; - Tables?: {[key:string]: OracleTable} | undefined; - Sets?: {[key:string]: OracleSet} | undefined; + Tables?: { [key:string]: OracleTable } | undefined; + Sets?: { [key:string]: OracleSet } | undefined; Table?: (OracleTableRow|RowNullStub)[] | undefined; "Sample Names"?: string[]; toJSON() { - return _.omitBy(this, (key)=> (key as string).startsWith("_")); + return _.omitBy(this, (key)=> typeof key === "string" && key.startsWith("_")); } private _yamlData: YamlOracleSet | YamlOracleTable; public get yamlData(): YamlOracleSet | YamlOracleTable { @@ -54,25 +53,22 @@ export abstract class OracleBuilder extends SourceInheritorBuilder implements Or ..._.compact(ancestorsJson.map(item => item.Source)) ); - // console.log("building from json", jsonClone); const fragment = jsonClone._idFragment ?? jsonClone.Title?.Short ?? jsonClone.Title?.Standard ?? jsonClone.Title?.Canonical; if (!fragment) { - console.log(jsonClone); throw new Error(); } this.$id = formatId(fragment,parentId); buildLog(this.constructor, `Building: ${this.$id}`); this.Title = new TitleBuilder(jsonClone.Title as YamlTitle, this); this.Ancestors = extractAncestors(this.$id); - // this.Aliases = jsonClone.Aliases;s this.Summary = jsonClone.Summary; this.Description = jsonClone.Description; // this is just so it's ordered nicely this.Display = { $id: formatId("Display",this.$id) }; if (jsonClone.Usage) { - this.Usage = new OracleUsage(jsonClone.Usage); + this.Usage = new OracleUsageBuilder(jsonClone.Usage); } // readonly data to be used by descendant classes - this._yamlData=jsonClone as YamlOracleSet|YamlOracleTable; + this._yamlData=jsonClone as YamlOracleSet | YamlOracleTable; } } \ No newline at end of file diff --git a/dataforged-tools/src/builders/oracles/OracleContentBuilder.ts b/dataforged-tools/src/builders/oracles/OracleContentBuilder.ts index 37be7d067..ec2bd07ad 100644 --- a/dataforged-tools/src/builders/oracles/OracleContentBuilder.ts +++ b/dataforged-tools/src/builders/oracles/OracleContentBuilder.ts @@ -1,4 +1,4 @@ -import type { OracleContent, PartOfSpeechTag } from "@schema_json"; +import type { OracleContent, PartOfSpeechTag } from "@schema"; // import { badJsonError } from "@utils/logging/badJsonError.js"; /** diff --git a/dataforged-tools/src/builders/oracles/OracleDisplayBuilder.ts b/dataforged-tools/src/builders/oracles/OracleDisplayBuilder.ts index f8fedc805..c64139a63 100644 --- a/dataforged-tools/src/builders/oracles/OracleDisplayBuilder.ts +++ b/dataforged-tools/src/builders/oracles/OracleDisplayBuilder.ts @@ -1,7 +1,6 @@ import { DisplayBuilder, TableColumnRollBuilder, TableColumnTextBuilder } from "@builders"; -import { TableColumnType } from "@schema_json"; -import type { OracleDisplayBase, OracleSet, OracleSetDisplay, OracleTable , OracleTableDisplay as OracleTableDisplay, OracleTableRow , TableColumnRoll, TableColumnText } from "@schema_json"; -import type { YamlOracleDisplayBase, YamlOracleSetDisplay, YamlOracleTableDisplay, YamlTableColumnRoll, YamlTableColumnText } from "@schema_yaml"; +import { TableColumnType } from "@schema"; +import type { OracleDisplayBase, OracleSet, OracleSetDisplay, OracleTable, OracleTableDisplay, OracleTableRow, TableColumnRoll, TableColumnText , YamlOracleDisplayBase, YamlOracleSetDisplay, YamlOracleTableDisplay, YamlTableColumnRoll, YamlTableColumnText } from "@schema"; import { cloneDeep } from "lodash-es"; /** diff --git a/dataforged-tools/src/builders/oracles/OracleSetBuilder.ts b/dataforged-tools/src/builders/oracles/OracleSetBuilder.ts index 2c4d2ff93..7070e75f3 100644 --- a/dataforged-tools/src/builders/oracles/OracleSetBuilder.ts +++ b/dataforged-tools/src/builders/oracles/OracleSetBuilder.ts @@ -1,7 +1,6 @@ -import { OracleBuilder, OracleSetDisplayBuilder , OracleTableBuilder } from "@builders"; -import type { OracleBase, OracleSet, OracleSetDisplay, OracleTable } from "@schema_json"; -import type { YamlOracleSet, YamlOracleTable } from "@schema_yaml"; +import { OracleBuilder, OracleSetDisplayBuilder , OracleTableBuilder } from "@builders"; +import type { OracleBase, OracleSet , OracleSetDisplay, OracleTable, YamlOracleSet, YamlOracleTable } from "@schema"; import { propagateToChildren } from "@utils/object_transform/propagateToChildren.js"; import _ from "lodash-es"; diff --git a/dataforged-tools/src/builders/oracles/OracleTableBuilder.ts b/dataforged-tools/src/builders/oracles/OracleTableBuilder.ts index 1c836b6d2..823737531 100644 --- a/dataforged-tools/src/builders/oracles/OracleTableBuilder.ts +++ b/dataforged-tools/src/builders/oracles/OracleTableBuilder.ts @@ -1,10 +1,8 @@ -import { OracleBuilder , OracleContentBuilder , OracleTableDisplayBuilder , OracleTableRowBuilder , RowNullStubBuilder } from "@builders"; -import type { OracleContent, OracleSet, OracleTable, OracleTableDisplay, OracleTableRow, RowNullStub } from "@schema_json"; -import type { YamlOracleSet, YamlOracleTable, YamlSimpleTableRow , YamlStub } from "@schema_yaml"; +import { OracleBuilder, OracleContentBuilder , OracleTableDisplayBuilder, OracleTableRowBuilder , RowNullStubBuilder } from "@builders"; +import type { OracleContent, OracleSet, OracleTable, OracleTableDisplay , OracleTableRow, RowNullStub, YamlOracleSet, YamlOracleTable, YamlSimpleTableRow, YamlStub } from "@schema"; import { formatId } from "@utils"; import { inferSetsAttributes } from "@utils/object_transform/inferSetsAttributes.js"; -import _ from "lodash-es"; /** * @internal diff --git a/dataforged-tools/src/builders/oracles/OracleTableRefBuilder.ts b/dataforged-tools/src/builders/oracles/OracleTableRefBuilder.ts index 3ae48bb43..de95edbf6 100644 --- a/dataforged-tools/src/builders/oracles/OracleTableRefBuilder.ts +++ b/dataforged-tools/src/builders/oracles/OracleTableRefBuilder.ts @@ -1,5 +1,5 @@ import type { OracleTableBuilder } from "@builders"; -import type { OracleTable } from "@schema_json"; +import type { OracleTable } from "@schema"; /** * @internal diff --git a/dataforged-tools/src/builders/oracles/OracleUsageBuilder.ts b/dataforged-tools/src/builders/oracles/OracleUsageBuilder.ts index 7cb1a3170..1f96c1545 100644 --- a/dataforged-tools/src/builders/oracles/OracleUsageBuilder.ts +++ b/dataforged-tools/src/builders/oracles/OracleUsageBuilder.ts @@ -1,6 +1,5 @@ -import { RequirementsBuilder , SuggestionsBuilder } from "@builders"; -import type { AttributeChoices, OracleUsage, Requirements, Suggestions } from "@schema_json"; -import type { YamlOracleUsage } from "@schema_yaml"; +import { RequirementsBuilder, SuggestionsBuilder } from "@builders"; +import type { AttributeChoices , OracleUsage, Requirements, Suggestions, YamlOracleUsage } from "@schema"; /** * @internal diff --git a/dataforged-tools/src/builders/oracles/RowBuilder.ts b/dataforged-tools/src/builders/oracles/RowBuilder.ts index 525957511..fd50a5b47 100644 --- a/dataforged-tools/src/builders/oracles/RowBuilder.ts +++ b/dataforged-tools/src/builders/oracles/RowBuilder.ts @@ -1,8 +1,7 @@ /* eslint-disable no-console */ -import { AttributeSetterBuilder, GameObjectBuilder , MultipleRollsBuilder, OracleContentBuilder, RollTemplateBuilder, SuggestionsBuilder } from "@builders"; +import { AttributeSetterBuilder, GameObjectBuilder, MultipleRollsBuilder, OracleContentBuilder, RollTemplateBuilder, SuggestionsBuilder } from "@builders"; import type { GameObjectRecord } from "@game_objects/GameObjectRecord.js"; -import type { Display, GameObject, ImageUrl, MultipleRolls, OracleContent, OracleTable, OracleTableRow, Raster, RollTemplate, RowNullStub, Suggestions, Vector } from "@schema_json"; -import type { YamlSimpleTableRow, YamlStub, YamlSuggestions, YamlTruthOption } from "@schema_yaml"; +import type { Display, GameObject, ImageUrl, MultipleRolls , OracleContent, OracleTable, OracleTableRow, Raster, RollTemplate, RowNullStub, Suggestions, Vector, YamlSimpleTableRow, YamlStub, YamlSuggestions, YamlTruthOption } from "@schema"; import { badJsonError } from "@utils/logging/badJsonError.js"; import type { AttributeHash } from "@utils/types/AttributeHash.js"; import _ from "lodash-es"; diff --git a/dataforged-tools/src/builders/oracles/TableColumnBuilder.ts b/dataforged-tools/src/builders/oracles/TableColumnBuilder.ts index 72b95419a..243b320a9 100644 --- a/dataforged-tools/src/builders/oracles/TableColumnBuilder.ts +++ b/dataforged-tools/src/builders/oracles/TableColumnBuilder.ts @@ -1,5 +1,5 @@ -import { TableColumnType } from "@schema_json"; -import type { OracleTable, TableColumnRoll, TableColumnText } from "@schema_json"; +import { TableColumnType } from "@schema"; +import type { OracleTable, TableColumnRoll, TableColumnText } from "@schema"; /** * @internal diff --git a/dataforged-tools/src/builders/rarities/DelveRarityBuilder.ts b/dataforged-tools/src/builders/rarities/DelveRarityBuilder.ts index 1ec6ff351..f1e3110f7 100644 --- a/dataforged-tools/src/builders/rarities/DelveRarityBuilder.ts +++ b/dataforged-tools/src/builders/rarities/DelveRarityBuilder.ts @@ -1,6 +1,5 @@ -import { DisplayBuilder , SourceBuilder , TitleBuilder } from "@builders"; -import type { Asset , DelveRarity, Display, Source, Title } from "@schema_json"; -import type { YamlDelveRarity } from "@schema_yaml"; +import { DisplayBuilder, SourceBuilder, TitleBuilder } from "@builders"; +import type { Asset , DelveRarity, Display, Source, Title, YamlDelveRarity } from "@schema"; import { formatId } from "@utils"; /** diff --git a/dataforged-tools/src/builders/truths/TruthBuilder.ts b/dataforged-tools/src/builders/truths/TruthBuilder.ts index 9a149c8c0..5da6ef572 100644 --- a/dataforged-tools/src/builders/truths/TruthBuilder.ts +++ b/dataforged-tools/src/builders/truths/TruthBuilder.ts @@ -1,6 +1,5 @@ -import { DisplayBuilder , SourceBuilder, SuggestionsBuilder , TitleBuilder , TruthOptionBuilder } from "@builders"; -import type { Display, Gamespace , Source, Suggestions, Title, Truth, TruthOption } from "@schema_json"; -import type { YamlTruth } from "@schema_yaml"; +import { DisplayBuilder, SourceBuilder, SuggestionsBuilder, TitleBuilder, TruthOptionBuilder } from "@builders"; +import type { Display, Game, Source, Suggestions, Title, Truth, TruthOption , YamlTruth } from "@schema"; import { formatId } from "@utils"; import { buildLog } from "@utils/logging/buildLog.js"; @@ -15,7 +14,7 @@ export class TruthBuilder implements Truth { Suggestions?: Suggestions | undefined; Display: Display; Source: Source; - constructor(json: YamlTruth, sourceJson: Source, gamespace: Gamespace) { + constructor(json: YamlTruth, sourceJson: Source, gamespace: Game) { const fragment = json._idFragment ?? json.Title.Canonical; this.$id = formatId(fragment, gamespace, "Setting_Truths"); buildLog(this.constructor,`Building: ${this.$id}`); diff --git a/dataforged-tools/src/builders/truths/TruthClassicBuilder.ts b/dataforged-tools/src/builders/truths/TruthClassicBuilder.ts index 1b96f4715..0c11dc794 100644 --- a/dataforged-tools/src/builders/truths/TruthClassicBuilder.ts +++ b/dataforged-tools/src/builders/truths/TruthClassicBuilder.ts @@ -1,6 +1,5 @@ -import { SourceBuilder , TitleBuilder, TruthOptionClassicBuilder } from "@builders"; -import type { Source, Title, TruthClassic, TruthOptionClassic } from "@schema_json"; -import type { YamlTruthClassic } from "@schema_yaml"; +import { SourceBuilder, TitleBuilder, TruthOptionClassicBuilder } from "@builders"; +import type { Source , Title, TruthClassic, TruthOptionClassic, YamlTruthClassic } from "@schema"; import { formatId } from "@utils"; /** diff --git a/dataforged-tools/src/builders/truths/TruthOptionBuilder.ts b/dataforged-tools/src/builders/truths/TruthOptionBuilder.ts index dd2cbd194..afd60c2e2 100644 --- a/dataforged-tools/src/builders/truths/TruthOptionBuilder.ts +++ b/dataforged-tools/src/builders/truths/TruthOptionBuilder.ts @@ -1,6 +1,5 @@ import { OracleTableRowBuilder } from "@builders"; -import type { TruthOption, TruthOptionSubtableRow } from "@schema_json"; -import type { YamlTruthOption } from "@schema_yaml"; +import type { TruthOption , TruthOptionSubtableRow, YamlTruthOption } from "@schema"; /** * @internal diff --git a/dataforged-tools/src/builders/truths/TruthOptionClassicBuilder.ts b/dataforged-tools/src/builders/truths/TruthOptionClassicBuilder.ts index deeaa284a..2b41b7f00 100644 --- a/dataforged-tools/src/builders/truths/TruthOptionClassicBuilder.ts +++ b/dataforged-tools/src/builders/truths/TruthOptionClassicBuilder.ts @@ -1,5 +1,4 @@ -import type { TruthClassic, TruthOptionClassic } from "@schema_json"; -import type { YamlTruthOptionClassic } from "@schema_yaml"; +import type { TruthClassic, TruthOptionClassic , YamlTruthOptionClassic } from "@schema"; /** * @internal diff --git a/dataforged-tools/src/constants/index.ts b/dataforged-tools/src/constants/index.ts index 8aa4f031c..cf9fd194b 100644 --- a/dataforged-tools/src/constants/index.ts +++ b/dataforged-tools/src/constants/index.ts @@ -9,6 +9,11 @@ export const MASTER_DATA_PATH = "../_master-data"; */ export const REFS_PATH = MASTER_DATA_PATH + "/_refs"; +/** + * @internal + */ +export const TEMPLATES_PATH = MASTER_DATA_PATH + "/_refs/templates"; + /** * @internal */ diff --git a/dataforged-tools/src/game-data.ts b/dataforged-tools/src/game-data.ts new file mode 100644 index 000000000..069bd4e83 --- /dev/null +++ b/dataforged-tools/src/game-data.ts @@ -0,0 +1,15 @@ +/* eslint-disable no-restricted-imports */ +import type { Ironsworn, Starforged } from "@schema"; +import IS from "./json/ironsworn/datasworn.json" assert {type: "json"}; +import SF from "./json/starforged/dataforged.json" assert {type: "json"}; + +/** + * @public + */ +const starforged = SF as unknown as Starforged; +/** + * @public + */ +const ironsworn = IS as unknown as Ironsworn; + +export { starforged, ironsworn }; \ No newline at end of file diff --git a/dataforged-tools/src/game_objects/ActorRecord.ts b/dataforged-tools/src/game_objects/ActorRecord.ts index 973598e06..7012b5c6d 100644 --- a/dataforged-tools/src/game_objects/ActorRecord.ts +++ b/dataforged-tools/src/game_objects/ActorRecord.ts @@ -1,5 +1,5 @@ import type { GameObjectRecordBase } from "@game_objects"; -import type { AttributeKey, GameObjectType } from "@schema_json"; +import type { AttributeKey, GameObjectType } from "@schema"; /** * @internal */ diff --git a/dataforged-tools/src/game_objects/CharacterRecord.ts b/dataforged-tools/src/game_objects/CharacterRecord.ts index 5486dc3b5..442a3986e 100644 --- a/dataforged-tools/src/game_objects/CharacterRecord.ts +++ b/dataforged-tools/src/game_objects/CharacterRecord.ts @@ -1,5 +1,5 @@ import type { ActorRecord } from "@game_objects"; -import type { AttributeKey, GameObjectType } from "@schema_json"; +import type { AttributeKey, GameObjectType } from "@schema"; /** * @internal diff --git a/dataforged-tools/src/game_objects/CreatureRecord.ts b/dataforged-tools/src/game_objects/CreatureRecord.ts index 1c664c70c..9f302ad53 100644 --- a/dataforged-tools/src/game_objects/CreatureRecord.ts +++ b/dataforged-tools/src/game_objects/CreatureRecord.ts @@ -1,5 +1,5 @@ -import type { ActorRecord , GameObjectType } from "@game_objects"; -import type { AttributeKey } from "@schema_json"; +import type { ActorRecord, GameObjectType } from "@game_objects"; +import type { AttributeKey } from "@schema"; /** * @internal */ diff --git a/dataforged-tools/src/game_objects/DerelictRecord.ts b/dataforged-tools/src/game_objects/DerelictRecord.ts index 82b8a8c18..6ddcbb10d 100644 --- a/dataforged-tools/src/game_objects/DerelictRecord.ts +++ b/dataforged-tools/src/game_objects/DerelictRecord.ts @@ -1,6 +1,6 @@ import type { PlaceRecord, SettlementInitialContact, SettlementRecord, StarshipInitialContact } from "@game_objects"; import type { StarshipRecord } from "@game_objects/StarshipRecord.js"; -import type { AttributeKey, DerelictType, GameObjectType } from "@schema_json"; +import type { AttributeKey, DerelictType, GameObjectType } from "@schema"; /** * @internal diff --git a/dataforged-tools/src/game_objects/DerelictZoneRecord.ts b/dataforged-tools/src/game_objects/DerelictZoneRecord.ts index 38b3040ec..6f8dc063c 100644 --- a/dataforged-tools/src/game_objects/DerelictZoneRecord.ts +++ b/dataforged-tools/src/game_objects/DerelictZoneRecord.ts @@ -1,5 +1,5 @@ import type { GameObjectType, PlaceRecord } from "@game_objects"; -import type { AttributeKey } from "@schema_json"; +import type { AttributeKey } from "@schema"; /** * @internal */ diff --git a/dataforged-tools/src/game_objects/FactionRecord.ts b/dataforged-tools/src/game_objects/FactionRecord.ts index a35aa3598..391dbea18 100644 --- a/dataforged-tools/src/game_objects/FactionRecord.ts +++ b/dataforged-tools/src/game_objects/FactionRecord.ts @@ -1,5 +1,5 @@ -import type { ActorRecord, FactionType , GameObjectType } from "@game_objects"; -import type { AttributeKey } from "@schema_json"; +import type { ActorRecord, FactionType, GameObjectType } from "@game_objects"; +import type { AttributeKey } from "@schema"; /** * @internal */ diff --git a/dataforged-tools/src/game_objects/GameObjectRecordBase.ts b/dataforged-tools/src/game_objects/GameObjectRecordBase.ts index 4c6751113..bfa9f884e 100644 --- a/dataforged-tools/src/game_objects/GameObjectRecordBase.ts +++ b/dataforged-tools/src/game_objects/GameObjectRecordBase.ts @@ -1,5 +1,5 @@ +import type { AttributeKey, GameObjectType } from "@schema"; import type { AttributeHash } from "@utils"; -import type { AttributeKey, GameObjectType } from "@schema_json"; /** * @internal diff --git a/dataforged-tools/src/game_objects/PlaceRecord.ts b/dataforged-tools/src/game_objects/PlaceRecord.ts index 86ca9b024..1d6aff366 100644 --- a/dataforged-tools/src/game_objects/PlaceRecord.ts +++ b/dataforged-tools/src/game_objects/PlaceRecord.ts @@ -1,5 +1,5 @@ import type { GameObjectRecordBase, GameObjectType } from "@game_objects"; -import type { AttributeKey } from "@schema_json"; +import type { AttributeKey } from "@schema"; /** * @internal diff --git a/dataforged-tools/src/game_objects/PlanetRecord.ts b/dataforged-tools/src/game_objects/PlanetRecord.ts index b3b7ab5eb..b06ee361d 100644 --- a/dataforged-tools/src/game_objects/PlanetRecord.ts +++ b/dataforged-tools/src/game_objects/PlanetRecord.ts @@ -1,5 +1,5 @@ import type { PlaceRecord } from "@game_objects"; -import type { AttributeKey, GameObjectType } from "@schema_json"; +import type { AttributeKey, GameObjectType } from "@schema"; /** * @internal diff --git a/dataforged-tools/src/game_objects/PrecursorVaultRecord.ts b/dataforged-tools/src/game_objects/PrecursorVaultRecord.ts index 8483b7d3b..beec7ec39 100644 --- a/dataforged-tools/src/game_objects/PrecursorVaultRecord.ts +++ b/dataforged-tools/src/game_objects/PrecursorVaultRecord.ts @@ -1,5 +1,5 @@ import type { PlaceRecord } from "@game_objects"; -import type { GameObjectType } from "@schema_json"; +import type { GameObjectType } from "@schema"; /** * @internal */ diff --git a/dataforged-tools/src/game_objects/SettlementRecord.ts b/dataforged-tools/src/game_objects/SettlementRecord.ts index bb99e897f..18d3e2a92 100644 --- a/dataforged-tools/src/game_objects/SettlementRecord.ts +++ b/dataforged-tools/src/game_objects/SettlementRecord.ts @@ -1,5 +1,5 @@ import type { GameObjectType, PlaceRecord } from "@game_objects"; -import type { AttributeKey, SettlementInitialContact } from "@schema_json"; +import type { AttributeKey, SettlementInitialContact } from "@schema"; /** * @internal diff --git a/dataforged-tools/src/game_objects/StarshipRecord.ts b/dataforged-tools/src/game_objects/StarshipRecord.ts index a46023ed9..e52c648c7 100644 --- a/dataforged-tools/src/game_objects/StarshipRecord.ts +++ b/dataforged-tools/src/game_objects/StarshipRecord.ts @@ -1,5 +1,5 @@ import type { GameObjectType, PlaceRecord, StarshipInitialContact } from "@game_objects"; -import type { AttributeKey } from "@schema_json"; +import type { AttributeKey } from "@schema"; /** * @internal */ diff --git a/dataforged-tools/src/index.ts b/dataforged-tools/src/index.ts index 769bd3c97..e42994ea4 100644 --- a/dataforged-tools/src/index.ts +++ b/dataforged-tools/src/index.ts @@ -1,23 +1,6 @@ -/* eslint-disable no-restricted-imports */ -// export * from "@utils/index.js"; -export * from "@schema_json"; -export * from "@schema_yaml"; +export * from "@schema"; export * from "@builders"; export * from "@constants"; -export * from "@game_objects"; export * from "@utils"; -import type { Ironsworn, Starforged } from "@schema_json/GameData.js"; - -import IS from "./json/ironsworn/datasworn.json" assert {type: "json"}; -import SF from "./json/starforged/dataforged.json" assert {type: "json"}; - -/** - * @public - */ -const starforged = SF as unknown as Starforged; -/** - * @public - */ -const ironsworn = IS as unknown as Ironsworn; - -export { starforged, ironsworn }; \ No newline at end of file +// eslint-disable-next-line no-restricted-imports +export { starforged, ironsworn } from "./game-data.js"; \ No newline at end of file diff --git a/dataforged-tools/src/localization/extractLocaleStrings.ts b/dataforged-tools/src/localization/extractLocaleStrings.ts index 9a4aa7f53..2b8e14df9 100644 --- a/dataforged-tools/src/localization/extractLocaleStrings.ts +++ b/dataforged-tools/src/localization/extractLocaleStrings.ts @@ -1,5 +1,5 @@ /* eslint-disable no-restricted-imports */ -import type { HasId } from "@schema_json"; +import type { HasId } from "@schema"; import yaml from "js-yaml"; import { JSONPath } from "jsonpath-plus"; import _ from "lodash-es"; diff --git a/dataforged-tools/src/schema/index.ts b/dataforged-tools/src/schema/index.ts new file mode 100644 index 000000000..1fa47827d --- /dev/null +++ b/dataforged-tools/src/schema/index.ts @@ -0,0 +1,2 @@ +export * from "@schema/json"; +export * from "@schema/yaml"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_json/GameData.ts b/dataforged-tools/src/schema/json/GameData.ts similarity index 89% rename from dataforged-tools/src/schema_json/GameData.ts rename to dataforged-tools/src/schema/json/GameData.ts index a8a3a898c..f413aec19 100644 --- a/dataforged-tools/src/schema_json/GameData.ts +++ b/dataforged-tools/src/schema/json/GameData.ts @@ -1,4 +1,4 @@ -import type { AssetType, DelveDomain, DelveRarity, DelveTheme, EncounterNatureClassicInfo, EncounterStarforged , IronlandsRegion, MoveCategory, OracleSet, TruthClassic, Truth } from "@schema_json"; +import type { AssetType, DelveDomain, DelveRarity, DelveTheme, EncounterNatureClassicInfo, EncounterStarforged, IronlandsRegion, MoveCategory, OracleSet, Truth, TruthClassic } from "@schema"; /** * Base interface for *Ironsworn* and *Ironsworn: Starforged* game data. diff --git a/dataforged-tools/src/schema_json/assets/AlterMomentum.ts b/dataforged-tools/src/schema/json/assets/AlterMomentum.ts similarity index 94% rename from dataforged-tools/src/schema_json/assets/AlterMomentum.ts rename to dataforged-tools/src/schema/json/assets/AlterMomentum.ts index 64c53ea95..be2f32a46 100644 --- a/dataforged-tools/src/schema_json/assets/AlterMomentum.ts +++ b/dataforged-tools/src/schema/json/assets/AlterMomentum.ts @@ -1,4 +1,4 @@ -import type { HasId, HasText } from "@schema_json"; +import type { HasId, HasText } from "@schema"; /** * @public diff --git a/dataforged-tools/src/schema_json/assets/AlterMove.ts b/dataforged-tools/src/schema/json/assets/AlterMove.ts similarity index 93% rename from dataforged-tools/src/schema_json/assets/AlterMove.ts rename to dataforged-tools/src/schema/json/assets/AlterMove.ts index b87d9a40f..343c3b259 100644 --- a/dataforged-tools/src/schema_json/assets/AlterMove.ts +++ b/dataforged-tools/src/schema/json/assets/AlterMove.ts @@ -1,4 +1,4 @@ -import type { Move , MoveOutcome , Outcomes , MoveTrigger, OutcomeMiss, OutcomeStrongHit, OutcomeWeakHit } from "@schema_json"; +import type { Move, MoveOutcome, MoveTrigger, OutcomeMiss, Outcomes, OutcomeStrongHit, OutcomeWeakHit } from "@schema"; import type { PartialDeep, StubExcept } from "@utils"; /** diff --git a/dataforged-tools/src/schema_json/assets/Asset.ts b/dataforged-tools/src/schema/json/assets/Asset.ts similarity index 87% rename from dataforged-tools/src/schema_json/assets/Asset.ts rename to dataforged-tools/src/schema/json/assets/Asset.ts index b78977f1b..ddf71c0e7 100644 --- a/dataforged-tools/src/schema_json/assets/Asset.ts +++ b/dataforged-tools/src/schema/json/assets/Asset.ts @@ -1,4 +1,4 @@ -import type { AssetAbility , AssetAttachment , AssetState , AssetType , AssetUsage,ConditionMeter, Display, HasAliases, HasDisplay, HasId, HasSource, HasTitle, InputClock, InputNumber, InputSelect , InputText } from "@schema_json"; +import type { AssetAbility, AssetAttachment, AssetState, AssetType, AssetUsage,ConditionMeter, Display, HasAliases, HasDisplay, HasId, HasSource, HasTitle, InputClock, InputNumber, InputSelect, InputText } from "@schema"; /** * An interface representing an *Ironsworn: Starforged* asset card. diff --git a/dataforged-tools/src/schema_json/assets/AssetAbility.ts b/dataforged-tools/src/schema/json/assets/AssetAbility.ts similarity index 89% rename from dataforged-tools/src/schema_json/assets/AssetAbility.ts rename to dataforged-tools/src/schema/json/assets/AssetAbility.ts index 6bf51eacd..3fc237a68 100644 --- a/dataforged-tools/src/schema_json/assets/AssetAbility.ts +++ b/dataforged-tools/src/schema/json/assets/AssetAbility.ts @@ -1,4 +1,4 @@ -import type { AlterMomentum , AlterMove , AssetAlterProperties, HasId, HasLabel, HasText, InputClock, InputNumber, InputSelect, InputText, Move } from "@schema_json"; +import type { AlterMomentum, AlterMove, AssetAlterProperties, HasId, HasLabel, HasText, InputClock, InputNumber, InputSelect, InputText, Move } from "@schema"; /** * Represents one of an asset's three abilities. diff --git a/dataforged-tools/src/schema_json/assets/AssetAlterProperties.ts b/dataforged-tools/src/schema/json/assets/AssetAlterProperties.ts similarity index 87% rename from dataforged-tools/src/schema_json/assets/AssetAlterProperties.ts rename to dataforged-tools/src/schema/json/assets/AssetAlterProperties.ts index 69d174642..bcdd2c969 100644 --- a/dataforged-tools/src/schema_json/assets/AssetAlterProperties.ts +++ b/dataforged-tools/src/schema/json/assets/AssetAlterProperties.ts @@ -1,5 +1,4 @@ -import type { Asset, AssetAbility, AssetAttachment, AssetState, ConditionMeter, HasId } from "@schema_json"; -import type { OmitMetadataDeep } from "@schema_yaml"; +import type { Asset , AssetAbility, AssetAttachment, AssetState, ConditionMeter, HasId, OmitMetadataDeep } from "@schema"; import type { PartialDeep } from "@utils"; /** diff --git a/dataforged-tools/src/schema_json/assets/AssetAttachment.ts b/dataforged-tools/src/schema/json/assets/AssetAttachment.ts similarity index 92% rename from dataforged-tools/src/schema_json/assets/AssetAttachment.ts rename to dataforged-tools/src/schema/json/assets/AssetAttachment.ts index c4aa7a569..fdd3d3b38 100644 --- a/dataforged-tools/src/schema_json/assets/AssetAttachment.ts +++ b/dataforged-tools/src/schema/json/assets/AssetAttachment.ts @@ -1,4 +1,4 @@ -import type { AssetType } from "@schema_json"; +import type { AssetType } from "@schema"; /** * Details which assets are valid attachments. The most prominent example in *Ironsworn: Starforged* is the STARSHIP asset (`Starship/Assets/Command_Vehicle/Starship`); Rover (`Starship/Assets/Support_Vehicle/Rover`) also has an elective ability that adds this property. diff --git a/dataforged-tools/src/schema_json/assets/AssetState.ts b/dataforged-tools/src/schema/json/assets/AssetState.ts similarity index 96% rename from dataforged-tools/src/schema_json/assets/AssetState.ts rename to dataforged-tools/src/schema/json/assets/AssetState.ts index 922e896a6..3a2f8b388 100644 --- a/dataforged-tools/src/schema_json/assets/AssetState.ts +++ b/dataforged-tools/src/schema/json/assets/AssetState.ts @@ -1,4 +1,4 @@ -import type { HasLabel } from "@schema_json"; +import type { HasLabel } from "@schema"; /** * Describes a possible state for an asset, like the "broken" status for certain assets (mainly Modules in *Starforged*). diff --git a/dataforged-tools/src/schema_json/assets/AssetType.ts b/dataforged-tools/src/schema/json/assets/AssetType.ts similarity index 83% rename from dataforged-tools/src/schema_json/assets/AssetType.ts rename to dataforged-tools/src/schema/json/assets/AssetType.ts index e74538a12..a9744ef69 100644 --- a/dataforged-tools/src/schema_json/assets/AssetType.ts +++ b/dataforged-tools/src/schema/json/assets/AssetType.ts @@ -1,4 +1,4 @@ -import type { Asset , AssetUsage , Display, HasAliases, HasDescription, HasDisplay, HasId , HasSource, HasTitle, Title } from "@schema_json"; +import type { Asset, AssetUsage, Display, HasAliases, HasDescription, HasDisplay, HasId, HasSource, HasTitle, Title } from "@schema"; export * from "@utils/types/RequireKey.js"; diff --git a/dataforged-tools/src/schema_json/assets/AssetTypeName.ts b/dataforged-tools/src/schema/json/assets/AssetTypeName.ts similarity index 100% rename from dataforged-tools/src/schema_json/assets/AssetTypeName.ts rename to dataforged-tools/src/schema/json/assets/AssetTypeName.ts diff --git a/dataforged-tools/src/schema_json/assets/AssetUsage.ts b/dataforged-tools/src/schema/json/assets/AssetUsage.ts similarity index 100% rename from dataforged-tools/src/schema_json/assets/AssetUsage.ts rename to dataforged-tools/src/schema/json/assets/AssetUsage.ts diff --git a/dataforged-tools/src/schema_json/assets/Input.ts b/dataforged-tools/src/schema/json/assets/Input.ts similarity index 96% rename from dataforged-tools/src/schema_json/assets/Input.ts rename to dataforged-tools/src/schema/json/assets/Input.ts index 8a6387af1..6960184e3 100644 --- a/dataforged-tools/src/schema_json/assets/Input.ts +++ b/dataforged-tools/src/schema/json/assets/Input.ts @@ -1,4 +1,4 @@ -import type { ClockSegments , ClockType, HasId , HasLabel, InputType } from "@schema_json"; +import type { ClockSegments, ClockType, HasId, HasLabel, InputType } from "@schema"; /** * A stub interface representing an input widget of any type. diff --git a/dataforged-tools/src/schema_json/assets/InputSelect.ts b/dataforged-tools/src/schema/json/assets/InputSelect.ts similarity index 96% rename from dataforged-tools/src/schema_json/assets/InputSelect.ts rename to dataforged-tools/src/schema/json/assets/InputSelect.ts index 44e315911..aa6be36f5 100644 --- a/dataforged-tools/src/schema_json/assets/InputSelect.ts +++ b/dataforged-tools/src/schema/json/assets/InputSelect.ts @@ -1,5 +1,5 @@ -import type { Input , InputSelectOption, InputType } from "@schema_json"; +import type { Input, InputSelectOption, InputType } from "@schema"; /** * An input where the user selects a single option from a list of pre-set options. * Suggested rendering: a drop-down selection menu. diff --git a/dataforged-tools/src/schema_json/assets/InputSelectOption.ts b/dataforged-tools/src/schema/json/assets/InputSelectOption.ts similarity index 92% rename from dataforged-tools/src/schema_json/assets/InputSelectOption.ts rename to dataforged-tools/src/schema/json/assets/InputSelectOption.ts index de62eb054..e83312605 100644 --- a/dataforged-tools/src/schema_json/assets/InputSelectOption.ts +++ b/dataforged-tools/src/schema/json/assets/InputSelectOption.ts @@ -1,4 +1,4 @@ -import type { HasId , HasLabel, InputSelectAttributeDefinition, InputSelectOptionType, PlayerConditionMeter, Stat } from "@schema_json"; +import type { HasId, HasLabel, InputSelectAttributeDefinition, InputSelectOptionType, PlayerConditionMeter, Stat } from "@schema"; /** * Represents an option in an {@link InputSelect}. diff --git a/dataforged-tools/src/schema/json/assets/index.ts b/dataforged-tools/src/schema/json/assets/index.ts new file mode 100644 index 000000000..79585ca4d --- /dev/null +++ b/dataforged-tools/src/schema/json/assets/index.ts @@ -0,0 +1,18 @@ +/** + * Types describing asset cards in *Ironsworn* and *Ironsworn: Starforged*. + * @module Json.Assets + */ + +export * from "@schema/json/assets/AssetTypeName.js"; +export * from "@schema/json/assets/AlterMove.js"; +export * from "@schema/json/assets/Asset.js"; +export * from "@schema/json/assets/AssetAbility.js"; +export * from "@schema/json/assets/AssetAttachment.js"; +export * from "@schema/json/assets/AssetType.js"; +export * from "@schema/json/assets/Input.js"; +export * from "@schema/json/assets/InputSelect.js"; +export * from "@schema/json/assets/InputSelectOption.js"; +export * from "@schema/json/assets/AlterMomentum.js"; +export * from "@schema/json/assets/AssetState.js"; +export * from "@schema/json/assets/AssetAlterProperties.js"; +export * from "@schema/json/assets/AssetUsage.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_json/common/ChallengeRank.ts b/dataforged-tools/src/schema/json/common/ChallengeRank.ts similarity index 100% rename from dataforged-tools/src/schema_json/common/ChallengeRank.ts rename to dataforged-tools/src/schema/json/common/ChallengeRank.ts diff --git a/dataforged-tools/src/schema_json/common/ClockSegments.ts b/dataforged-tools/src/schema/json/common/ClockSegments.ts similarity index 100% rename from dataforged-tools/src/schema_json/common/ClockSegments.ts rename to dataforged-tools/src/schema/json/common/ClockSegments.ts diff --git a/dataforged-tools/src/schema_json/common/ClockType.ts b/dataforged-tools/src/schema/json/common/ClockType.ts similarity index 100% rename from dataforged-tools/src/schema_json/common/ClockType.ts rename to dataforged-tools/src/schema/json/common/ClockType.ts diff --git a/dataforged-tools/src/schema_json/common/ConditionMeter.ts b/dataforged-tools/src/schema/json/common/ConditionMeter.ts similarity index 92% rename from dataforged-tools/src/schema_json/common/ConditionMeter.ts rename to dataforged-tools/src/schema/json/common/ConditionMeter.ts index 0c02c0c71..25d765769 100644 --- a/dataforged-tools/src/schema_json/common/ConditionMeter.ts +++ b/dataforged-tools/src/schema/json/common/ConditionMeter.ts @@ -1,4 +1,4 @@ -import type { Meter, MeterAlias, MeterCondition } from "@schema_json"; +import type { Meter, MeterAlias, MeterCondition } from "@schema"; /** * Standard player character condition meters. diff --git a/dataforged-tools/src/schema_json/common/CustomStat.ts b/dataforged-tools/src/schema/json/common/CustomStat.ts similarity index 78% rename from dataforged-tools/src/schema_json/common/CustomStat.ts rename to dataforged-tools/src/schema/json/common/CustomStat.ts index ff533b2e3..6e233b3d6 100644 --- a/dataforged-tools/src/schema_json/common/CustomStat.ts +++ b/dataforged-tools/src/schema/json/common/CustomStat.ts @@ -1,4 +1,4 @@ -import type { CustomStatOption , HasId, HasLabel } from "@schema_json"; +import type { CustomStatOption, HasId, HasLabel } from "@schema"; /** * @public diff --git a/dataforged-tools/src/schema_json/common/CustomStatOption.ts b/dataforged-tools/src/schema/json/common/CustomStatOption.ts similarity index 87% rename from dataforged-tools/src/schema_json/common/CustomStatOption.ts rename to dataforged-tools/src/schema/json/common/CustomStatOption.ts index 0b004eb3d..bd9d6bb0f 100644 --- a/dataforged-tools/src/schema_json/common/CustomStatOption.ts +++ b/dataforged-tools/src/schema/json/common/CustomStatOption.ts @@ -1,4 +1,4 @@ -import type { HasId , HasLabel } from "@schema_json"; +import type { HasId, HasLabel } from "@schema"; /** * @public diff --git a/dataforged-tools/src/schema/json/common/Game.ts b/dataforged-tools/src/schema/json/common/Game.ts new file mode 100644 index 000000000..3066811bb --- /dev/null +++ b/dataforged-tools/src/schema/json/common/Game.ts @@ -0,0 +1,7 @@ +/** + * @public + */ +export enum Game { + Starforged = "Starforged", + Ironsworn = "Ironsworn" +} \ No newline at end of file diff --git a/dataforged-tools/src/schema_json/common/InputType.ts b/dataforged-tools/src/schema/json/common/InputType.ts similarity index 100% rename from dataforged-tools/src/schema_json/common/InputType.ts rename to dataforged-tools/src/schema/json/common/InputType.ts diff --git a/dataforged-tools/src/schema_json/common/Meter.ts b/dataforged-tools/src/schema/json/common/Meter.ts similarity index 92% rename from dataforged-tools/src/schema_json/common/Meter.ts rename to dataforged-tools/src/schema/json/common/Meter.ts index 66d9a94b4..733f03aaa 100644 --- a/dataforged-tools/src/schema_json/common/Meter.ts +++ b/dataforged-tools/src/schema/json/common/Meter.ts @@ -1,4 +1,4 @@ -import type { HasId, HasLabel } from "@schema_json"; +import type { HasId, HasLabel } from "@schema"; /** * Base interface for properties common to all resource meters. diff --git a/dataforged-tools/src/schema_json/common/MeterAlias.ts b/dataforged-tools/src/schema/json/common/MeterAlias.ts similarity index 100% rename from dataforged-tools/src/schema_json/common/MeterAlias.ts rename to dataforged-tools/src/schema/json/common/MeterAlias.ts diff --git a/dataforged-tools/src/schema_json/common/MeterCondition.ts b/dataforged-tools/src/schema/json/common/MeterCondition.ts similarity index 100% rename from dataforged-tools/src/schema_json/common/MeterCondition.ts rename to dataforged-tools/src/schema/json/common/MeterCondition.ts diff --git a/dataforged-tools/src/schema_json/common/MeterType.ts b/dataforged-tools/src/schema/json/common/MeterType.ts similarity index 100% rename from dataforged-tools/src/schema_json/common/MeterType.ts rename to dataforged-tools/src/schema/json/common/MeterType.ts diff --git a/dataforged-tools/src/schema_json/common/ProgressType.ts b/dataforged-tools/src/schema/json/common/ProgressType.ts similarity index 100% rename from dataforged-tools/src/schema_json/common/ProgressType.ts rename to dataforged-tools/src/schema/json/common/ProgressType.ts diff --git a/dataforged-tools/src/schema_json/common/Replacement.ts b/dataforged-tools/src/schema/json/common/Replacement.ts similarity index 100% rename from dataforged-tools/src/schema_json/common/Replacement.ts rename to dataforged-tools/src/schema/json/common/Replacement.ts diff --git a/dataforged-tools/src/schema_json/common/RollableStat.ts b/dataforged-tools/src/schema/json/common/RollableStat.ts similarity index 70% rename from dataforged-tools/src/schema_json/common/RollableStat.ts rename to dataforged-tools/src/schema/json/common/RollableStat.ts index 340bbd23d..a1f780f73 100644 --- a/dataforged-tools/src/schema_json/common/RollableStat.ts +++ b/dataforged-tools/src/schema/json/common/RollableStat.ts @@ -1,4 +1,4 @@ -import type { ConditionMeter , CustomStat , PlayerConditionMeter, Stat } from "@schema_json"; +import type { ConditionMeter, CustomStat, PlayerConditionMeter, Stat } from "@schema"; /** * Standard player character stats or condition meters that can be used as +stat in an action roll. diff --git a/dataforged-tools/src/schema_json/common/Stat.ts b/dataforged-tools/src/schema/json/common/Stat.ts similarity index 100% rename from dataforged-tools/src/schema_json/common/Stat.ts rename to dataforged-tools/src/schema/json/common/Stat.ts diff --git a/dataforged-tools/src/schema/json/common/index.ts b/dataforged-tools/src/schema/json/common/index.ts new file mode 100644 index 000000000..c1552face --- /dev/null +++ b/dataforged-tools/src/schema/json/common/index.ts @@ -0,0 +1,21 @@ +/** + * Types describing elements common to many *Ironsworn: Starforged* game objects in Dataforged. + * @module Json.Common + */ + +export * from "@schema/json/common/ChallengeRank.js"; +export * from "@schema/json/common/ClockSegments.js"; +export * from "@schema/json/common/ClockType.js"; +export * from "@schema/json/common/Game.js"; +export * from "@schema/json/common/ConditionMeter.js"; +export * from "@schema/json/common/Meter.js"; +export * from "@schema/json/common/CustomStat.js"; +export * from "@schema/json/common/InputType.js"; +export * from "@schema/json/common/MeterAlias.js"; +export * from "@schema/json/common/MeterCondition.js"; +export * from "@schema/json/common/MeterType.js"; +export * from "@schema/json/common/ProgressType.js"; +export * from "@schema/json/common/Replacement.js"; +export * from "@schema/json/common/RollableStat.js"; +export * from "@schema/json/common/Stat.js"; +export * from "@schema/json/common/CustomStatOption.js"; diff --git a/dataforged-tools/src/schema_json/cyclopedia/CyclopediaEntry.ts b/dataforged-tools/src/schema/json/cyclopedia/CyclopediaEntry.ts similarity index 89% rename from dataforged-tools/src/schema_json/cyclopedia/CyclopediaEntry.ts rename to dataforged-tools/src/schema/json/cyclopedia/CyclopediaEntry.ts index 6567a9571..2f1c36319 100644 --- a/dataforged-tools/src/schema_json/cyclopedia/CyclopediaEntry.ts +++ b/dataforged-tools/src/schema/json/cyclopedia/CyclopediaEntry.ts @@ -1,4 +1,4 @@ -import type { HasDescription, HasDisplay, HasId, HasQuestStarter, HasSource, HasSummary, HasTags, HasTitle } from "@schema_json"; +import type { HasDescription, HasDisplay, HasId, HasQuestStarter, HasSource, HasSummary, HasTags, HasTitle } from "@schema"; /** * Basic interface for elements common to "cyclopedia" style pages, such as Regions (*Ironsworn* classic) and Encounters (*Ironsworn* classic and *Starforged*) diff --git a/dataforged-tools/src/schema_json/cyclopedia/Encounter.ts b/dataforged-tools/src/schema/json/cyclopedia/Encounter.ts similarity index 85% rename from dataforged-tools/src/schema_json/cyclopedia/Encounter.ts rename to dataforged-tools/src/schema/json/cyclopedia/Encounter.ts index 6ed77adb3..3fa3e934a 100644 --- a/dataforged-tools/src/schema_json/cyclopedia/Encounter.ts +++ b/dataforged-tools/src/schema/json/cyclopedia/Encounter.ts @@ -1,4 +1,4 @@ -import type { EncounterBase } from "@schema_json"; +import type { EncounterBase } from "@schema"; /** * Represents a full (i.e. not a stub/variant) encounter entry in *Ironsworn* or *Ironsworn: Starforged*. diff --git a/dataforged-tools/src/schema_json/cyclopedia/EncounterBase.ts b/dataforged-tools/src/schema/json/cyclopedia/EncounterBase.ts similarity index 90% rename from dataforged-tools/src/schema_json/cyclopedia/EncounterBase.ts rename to dataforged-tools/src/schema/json/cyclopedia/EncounterBase.ts index 0ed9e58af..5c123cf96 100644 --- a/dataforged-tools/src/schema_json/cyclopedia/EncounterBase.ts +++ b/dataforged-tools/src/schema/json/cyclopedia/EncounterBase.ts @@ -1,4 +1,4 @@ -import type { ChallengeRank , CyclopediaEntry , Display , EncounterNatureClassic, EncounterNatureStarforged, EncounterTags } from "@schema_json"; +import type { ChallengeRank, CyclopediaEntry, Display, EncounterNatureClassic, EncounterNatureStarforged, EncounterTags } from "@schema"; /** * Interface common to Encounter entries in *Ironsworn* and *Ironsworn: Starforged*, plus 'stubs' like EncounterVariant. EncounterVariant. EncounterVariant. diff --git a/dataforged-tools/src/schema_json/cyclopedia/EncounterIronsworn.ts b/dataforged-tools/src/schema/json/cyclopedia/EncounterIronsworn.ts similarity index 81% rename from dataforged-tools/src/schema_json/cyclopedia/EncounterIronsworn.ts rename to dataforged-tools/src/schema/json/cyclopedia/EncounterIronsworn.ts index c2fd25648..64d5d7a2c 100644 --- a/dataforged-tools/src/schema_json/cyclopedia/EncounterIronsworn.ts +++ b/dataforged-tools/src/schema/json/cyclopedia/EncounterIronsworn.ts @@ -1,4 +1,4 @@ -import type { Encounter , EncounterNatureClassic } from "@schema_json"; +import type { Encounter, EncounterNatureClassic } from "@schema"; /** * Represents an *Ironsworn* Encounter entry. diff --git a/dataforged-tools/src/schema_json/cyclopedia/EncounterNature.ts b/dataforged-tools/src/schema/json/cyclopedia/EncounterNature.ts similarity index 100% rename from dataforged-tools/src/schema_json/cyclopedia/EncounterNature.ts rename to dataforged-tools/src/schema/json/cyclopedia/EncounterNature.ts diff --git a/dataforged-tools/src/schema_json/cyclopedia/EncounterNatureClassicInfo.ts b/dataforged-tools/src/schema/json/cyclopedia/EncounterNatureClassicInfo.ts similarity index 94% rename from dataforged-tools/src/schema_json/cyclopedia/EncounterNatureClassicInfo.ts rename to dataforged-tools/src/schema/json/cyclopedia/EncounterNatureClassicInfo.ts index cda6b8a62..5fc0829c3 100644 --- a/dataforged-tools/src/schema_json/cyclopedia/EncounterNatureClassicInfo.ts +++ b/dataforged-tools/src/schema/json/cyclopedia/EncounterNatureClassicInfo.ts @@ -1,6 +1,8 @@ -import type { EncounterClassic, EncounterNatureClassic, HasDescription, HasDisplay, HasId, HasSource, HasSummary, HasTitle, Title } from "@schema_json"; - +import type { EncounterClassic, EncounterNatureClassic, HasDescription, HasDisplay, HasId, HasSource, HasSummary, HasTitle, Title } from "@schema"; +/** + * @public + */ export type NatureKey = keyof typeof EncounterNatureClassic; /** diff --git a/dataforged-tools/src/schema_json/cyclopedia/EncounterStarforged.ts b/dataforged-tools/src/schema/json/cyclopedia/EncounterStarforged.ts similarity index 78% rename from dataforged-tools/src/schema_json/cyclopedia/EncounterStarforged.ts rename to dataforged-tools/src/schema/json/cyclopedia/EncounterStarforged.ts index 3afe9abdc..9e3ca04f8 100644 --- a/dataforged-tools/src/schema_json/cyclopedia/EncounterStarforged.ts +++ b/dataforged-tools/src/schema/json/cyclopedia/EncounterStarforged.ts @@ -1,4 +1,4 @@ -import type { Encounter , EncounterNatureStarforged , EncounterVariant } from "@schema_json"; +import type { Encounter, EncounterNatureStarforged, EncounterVariant } from "@schema"; /** * Represents an *Ironsworn: Starforged* Encounter entry. diff --git a/dataforged-tools/src/schema_json/cyclopedia/EncounterTags.ts b/dataforged-tools/src/schema/json/cyclopedia/EncounterTags.ts similarity index 100% rename from dataforged-tools/src/schema_json/cyclopedia/EncounterTags.ts rename to dataforged-tools/src/schema/json/cyclopedia/EncounterTags.ts diff --git a/dataforged-tools/src/schema_json/cyclopedia/EncounterVariant.ts b/dataforged-tools/src/schema/json/cyclopedia/EncounterVariant.ts similarity index 89% rename from dataforged-tools/src/schema_json/cyclopedia/EncounterVariant.ts rename to dataforged-tools/src/schema/json/cyclopedia/EncounterVariant.ts index cf302de06..78eb4f521 100644 --- a/dataforged-tools/src/schema_json/cyclopedia/EncounterVariant.ts +++ b/dataforged-tools/src/schema/json/cyclopedia/EncounterVariant.ts @@ -1,4 +1,4 @@ -import type { EncounterStarforged } from "@schema_json"; +import type { EncounterStarforged } from "@schema"; import type { StubBy } from "@utils/types/Stub.js"; /** diff --git a/dataforged-tools/src/schema_json/cyclopedia/IronlandsRegion.ts b/dataforged-tools/src/schema/json/cyclopedia/IronlandsRegion.ts similarity index 94% rename from dataforged-tools/src/schema_json/cyclopedia/IronlandsRegion.ts rename to dataforged-tools/src/schema/json/cyclopedia/IronlandsRegion.ts index 6f2f7171d..bbab944f1 100644 --- a/dataforged-tools/src/schema_json/cyclopedia/IronlandsRegion.ts +++ b/dataforged-tools/src/schema/json/cyclopedia/IronlandsRegion.ts @@ -1,4 +1,4 @@ -import type { CyclopediaEntry, HasQuestStarter, HasSummary } from "@schema_json"; +import type { CyclopediaEntry, HasQuestStarter, HasSummary } from "@schema"; /** * @public diff --git a/dataforged-tools/src/schema/json/cyclopedia/index.ts b/dataforged-tools/src/schema/json/cyclopedia/index.ts new file mode 100644 index 000000000..41bbb132d --- /dev/null +++ b/dataforged-tools/src/schema/json/cyclopedia/index.ts @@ -0,0 +1,15 @@ +/** + * Types describing "cyclopedia"-style entries, such as Regions (in *Ironsworn*) and Encounters. + * @module Json.Cyclopedia + */ + +export * from "@schema/json/cyclopedia/EncounterNature.js"; +export * from "@schema/json/cyclopedia/EncounterTags.js"; +export * from "@schema/json/cyclopedia/Encounter.js"; +export * from "@schema/json/cyclopedia/EncounterBase.js"; +export * from "@schema/json/cyclopedia/EncounterIronsworn.js"; +export * from "@schema/json/cyclopedia/EncounterNatureClassicInfo.js"; +export * from "@schema/json/cyclopedia/EncounterStarforged.js"; +export * from "@schema/json/cyclopedia/EncounterVariant.js"; +export * from "@schema/json/cyclopedia/CyclopediaEntry.js"; +export * from "@schema/json/cyclopedia/IronlandsRegion.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_json/delve_site/index.ts b/dataforged-tools/src/schema/json/delve_site/index.ts similarity index 98% rename from dataforged-tools/src/schema_json/delve_site/index.ts rename to dataforged-tools/src/schema/json/delve_site/index.ts index f7275e9ed..db0203eee 100644 --- a/dataforged-tools/src/schema_json/delve_site/index.ts +++ b/dataforged-tools/src/schema/json/delve_site/index.ts @@ -1,4 +1,4 @@ -import type { ChallengeRank, EncounterClassic, HasDescription, HasId, HasSource, HasSummary, HasTitle , OracleTableRow } from "@schema_json"; +import type { ChallengeRank, EncounterClassic, HasDescription, HasId, HasSource, HasSummary, HasTitle, OracleTableRow } from "@schema/json"; /** * @public diff --git a/dataforged-tools/src/schema_json/game_objects/Attribute.ts b/dataforged-tools/src/schema/json/game_objects/Attribute.ts similarity index 96% rename from dataforged-tools/src/schema_json/game_objects/Attribute.ts rename to dataforged-tools/src/schema/json/game_objects/Attribute.ts index 7152b59fb..f5e6a5feb 100644 --- a/dataforged-tools/src/schema_json/game_objects/Attribute.ts +++ b/dataforged-tools/src/schema/json/game_objects/Attribute.ts @@ -22,7 +22,7 @@ import type { Atmosphere, SettlementInitialContact, StarshipInitialContact, Zone } from "@game_objects"; -import type { AttributeKey } from "@schema_json"; +import type { AttributeKey } from "@schema"; /** * Describes an attribute key/value pair, set by an oracle row. The key-value pair should be set on any game object for which that row is generated. * diff --git a/dataforged-tools/src/schema_json/game_objects/AttributeChoices.ts b/dataforged-tools/src/schema/json/game_objects/AttributeChoices.ts similarity index 68% rename from dataforged-tools/src/schema_json/game_objects/AttributeChoices.ts rename to dataforged-tools/src/schema/json/game_objects/AttributeChoices.ts index b1229b864..e9bf57a3c 100644 --- a/dataforged-tools/src/schema_json/game_objects/AttributeChoices.ts +++ b/dataforged-tools/src/schema/json/game_objects/AttributeChoices.ts @@ -1,4 +1,4 @@ -import type { AttributeKey } from "@schema_json"; +import type { AttributeKey } from "@schema"; /** * @public */ diff --git a/dataforged-tools/src/schema_json/game_objects/AttributeKey.ts b/dataforged-tools/src/schema/json/game_objects/AttributeKey.ts similarity index 100% rename from dataforged-tools/src/schema_json/game_objects/AttributeKey.ts rename to dataforged-tools/src/schema/json/game_objects/AttributeKey.ts diff --git a/dataforged-tools/src/schema_json/game_objects/AttributeMaster.ts b/dataforged-tools/src/schema/json/game_objects/AttributeMaster.ts similarity index 96% rename from dataforged-tools/src/schema_json/game_objects/AttributeMaster.ts rename to dataforged-tools/src/schema/json/game_objects/AttributeMaster.ts index 07fbefcbb..c991ee53d 100644 --- a/dataforged-tools/src/schema_json/game_objects/AttributeMaster.ts +++ b/dataforged-tools/src/schema/json/game_objects/AttributeMaster.ts @@ -1,6 +1,6 @@ import type { Atmosphere, Behavior, CreatureScale, DerelictType, Disposition, Dominion, Environment, FactionType, FringeGroup, Guild, Influence, Leadership, Life, Location, LocationTheme, PlanetaryClass, Population, Region, Role, SettlementInitialContact, StarshipInitialContact, Zone } from "@game_objects"; import type { Authority } from "@game_objects/enum/Authority.js"; -import type { AttributeKey } from "@schema_json"; +import type { AttributeKey } from "@schema"; /** * @alpha */ diff --git a/dataforged-tools/src/schema_json/game_objects/AttributeValue.ts b/dataforged-tools/src/schema/json/game_objects/AttributeValue.ts similarity index 56% rename from dataforged-tools/src/schema_json/game_objects/AttributeValue.ts rename to dataforged-tools/src/schema/json/game_objects/AttributeValue.ts index 6da8ae512..e8f2846c7 100644 --- a/dataforged-tools/src/schema_json/game_objects/AttributeValue.ts +++ b/dataforged-tools/src/schema/json/game_objects/AttributeValue.ts @@ -1,4 +1,4 @@ -import type { AttributeKey , AttributeMaster } from "@schema_json"; +import type { AttributeKey, AttributeMaster } from "@schema"; /** * @alpha */ diff --git a/dataforged-tools/src/schema_json/game_objects/GameObject.ts b/dataforged-tools/src/schema/json/game_objects/GameObject.ts similarity index 84% rename from dataforged-tools/src/schema_json/game_objects/GameObject.ts rename to dataforged-tools/src/schema/json/game_objects/GameObject.ts index c4c3b30c6..4bfd00b47 100644 --- a/dataforged-tools/src/schema_json/game_objects/GameObject.ts +++ b/dataforged-tools/src/schema/json/game_objects/GameObject.ts @@ -1,5 +1,5 @@ import type { GameObjectType } from "@game_objects"; -import type { Requirements } from "@schema_json"; +import type { Requirements } from "@schema"; /** * Describes a game object, with optional required parameters (for example, a specific Location result). * @public diff --git a/dataforged-tools/src/schema/json/game_objects/index.ts b/dataforged-tools/src/schema/json/game_objects/index.ts new file mode 100644 index 000000000..0d93d2071 --- /dev/null +++ b/dataforged-tools/src/schema/json/game_objects/index.ts @@ -0,0 +1,12 @@ +/** + * @module Json.GameObjects + */ + +export * from "@schema/json/game_objects/AttributeKey.js"; +export * from "@schema/json/game_objects/AttributeValue.js"; +export * from "@schema/json/game_objects/Attribute.js"; +export * from "@schema/json/game_objects/AttributeChoices.js"; +export * from "@schema/json/game_objects/AttributeMaster.js"; +export * from "@schema/json/game_objects/GameObject.js"; + +export * from "@game_objects/enum/index.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema/json/index.ts b/dataforged-tools/src/schema/json/index.ts new file mode 100644 index 000000000..037e9042f --- /dev/null +++ b/dataforged-tools/src/schema/json/index.ts @@ -0,0 +1,16 @@ +/** + * @module Json + */ + +export * from "@schema/json/meta/index.js"; +export * from "@schema/json/common/index.js"; +export * from "@schema/json/game_objects/index.js"; +export * from "@schema/json/oracles/index.js"; +export * from "@schema/json/truths/index.js"; +export * from "@schema/json/cyclopedia/index.js"; +export * from "@schema/json/moves/index.js"; +export * from "@schema/json/assets/index.js"; +export * from "@schema/json/cyclopedia/index.js"; +export * from "@schema/json/delve_site/index.js"; +export * from "@schema/json/GameData.js"; +export * from "@schema/json/rarities/index.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_json/meta/Display.ts b/dataforged-tools/src/schema/json/meta/Display.ts similarity index 100% rename from dataforged-tools/src/schema_json/meta/Display.ts rename to dataforged-tools/src/schema/json/meta/Display.ts diff --git a/dataforged-tools/src/schema_json/meta/Has.ts b/dataforged-tools/src/schema/json/meta/Has.ts similarity index 97% rename from dataforged-tools/src/schema_json/meta/Has.ts rename to dataforged-tools/src/schema/json/meta/Has.ts index 80c0796c7..4083ff426 100644 --- a/dataforged-tools/src/schema_json/meta/Has.ts +++ b/dataforged-tools/src/schema/json/meta/Has.ts @@ -1,4 +1,4 @@ -import type { Display , GameObject, OracleContent, OracleTableRow, Requirements , RollTemplate , Source , Suggestions } from "@schema_json"; +import type { Display, GameObject, OracleContent, OracleTableRow, Requirements, RollTemplate, Source , Suggestions } from "@schema"; /** * Interface for items with a user-facing markdown summary. diff --git a/dataforged-tools/src/schema_json/meta/PartOfSpeechTag.ts b/dataforged-tools/src/schema/json/meta/PartOfSpeechTag.ts similarity index 100% rename from dataforged-tools/src/schema_json/meta/PartOfSpeechTag.ts rename to dataforged-tools/src/schema/json/meta/PartOfSpeechTag.ts diff --git a/dataforged-tools/src/schema_json/meta/Requirements.ts b/dataforged-tools/src/schema/json/meta/Requirements.ts similarity index 81% rename from dataforged-tools/src/schema_json/meta/Requirements.ts rename to dataforged-tools/src/schema/json/meta/Requirements.ts index 4e98b5021..8bc6d4aa8 100644 --- a/dataforged-tools/src/schema_json/meta/Requirements.ts +++ b/dataforged-tools/src/schema/json/meta/Requirements.ts @@ -1,4 +1,4 @@ -import type { AttributeChoices } from "@schema_json"; +import type { AttributeChoices } from "@schema"; /** * Data describing an item's requirements. diff --git a/dataforged-tools/src/schema_json/meta/Source.ts b/dataforged-tools/src/schema/json/meta/Source.ts similarity index 100% rename from dataforged-tools/src/schema_json/meta/Source.ts rename to dataforged-tools/src/schema/json/meta/Source.ts diff --git a/dataforged-tools/src/schema_json/meta/Suggestions.ts b/dataforged-tools/src/schema/json/meta/Suggestions.ts similarity index 93% rename from dataforged-tools/src/schema_json/meta/Suggestions.ts rename to dataforged-tools/src/schema/json/meta/Suggestions.ts index 8ea782888..8f2062310 100644 --- a/dataforged-tools/src/schema_json/meta/Suggestions.ts +++ b/dataforged-tools/src/schema/json/meta/Suggestions.ts @@ -1,4 +1,4 @@ -import type { Asset, DelveDomain, DelveTheme, EncounterClassic, EncounterStarforged , GameObject, IronlandsRegion, Move , OracleTable } from "@schema_json"; +import type { Asset, DelveDomain, DelveTheme, EncounterClassic, EncounterStarforged, GameObject, IronlandsRegion, Move, OracleTable } from "@schema"; /** * Describes "non-canonical" suggestions for game content related to the parent item. diff --git a/dataforged-tools/src/schema_json/meta/Url.ts b/dataforged-tools/src/schema/json/meta/Url.ts similarity index 100% rename from dataforged-tools/src/schema_json/meta/Url.ts rename to dataforged-tools/src/schema/json/meta/Url.ts diff --git a/dataforged-tools/src/schema/json/meta/index.ts b/dataforged-tools/src/schema/json/meta/index.ts new file mode 100644 index 000000000..af966a166 --- /dev/null +++ b/dataforged-tools/src/schema/json/meta/index.ts @@ -0,0 +1,12 @@ +/** + * Types describing metadata common to many items in Dataforged. + * @module Json.Meta + */ + +export * from "@schema/json/meta/Display.js"; +export * from "@schema/json/meta/Has.js"; +export * from "@schema/json/meta/Requirements.js"; +export * from "@schema/json/meta/Source.js"; +export * from "@schema/json/meta/Suggestions.js"; +export * from "@schema/json/meta/PartOfSpeechTag.js"; +export * from "@schema/json/meta/Url.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_json/moves/Move.ts b/dataforged-tools/src/schema/json/moves/Move.ts similarity index 81% rename from dataforged-tools/src/schema_json/moves/Move.ts rename to dataforged-tools/src/schema/json/moves/Move.ts index b9d1e9a14..87aaadf23 100644 --- a/dataforged-tools/src/schema_json/moves/Move.ts +++ b/dataforged-tools/src/schema/json/moves/Move.ts @@ -1,10 +1,10 @@ -import type { Asset , Display, HasDisplay, HasId, HasOptional, HasSource, HasSuggestions , HasText, HasTitle, MoveCategory , Outcomes , MoveTrigger , OracleTable, Title } from "@schema_json"; +import type { Asset, HasDisplay, HasId, HasOptional, HasSource, HasSuggestions, HasText, HasTitle, MoveCategory, MoveTrigger, OracleTable, Outcomes, Title } from "@schema"; /** * Interface representing a Starforged move. * @public */ -export interface Move extends HasId, HasText, HasDisplay, HasSource, HasOptional, HasTitle,Partial { +export interface Move extends HasId, HasText, HasDisplay, HasSource, HasOptional, HasTitle,Partial { /** * @example "Starforged/Moves/Adventure/Face_Danger" * @pattern ^(Starforged|Ironsworn)/Moves/([A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3])/[A-z_-]+$ diff --git a/dataforged-tools/src/schema_json/moves/MoveCategory.ts b/dataforged-tools/src/schema/json/moves/MoveCategory.ts similarity index 88% rename from dataforged-tools/src/schema_json/moves/MoveCategory.ts rename to dataforged-tools/src/schema/json/moves/MoveCategory.ts index 5b5debadd..e376b47ca 100644 --- a/dataforged-tools/src/schema_json/moves/MoveCategory.ts +++ b/dataforged-tools/src/schema/json/moves/MoveCategory.ts @@ -1,4 +1,4 @@ -import type { HasDescription , HasDisplay , HasId, HasOptional, HasSource , HasTitle, Move } from "@schema_json"; +import type { HasDescription, HasDisplay, HasId, HasOptional, HasSource, HasTitle, Move } from "@schema"; /** * "Assets" is also valid, technically, but it's only used in IDs, so it's omitted here. diff --git a/dataforged-tools/src/schema_json/moves/MoveOutcomeInfo.ts b/dataforged-tools/src/schema/json/moves/MoveOutcomeInfo.ts similarity index 98% rename from dataforged-tools/src/schema_json/moves/MoveOutcomeInfo.ts rename to dataforged-tools/src/schema/json/moves/MoveOutcomeInfo.ts index 5fb235b89..e58dc0ca5 100644 --- a/dataforged-tools/src/schema_json/moves/MoveOutcomeInfo.ts +++ b/dataforged-tools/src/schema/json/moves/MoveOutcomeInfo.ts @@ -1,4 +1,4 @@ -import type { HasId, HasText, MoveReroll } from "@schema_json"; +import type { HasId, HasText, MoveReroll } from "@schema"; /** * @public */ diff --git a/dataforged-tools/src/schema_json/moves/MoveReroll.ts b/dataforged-tools/src/schema/json/moves/MoveReroll.ts similarity index 95% rename from dataforged-tools/src/schema_json/moves/MoveReroll.ts rename to dataforged-tools/src/schema/json/moves/MoveReroll.ts index 1666221ae..2af8bc092 100644 --- a/dataforged-tools/src/schema_json/moves/MoveReroll.ts +++ b/dataforged-tools/src/schema/json/moves/MoveReroll.ts @@ -1,4 +1,4 @@ -import type { HasId, HasText } from "@schema_json"; +import type { HasId, HasText } from "@schema"; /** diff --git a/dataforged-tools/src/schema_json/moves/MoveTrigger.ts b/dataforged-tools/src/schema/json/moves/MoveTrigger.ts similarity index 97% rename from dataforged-tools/src/schema_json/moves/MoveTrigger.ts rename to dataforged-tools/src/schema/json/moves/MoveTrigger.ts index ff7821a67..e521e67fe 100644 --- a/dataforged-tools/src/schema_json/moves/MoveTrigger.ts +++ b/dataforged-tools/src/schema/json/moves/MoveTrigger.ts @@ -1,4 +1,4 @@ -import type { HasId, HasText, MoveTriggerOptionAction, MoveTriggerOptionProgress } from "@schema_json"; +import type { HasId, HasText, MoveTriggerOptionAction, MoveTriggerOptionProgress } from "@schema"; /** * Describes the trigger conditions of the move. diff --git a/dataforged-tools/src/schema_json/moves/MoveTriggerOption.ts b/dataforged-tools/src/schema/json/moves/MoveTriggerOption.ts similarity index 88% rename from dataforged-tools/src/schema_json/moves/MoveTriggerOption.ts rename to dataforged-tools/src/schema/json/moves/MoveTriggerOption.ts index 4d6f2f5df..a50cea810 100644 --- a/dataforged-tools/src/schema_json/moves/MoveTriggerOption.ts +++ b/dataforged-tools/src/schema/json/moves/MoveTriggerOption.ts @@ -1,4 +1,4 @@ -import type { CustomStat , HasId , HasText , ProgressTypeIronsworn , ProgressTypeStarforged, RollableStat , RollMethod, RollType } from "@schema_json"; +import type { CustomStat, HasId, HasText, ProgressTypeIronsworn, ProgressTypeStarforged, RollableStat, RollMethod, RollType } from "@schema"; /** * @public diff --git a/dataforged-tools/src/schema_json/moves/Outcomes.ts b/dataforged-tools/src/schema/json/moves/Outcomes.ts similarity index 80% rename from dataforged-tools/src/schema_json/moves/Outcomes.ts rename to dataforged-tools/src/schema/json/moves/Outcomes.ts index ee479968b..d79fb063c 100644 --- a/dataforged-tools/src/schema_json/moves/Outcomes.ts +++ b/dataforged-tools/src/schema/json/moves/Outcomes.ts @@ -1,4 +1,4 @@ -import type { HasId , OutcomeMiss, OutcomeStrongHit, OutcomeWeakHit } from "@schema_json"; +import type { HasId, OutcomeMiss, OutcomeStrongHit, OutcomeWeakHit } from "@schema"; /** * @public diff --git a/dataforged-tools/src/schema_json/moves/RollMethod.ts b/dataforged-tools/src/schema/json/moves/RollMethod.ts similarity index 100% rename from dataforged-tools/src/schema_json/moves/RollMethod.ts rename to dataforged-tools/src/schema/json/moves/RollMethod.ts diff --git a/dataforged-tools/src/schema/json/moves/index.ts b/dataforged-tools/src/schema/json/moves/index.ts new file mode 100644 index 000000000..bf342fd1b --- /dev/null +++ b/dataforged-tools/src/schema/json/moves/index.ts @@ -0,0 +1,13 @@ +/** + * Types describing moves in *Ironsworn: Starforged*. + * @module Json.Moves + */ + +export * from "@schema/json/moves/Move.js"; +export * from "@schema/json/moves/MoveCategory.js"; +export * from "@schema/json/moves/MoveOutcomeInfo.js"; +export * from "@schema/json/moves/Outcomes.js"; +export * from "@schema/json/moves/MoveTrigger.js"; +export * from "@schema/json/moves/MoveTriggerOption.js"; +export * from "@schema/json/moves/RollMethod.js"; +export * from "@schema/json/moves/MoveReroll.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_json/oracles/MultipleRolls.ts b/dataforged-tools/src/schema/json/oracles/MultipleRolls.ts similarity index 100% rename from dataforged-tools/src/schema_json/oracles/MultipleRolls.ts rename to dataforged-tools/src/schema/json/oracles/MultipleRolls.ts diff --git a/dataforged-tools/src/schema_json/oracles/OracleBase.ts b/dataforged-tools/src/schema/json/oracles/OracleBase.ts similarity index 96% rename from dataforged-tools/src/schema_json/oracles/OracleBase.ts rename to dataforged-tools/src/schema/json/oracles/OracleBase.ts index 23a47e0f8..b3ae74159 100644 --- a/dataforged-tools/src/schema_json/oracles/OracleBase.ts +++ b/dataforged-tools/src/schema/json/oracles/OracleBase.ts @@ -1,4 +1,4 @@ -import type { HasDescription, HasDisplay, HasId, HasOracleContent, HasSource, HasSummary, HasText, HasTitle, OracleDisplayBase, OracleSet, OracleTable , OracleTableRow, OracleUsage, RowNullStub } from "@schema_json"; +import type { HasDescription, HasDisplay, HasId, HasOracleContent, HasSource, HasSummary, HasText, HasTitle, OracleDisplayBase, OracleSet, OracleTable, OracleTableRow, OracleUsage, RowNullStub } from "@schema"; /** * @public diff --git a/dataforged-tools/src/schema_json/oracles/OracleContent.ts b/dataforged-tools/src/schema/json/oracles/OracleContent.ts similarity index 86% rename from dataforged-tools/src/schema_json/oracles/OracleContent.ts rename to dataforged-tools/src/schema/json/oracles/OracleContent.ts index eeb7b3469..8e9de9190 100644 --- a/dataforged-tools/src/schema_json/oracles/OracleContent.ts +++ b/dataforged-tools/src/schema/json/oracles/OracleContent.ts @@ -1,4 +1,4 @@ -import type { PartOfSpeechTag } from "@schema_json"; +import type { PartOfSpeechTag } from "@schema"; /** * Interface for metadata that describes an oracle's semantic or lexical content. diff --git a/dataforged-tools/src/schema_json/oracles/OracleDisplay.ts b/dataforged-tools/src/schema/json/oracles/OracleDisplay.ts similarity index 93% rename from dataforged-tools/src/schema_json/oracles/OracleDisplay.ts rename to dataforged-tools/src/schema/json/oracles/OracleDisplay.ts index e0dc7ea50..bed2defe4 100644 --- a/dataforged-tools/src/schema_json/oracles/OracleDisplay.ts +++ b/dataforged-tools/src/schema/json/oracles/OracleDisplay.ts @@ -1,4 +1,4 @@ -import type { Display, HasId, OracleTable , OracleTableRow, TableColumnRoll, TableColumnText } from "@schema_json"; +import type { Display, HasId, OracleTable, OracleTableRow, TableColumnRoll, TableColumnText } from "@schema"; /** * Base interface inherited by {@link OracleSetDisplay} and {@link OracleTableDisplay}. diff --git a/dataforged-tools/src/schema_json/oracles/OracleSet.ts b/dataforged-tools/src/schema/json/oracles/OracleSet.ts similarity index 98% rename from dataforged-tools/src/schema_json/oracles/OracleSet.ts rename to dataforged-tools/src/schema/json/oracles/OracleSet.ts index 7f77d9619..c1a7afaad 100644 --- a/dataforged-tools/src/schema_json/oracles/OracleSet.ts +++ b/dataforged-tools/src/schema/json/oracles/OracleSet.ts @@ -1,5 +1,5 @@ // eslint-disable-next-line @typescript-eslint/no-unused-vars -import type { OracleBase, OracleSetDisplay, OracleTable } from "@schema_json"; +import type { OracleBase, OracleSetDisplay, OracleTable } from "@schema"; /** * Represents an oracle set: a grouping that can contain both {@link OracleTable}s and other instances of {@link OracleSet}, but doesn't have its own `Table` key. diff --git a/dataforged-tools/src/schema_json/oracles/OracleTable.ts b/dataforged-tools/src/schema/json/oracles/OracleTable.ts similarity index 85% rename from dataforged-tools/src/schema_json/oracles/OracleTable.ts rename to dataforged-tools/src/schema/json/oracles/OracleTable.ts index 98084e9bb..368b19c00 100644 --- a/dataforged-tools/src/schema_json/oracles/OracleTable.ts +++ b/dataforged-tools/src/schema/json/oracles/OracleTable.ts @@ -1,4 +1,5 @@ -import type { OracleBase , OracleMatch, OracleSet , OracleTableDisplay, OracleTableRow, RowNullStub, Title } from "@schema_json"; +// eslint-disable-next-line @typescript-eslint/no-unused-vars +import type { OracleBase, OracleMatch, OracleSet, OracleTableDisplay, OracleTableRow, RowNullStub, Title } from "@schema"; /** * Represents an oracle that has a `Table` composed of {@link OracleTableRow} objects. Appears only as a 'leaf' note on the oracle hierarchy 'tree'. diff --git a/dataforged-tools/src/schema_json/oracles/OracleTableRow.ts b/dataforged-tools/src/schema/json/oracles/OracleTableRow.ts similarity index 98% rename from dataforged-tools/src/schema_json/oracles/OracleTableRow.ts rename to dataforged-tools/src/schema/json/oracles/OracleTableRow.ts index b84fd80d8..fa4b6fccc 100644 --- a/dataforged-tools/src/schema_json/oracles/OracleTableRow.ts +++ b/dataforged-tools/src/schema/json/oracles/OracleTableRow.ts @@ -1,4 +1,4 @@ -import type { Attribute, HasDisplay, HasGameObjects, HasOracleContent, HasRollTemplate, HasSuggestions, HasSummary, MultipleRolls, OracleTable, TruthOptionSubtableRow } from "@schema_json"; +import type { Attribute, HasDisplay, HasGameObjects, HasOracleContent, HasRollTemplate, HasSuggestions, HasSummary, MultipleRolls, OracleTable, TruthOptionSubtableRow } from "@schema"; import type { Nullable } from "@utils/types/Nullable.js"; /** diff --git a/dataforged-tools/src/schema_json/oracles/OracleUsage.ts b/dataforged-tools/src/schema/json/oracles/OracleUsage.ts similarity index 94% rename from dataforged-tools/src/schema_json/oracles/OracleUsage.ts rename to dataforged-tools/src/schema/json/oracles/OracleUsage.ts index d63644379..a773f142f 100644 --- a/dataforged-tools/src/schema_json/oracles/OracleUsage.ts +++ b/dataforged-tools/src/schema/json/oracles/OracleUsage.ts @@ -1,4 +1,4 @@ -import type { AttributeChoices, HasRequirements , HasRollTemplate, HasSuggestions , Requirements , Suggestions } from "@schema_json"; +import type { AttributeChoices, HasRequirements, HasRollTemplate, HasSuggestions, Requirements, Suggestions } from "@schema"; /** * Describes the recommended usage of this item. diff --git a/dataforged-tools/src/schema_json/oracles/RollTemplate.ts b/dataforged-tools/src/schema/json/oracles/RollTemplate.ts similarity index 95% rename from dataforged-tools/src/schema_json/oracles/RollTemplate.ts rename to dataforged-tools/src/schema/json/oracles/RollTemplate.ts index b97a01781..d80500077 100644 --- a/dataforged-tools/src/schema_json/oracles/RollTemplate.ts +++ b/dataforged-tools/src/schema/json/oracles/RollTemplate.ts @@ -1,4 +1,4 @@ -import type { HasDescription, HasId, HasSummary } from "@schema_json"; +import type { HasDescription, HasId, HasSummary } from "@schema"; /** * Describes the string keys of this item that should be replaced with template strings and filled with the results of one or more oracles. diff --git a/dataforged-tools/src/schema_json/oracles/RollableOracles.ts b/dataforged-tools/src/schema/json/oracles/RollableOracles.ts similarity index 100% rename from dataforged-tools/src/schema_json/oracles/RollableOracles.ts rename to dataforged-tools/src/schema/json/oracles/RollableOracles.ts diff --git a/dataforged-tools/src/schema_json/oracles/TableColumn.ts b/dataforged-tools/src/schema/json/oracles/TableColumn.ts similarity index 99% rename from dataforged-tools/src/schema_json/oracles/TableColumn.ts rename to dataforged-tools/src/schema/json/oracles/TableColumn.ts index 166bc62f6..746b6983b 100644 --- a/dataforged-tools/src/schema_json/oracles/TableColumn.ts +++ b/dataforged-tools/src/schema/json/oracles/TableColumn.ts @@ -1,4 +1,4 @@ -import type { HasLabel, OracleTable, OracleTableRow } from "@schema_json"; +import type { HasLabel, OracleTable, OracleTableRow } from "@schema"; import type { KeysWithValuesOfType } from "@utils"; /** diff --git a/dataforged-tools/src/schema/json/oracles/index.ts b/dataforged-tools/src/schema/json/oracles/index.ts new file mode 100644 index 000000000..d4e86e767 --- /dev/null +++ b/dataforged-tools/src/schema/json/oracles/index.ts @@ -0,0 +1,15 @@ +/** + * @module Json.Oracles + */ + +export * from "@schema/json/oracles/MultipleRolls.js"; +export * from "@schema/json/oracles/OracleTable.js"; +export * from "@schema/json/oracles/OracleBase.js"; +export * from "@schema/json/oracles/OracleSet.js"; +export * from "@schema/json/oracles/OracleContent.js"; +export * from "@schema/json/oracles/OracleDisplay.js"; +export * from "@schema/json/oracles/OracleUsage.js"; +export * from "@schema/json/oracles/TableColumn.js"; +export * from "@schema/json/oracles/RollTemplate.js"; +export * from "@schema/json/oracles/OracleTableRow.js"; +export * from "@schema/json/oracles/RollableOracles.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_json/rarities/IDelveRarity.ts b/dataforged-tools/src/schema/json/rarities/IDelveRarity.ts similarity index 79% rename from dataforged-tools/src/schema_json/rarities/IDelveRarity.ts rename to dataforged-tools/src/schema/json/rarities/IDelveRarity.ts index 01b132c3f..c86690d4b 100644 --- a/dataforged-tools/src/schema_json/rarities/IDelveRarity.ts +++ b/dataforged-tools/src/schema/json/rarities/IDelveRarity.ts @@ -1,4 +1,4 @@ -import type { Asset , HasDescription, HasDisplay, HasSource, HasTitle } from "@schema_json"; +import type { Asset, HasDescription, HasDisplay, HasSource, HasTitle } from "@schema"; /** * Represents a Rarity (described in Ironsworn: Delve) diff --git a/dataforged-tools/src/schema/json/rarities/index.ts b/dataforged-tools/src/schema/json/rarities/index.ts new file mode 100644 index 000000000..41a15b4c4 --- /dev/null +++ b/dataforged-tools/src/schema/json/rarities/index.ts @@ -0,0 +1 @@ +export * from "@schema/json/rarities/IDelveRarity.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_json/truths/Truth.ts b/dataforged-tools/src/schema/json/truths/Truth.ts similarity index 95% rename from dataforged-tools/src/schema_json/truths/Truth.ts rename to dataforged-tools/src/schema/json/truths/Truth.ts index 8b76b7f7a..ed21053be 100644 --- a/dataforged-tools/src/schema_json/truths/Truth.ts +++ b/dataforged-tools/src/schema/json/truths/Truth.ts @@ -1,4 +1,4 @@ -import type { Display, HasDisplay, HasId, HasSource, HasSuggestions, HasTable, HasTitle, TruthOption } from "@schema_json"; +import type { Display, HasDisplay, HasId, HasSource, HasSuggestions, HasTable, HasTitle, TruthOption } from "@schema"; /** * @public diff --git a/dataforged-tools/src/schema_json/truths/TruthClassic.ts b/dataforged-tools/src/schema/json/truths/TruthClassic.ts similarity index 95% rename from dataforged-tools/src/schema_json/truths/TruthClassic.ts rename to dataforged-tools/src/schema/json/truths/TruthClassic.ts index 8a0e201e9..dc977d3ef 100644 --- a/dataforged-tools/src/schema_json/truths/TruthClassic.ts +++ b/dataforged-tools/src/schema/json/truths/TruthClassic.ts @@ -1,4 +1,4 @@ -import type { HasSource, HasTitle, TruthOptionClassic } from "@schema_json"; +import type { HasSource, HasTitle, TruthOptionClassic } from "@schema"; /** diff --git a/dataforged-tools/src/schema_json/truths/TruthOption.ts b/dataforged-tools/src/schema/json/truths/TruthOption.ts similarity index 86% rename from dataforged-tools/src/schema_json/truths/TruthOption.ts rename to dataforged-tools/src/schema/json/truths/TruthOption.ts index 1f3972bb6..e49c42f1b 100644 --- a/dataforged-tools/src/schema_json/truths/TruthOption.ts +++ b/dataforged-tools/src/schema/json/truths/TruthOption.ts @@ -1,4 +1,4 @@ -import type { HasDescription, HasQuestStarter , OracleTableRow , RollTemplate } from "@schema_json"; +import type { HasDescription, HasQuestStarter, OracleTableRow, RollTemplate } from "@schema"; /** * Interface for 'canonical' options within a SettingTruth category. diff --git a/dataforged-tools/src/schema_json/truths/TruthOptionClassic.ts b/dataforged-tools/src/schema/json/truths/TruthOptionClassic.ts similarity index 72% rename from dataforged-tools/src/schema_json/truths/TruthOptionClassic.ts rename to dataforged-tools/src/schema/json/truths/TruthOptionClassic.ts index 8ff8ad4de..521258bc8 100644 --- a/dataforged-tools/src/schema_json/truths/TruthOptionClassic.ts +++ b/dataforged-tools/src/schema/json/truths/TruthOptionClassic.ts @@ -1,4 +1,5 @@ -import type { HasDescription, HasQuestStarter } from "@schema_json"; +import type { HasDescription, HasQuestStarter } from "@schema"; + /** * @public diff --git a/dataforged-tools/src/schema/json/truths/index.ts b/dataforged-tools/src/schema/json/truths/index.ts new file mode 100644 index 000000000..26fd0b29b --- /dev/null +++ b/dataforged-tools/src/schema/json/truths/index.ts @@ -0,0 +1,7 @@ +/** + * @module Json.SettingTruths + */ +export * from "@schema/json/truths/Truth.js"; +export * from "@schema/json/truths/TruthOption.js"; +export * from "@schema/json/truths/TruthClassic.js"; +export * from "@schema/json/truths/TruthOptionClassic.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_yaml/assets/YamlAlterMomentum.ts b/dataforged-tools/src/schema/yaml/assets/YamlAlterMomentum.ts similarity index 81% rename from dataforged-tools/src/schema_yaml/assets/YamlAlterMomentum.ts rename to dataforged-tools/src/schema/yaml/assets/YamlAlterMomentum.ts index b066b79df..56426f814 100644 --- a/dataforged-tools/src/schema_yaml/assets/YamlAlterMomentum.ts +++ b/dataforged-tools/src/schema/yaml/assets/YamlAlterMomentum.ts @@ -1,5 +1,4 @@ -import type { AlterMomentum, AlterMomentumBurn, AlterMomentumReset } from "@schema_json"; -import type { YamlStub } from "@schema_yaml"; +import type { AlterMomentum , AlterMomentumBurn, AlterMomentumReset, YamlStub } from "@schema"; /** * @internal diff --git a/dataforged-tools/src/schema_yaml/assets/YamlAsset.ts b/dataforged-tools/src/schema/yaml/assets/YamlAsset.ts similarity index 91% rename from dataforged-tools/src/schema_yaml/assets/YamlAsset.ts rename to dataforged-tools/src/schema/yaml/assets/YamlAsset.ts index c07f85706..f7bfe75fa 100644 --- a/dataforged-tools/src/schema_yaml/assets/YamlAsset.ts +++ b/dataforged-tools/src/schema/yaml/assets/YamlAsset.ts @@ -1,8 +1,7 @@ -import type { AlterMove, AlterMoveOutcomes, Asset, AssetAbility, AssetAttachment, AssetState, AssetType, ConditionMeter, Input , InputClock, InputNumber, InputSelect, InputSelectOption , InputSelectOptionSetter, InputText, MoveTriggerOptionAction, MoveTriggerOptionProgress } from "@schema_json"; +import type { AlterMove, AlterMoveOutcomes, Asset, AssetAbility, AssetAttachment, AssetState, AssetType, ConditionMeter , Input, InputClock, InputNumber, InputSelect, InputSelectOption, InputSelectOptionSetter, InputText, MoveTriggerOptionAction, MoveTriggerOptionProgress, YamlAlterMomentum, YamlMove, YamlMoveTrigger, YamlOutcomeMiss, YamlOutcomeStrongHit, YamlOutcomeWeakHit, YamlStub, YamlStubNode } from "@schema"; import type { PartialBy, PartialDeep } from "@utils"; import type { StubExcept } from "@utils/types/Stub.js"; -import type { YamlAlterMomentum , YamlMove, YamlMoveTrigger, YamlOutcomeMiss, YamlOutcomeStrongHit , YamlOutcomeWeakHit, YamlStub, YamlStubNode } from "@schema_yaml"; /** * @internal diff --git a/dataforged-tools/src/schema/yaml/assets/index.ts b/dataforged-tools/src/schema/yaml/assets/index.ts new file mode 100644 index 000000000..ac215b429 --- /dev/null +++ b/dataforged-tools/src/schema/yaml/assets/index.ts @@ -0,0 +1,3 @@ + +export * from "@schema/yaml/assets/YamlAsset.js"; +export * from "@schema/yaml/assets/YamlAlterMomentum.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_yaml/common/YamlDataRoot.ts b/dataforged-tools/src/schema/yaml/common/YamlDataRoot.ts similarity index 77% rename from dataforged-tools/src/schema_yaml/common/YamlDataRoot.ts rename to dataforged-tools/src/schema/yaml/common/YamlDataRoot.ts index 530fe7a9f..dda39a82a 100644 --- a/dataforged-tools/src/schema_yaml/common/YamlDataRoot.ts +++ b/dataforged-tools/src/schema/yaml/common/YamlDataRoot.ts @@ -1,5 +1,4 @@ -import type { HasSource } from "@schema_json"; -import type { YamlAssetType , YamlDelveDomain, YamlDelveTheme, YamlEncounterNatureInfo, YamlEncounterStarforged , YamlIronswornRegion , YamlMoveCategory , YamlOracleSet, YamlOracleTable, YamlTruth, YamlTruthClassic, YamlWithRef } from "@schema_yaml"; +import type { HasSource, YamlAssetType, YamlDelveDomain, YamlDelveTheme, YamlEncounterNatureInfo, YamlEncounterStarforged, YamlIronswornRegion, YamlMoveCategory, YamlOracleSet, YamlOracleTable, YamlTruth, YamlTruthClassic , YamlWithRef } from "@schema"; /** * @internal @@ -62,15 +61,15 @@ export interface YamlTruthRootClassic extends YamlDataRoot { /** * @internal */ -export interface YamlOracleRoot extends YamlWithRef { - "Oracle Sets": { [key:string]: YamlOracleSet }; +export interface YamlOracleSetsRoot extends YamlWithRef { + "Oracle Sets": { [key:string]: YamlOracleSetsItems }; } /** * Schema for files that contain one or more oracle sets. * @internal */ -export interface YamlOracleSetFile { +export interface YamlOracleSetsItems { [key: string]: YamlOracleSet | { Sets?: {[key: string]: Partial & {_templateOracleSet: Partial}} | undefined Tables?: {[key: string]: Partial & {_templateOracleTable: Partial}} | undefined @@ -80,7 +79,7 @@ export interface YamlOracleSetFile { /** * @internal */ -export interface YamlCyclopediaRoot extends YamlDataRoot { +export interface YamlIronlandsRegionRoot extends YamlDataRoot { Regions: { [key:string]: YamlIronswornRegion }; } diff --git a/dataforged-tools/src/schema_yaml/common/YamlMeter.ts b/dataforged-tools/src/schema/yaml/common/YamlMeter.ts similarity index 50% rename from dataforged-tools/src/schema_yaml/common/YamlMeter.ts rename to dataforged-tools/src/schema/yaml/common/YamlMeter.ts index de9363fb9..8c86e7c89 100644 --- a/dataforged-tools/src/schema_yaml/common/YamlMeter.ts +++ b/dataforged-tools/src/schema/yaml/common/YamlMeter.ts @@ -1,5 +1,4 @@ -import type { YamlStub } from "@schema_yaml"; -import type { Meter } from "@schema_json"; +import type { Meter , YamlStub } from "@schema"; /** * @internal diff --git a/dataforged-tools/src/schema_yaml/common/YamlRequirements.ts b/dataforged-tools/src/schema/yaml/common/YamlRequirements.ts similarity index 79% rename from dataforged-tools/src/schema_yaml/common/YamlRequirements.ts rename to dataforged-tools/src/schema/yaml/common/YamlRequirements.ts index ca1fcc7e7..260bb0d98 100644 --- a/dataforged-tools/src/schema_yaml/common/YamlRequirements.ts +++ b/dataforged-tools/src/schema/yaml/common/YamlRequirements.ts @@ -1,5 +1,5 @@ +import type { AttributeKey } from "@schema"; import type { AttributeHash } from "@utils/types/AttributeHash.js"; -import type { AttributeKey } from "@schema_json"; /** * @internal diff --git a/dataforged-tools/src/schema/yaml/common/YamlRollTemplate.ts b/dataforged-tools/src/schema/yaml/common/YamlRollTemplate.ts new file mode 100644 index 000000000..a6aae497a --- /dev/null +++ b/dataforged-tools/src/schema/yaml/common/YamlRollTemplate.ts @@ -0,0 +1,6 @@ +import type { RollTemplate , YamlStub } from "@schema"; + +/** + * @internal + */ +export interface YamlRollTemplate extends YamlStub { } diff --git a/dataforged-tools/src/schema_yaml/common/YamlSource.ts b/dataforged-tools/src/schema/yaml/common/YamlSource.ts similarity index 62% rename from dataforged-tools/src/schema_yaml/common/YamlSource.ts rename to dataforged-tools/src/schema/yaml/common/YamlSource.ts index b0a8cb460..b89adecf2 100644 --- a/dataforged-tools/src/schema_yaml/common/YamlSource.ts +++ b/dataforged-tools/src/schema/yaml/common/YamlSource.ts @@ -1,4 +1,4 @@ -import type { Source } from "@schema_json"; +import type { Source } from "@schema"; /** * @public diff --git a/dataforged-tools/src/schema_yaml/common/YamlSuggestions.ts b/dataforged-tools/src/schema/yaml/common/YamlSuggestions.ts similarity index 68% rename from dataforged-tools/src/schema_yaml/common/YamlSuggestions.ts rename to dataforged-tools/src/schema/yaml/common/YamlSuggestions.ts index 3426ea6c8..90cad0ad9 100644 --- a/dataforged-tools/src/schema_yaml/common/YamlSuggestions.ts +++ b/dataforged-tools/src/schema/yaml/common/YamlSuggestions.ts @@ -1,6 +1,5 @@ import type { GameObjectRecord } from "@game_objects"; -import type { YamlStub } from "@schema_yaml"; -import type { Suggestions } from "@schema_json"; +import type { Suggestions , YamlStub } from "@schema"; /** * @internal diff --git a/dataforged-tools/src/schema_yaml/common/YamlTitle.ts b/dataforged-tools/src/schema/yaml/common/YamlTitle.ts similarity index 54% rename from dataforged-tools/src/schema_yaml/common/YamlTitle.ts rename to dataforged-tools/src/schema/yaml/common/YamlTitle.ts index 09645479b..367e59d4b 100644 --- a/dataforged-tools/src/schema_yaml/common/YamlTitle.ts +++ b/dataforged-tools/src/schema/yaml/common/YamlTitle.ts @@ -1,5 +1,4 @@ -import type { YamlStub } from "@schema_yaml"; -import type { Title } from "@schema_json"; +import type { Title , YamlStub } from "@schema"; /** * @internal diff --git a/dataforged-tools/src/schema_yaml/common/YamlWithRef.ts b/dataforged-tools/src/schema/yaml/common/YamlWithRef.ts similarity index 100% rename from dataforged-tools/src/schema_yaml/common/YamlWithRef.ts rename to dataforged-tools/src/schema/yaml/common/YamlWithRef.ts diff --git a/dataforged-tools/src/schema/yaml/common/index.ts b/dataforged-tools/src/schema/yaml/common/index.ts new file mode 100644 index 000000000..4986137cf --- /dev/null +++ b/dataforged-tools/src/schema/yaml/common/index.ts @@ -0,0 +1,8 @@ +export * from "@schema/yaml/common/YamlDataRoot.js"; +export * from "@schema/yaml/common/YamlMeter.js"; +export * from "@schema/yaml/common/YamlRequirements.js"; +export * from "@schema/yaml/common/YamlRollTemplate.js"; +export * from "@schema/yaml/common/YamlSuggestions.js"; +export * from "@schema/yaml/common/YamlTitle.js"; +export * from "@schema/yaml/common/YamlWithRef.js"; +export * from "@schema/yaml/common/YamlSource.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_yaml/cyclopedia/YamlEncounter.ts b/dataforged-tools/src/schema/yaml/cyclopedia/YamlEncounter.ts similarity index 54% rename from dataforged-tools/src/schema_yaml/cyclopedia/YamlEncounter.ts rename to dataforged-tools/src/schema/yaml/cyclopedia/YamlEncounter.ts index bbb506bfe..b579bd06e 100644 --- a/dataforged-tools/src/schema_yaml/cyclopedia/YamlEncounter.ts +++ b/dataforged-tools/src/schema/yaml/cyclopedia/YamlEncounter.ts @@ -1,5 +1,4 @@ -import type { YamlStubNode } from "@schema_yaml"; -import type { Encounter } from "@schema_json"; +import type { Encounter , YamlStubNode } from "@schema"; /** diff --git a/dataforged-tools/src/schema_yaml/cyclopedia/YamlEncounterIronsworn.ts b/dataforged-tools/src/schema/yaml/cyclopedia/YamlEncounterIronsworn.ts similarity index 69% rename from dataforged-tools/src/schema_yaml/cyclopedia/YamlEncounterIronsworn.ts rename to dataforged-tools/src/schema/yaml/cyclopedia/YamlEncounterIronsworn.ts index 2a8ea2abc..146a00e96 100644 --- a/dataforged-tools/src/schema_yaml/cyclopedia/YamlEncounterIronsworn.ts +++ b/dataforged-tools/src/schema/yaml/cyclopedia/YamlEncounterIronsworn.ts @@ -1,5 +1,4 @@ -import type { EncounterClassic , EncounterNatureClassicInfo, NatureKey } from "@schema_json"; -import type { YamlStubNode, YamlTitle } from "@schema_yaml"; +import type { EncounterClassic, EncounterNatureClassicInfo , NatureKey, YamlStubNode, YamlTitle } from "@schema"; /** * @internal diff --git a/dataforged-tools/src/schema_yaml/cyclopedia/YamlEncounterStarforged.ts b/dataforged-tools/src/schema/yaml/cyclopedia/YamlEncounterStarforged.ts similarity index 57% rename from dataforged-tools/src/schema_yaml/cyclopedia/YamlEncounterStarforged.ts rename to dataforged-tools/src/schema/yaml/cyclopedia/YamlEncounterStarforged.ts index 169a872a4..09a7ab36e 100644 --- a/dataforged-tools/src/schema_yaml/cyclopedia/YamlEncounterStarforged.ts +++ b/dataforged-tools/src/schema/yaml/cyclopedia/YamlEncounterStarforged.ts @@ -1,5 +1,4 @@ -import type { EncounterStarforged } from "@schema_json"; -import type { YamlEncounterVariant, YamlStubNode } from "@schema_yaml"; +import type { EncounterStarforged, YamlEncounterVariant , YamlStubNode } from "@schema"; /** * @internal diff --git a/dataforged-tools/src/schema_yaml/cyclopedia/YamlEncounterVariant.ts b/dataforged-tools/src/schema/yaml/cyclopedia/YamlEncounterVariant.ts similarity index 64% rename from dataforged-tools/src/schema_yaml/cyclopedia/YamlEncounterVariant.ts rename to dataforged-tools/src/schema/yaml/cyclopedia/YamlEncounterVariant.ts index 535c1ac8b..6ea0a97e4 100644 --- a/dataforged-tools/src/schema_yaml/cyclopedia/YamlEncounterVariant.ts +++ b/dataforged-tools/src/schema/yaml/cyclopedia/YamlEncounterVariant.ts @@ -1,5 +1,4 @@ -import type { ChallengeRank, EncounterNatureStarforged, EncounterTags, EncounterVariant } from "@schema_json"; -import type { YamlStubNode } from "@schema_yaml"; +import type { ChallengeRank , EncounterNatureStarforged, EncounterTags, EncounterVariant, YamlStubNode } from "@schema"; /** * @internal diff --git a/dataforged-tools/src/schema/yaml/cyclopedia/YamlIronswornRegion.ts b/dataforged-tools/src/schema/yaml/cyclopedia/YamlIronswornRegion.ts new file mode 100644 index 000000000..6225221d2 --- /dev/null +++ b/dataforged-tools/src/schema/yaml/cyclopedia/YamlIronswornRegion.ts @@ -0,0 +1,7 @@ +import type { IronlandsRegion , YamlStubNode } from "@schema"; + +/** + * @internal + */ + +export interface YamlIronswornRegion extends YamlStubNode { } diff --git a/dataforged-tools/src/schema/yaml/cyclopedia/index.ts b/dataforged-tools/src/schema/yaml/cyclopedia/index.ts new file mode 100644 index 000000000..70eadf56b --- /dev/null +++ b/dataforged-tools/src/schema/yaml/cyclopedia/index.ts @@ -0,0 +1,5 @@ +export * from "@schema/yaml/cyclopedia/YamlEncounterIronsworn.js"; +export * from "@schema/yaml/cyclopedia/YamlEncounterStarforged.js"; +export * from "@schema/yaml/cyclopedia/YamlEncounterVariant.js"; +export * from "@schema/yaml/cyclopedia/YamlEncounter.js"; +export * from "@schema/yaml/cyclopedia/YamlIronswornRegion.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_yaml/delve_site/YamlDelveCard.ts b/dataforged-tools/src/schema/yaml/delve_site/YamlDelveCard.ts similarity index 87% rename from dataforged-tools/src/schema_yaml/delve_site/YamlDelveCard.ts rename to dataforged-tools/src/schema/yaml/delve_site/YamlDelveCard.ts index 2eec53fca..f585969dd 100644 --- a/dataforged-tools/src/schema_yaml/delve_site/YamlDelveCard.ts +++ b/dataforged-tools/src/schema/yaml/delve_site/YamlDelveCard.ts @@ -1,5 +1,4 @@ -import type { DelveCard, DelveCardType, DelveDomain, DelveTheme } from "@schema_json"; -import type { YamlStub, YamlStubNode } from "@schema_yaml"; +import type { DelveCard, DelveCardType , DelveDomain, DelveTheme, YamlStub, YamlStubNode } from "@schema"; /** * @internal diff --git a/dataforged-tools/src/schema_yaml/delve_site/YamlDelveSite.ts b/dataforged-tools/src/schema/yaml/delve_site/YamlDelveSite.ts similarity index 52% rename from dataforged-tools/src/schema_yaml/delve_site/YamlDelveSite.ts rename to dataforged-tools/src/schema/yaml/delve_site/YamlDelveSite.ts index 50e64d338..26969ed3b 100644 --- a/dataforged-tools/src/schema_yaml/delve_site/YamlDelveSite.ts +++ b/dataforged-tools/src/schema/yaml/delve_site/YamlDelveSite.ts @@ -1,5 +1,4 @@ -import type { DelveSite } from "@schema_json"; -import type { YamlStub } from "@schema_yaml"; +import type { DelveSite , YamlStub } from "@schema"; /** * @internal diff --git a/dataforged-tools/src/schema/yaml/delve_site/index.ts b/dataforged-tools/src/schema/yaml/delve_site/index.ts new file mode 100644 index 000000000..cee244dce --- /dev/null +++ b/dataforged-tools/src/schema/yaml/delve_site/index.ts @@ -0,0 +1,2 @@ +export * from "@schema/yaml/delve_site/YamlDelveCard.js"; +export * from "@schema/yaml/delve_site/YamlDelveSite.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema/yaml/index.ts b/dataforged-tools/src/schema/yaml/index.ts new file mode 100644 index 000000000..6c0afcba3 --- /dev/null +++ b/dataforged-tools/src/schema/yaml/index.ts @@ -0,0 +1,9 @@ +export * from "@schema/yaml/utils.js"; +export * from "@schema/yaml/assets/index.js"; +export * from "@schema/yaml/common/index.js"; +export * from "@schema/yaml/moves/index.js"; +export * from "@schema/yaml/oracles/index.js"; +export * from "@schema/yaml/truths/index.js"; +export * from "@schema/yaml/cyclopedia/index.js"; +export * from "@schema/yaml/delve_site/index.js"; +export * from "@schema/yaml/rarities/index.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_yaml/moves/YamlMove.ts b/dataforged-tools/src/schema/yaml/moves/YamlMove.ts similarity index 73% rename from dataforged-tools/src/schema_yaml/moves/YamlMove.ts rename to dataforged-tools/src/schema/yaml/moves/YamlMove.ts index 24d5d2ce9..e63f936d9 100644 --- a/dataforged-tools/src/schema_yaml/moves/YamlMove.ts +++ b/dataforged-tools/src/schema/yaml/moves/YamlMove.ts @@ -1,5 +1,4 @@ -import type { Display, Move, MoveCategory } from "@schema_json"; -import type { YamlOutcomes, YamlMoveTrigger, YamlStubNode } from "@schema_yaml"; +import type { Display, Move, MoveCategory , YamlMoveTrigger, YamlOutcomes, YamlStubNode } from "@schema"; /** * @internal */ diff --git a/dataforged-tools/src/schema_yaml/moves/YamlMoveOutcome.ts b/dataforged-tools/src/schema/yaml/moves/YamlMoveOutcome.ts similarity index 85% rename from dataforged-tools/src/schema_yaml/moves/YamlMoveOutcome.ts rename to dataforged-tools/src/schema/yaml/moves/YamlMoveOutcome.ts index 595073246..2b535bebe 100644 --- a/dataforged-tools/src/schema_yaml/moves/YamlMoveOutcome.ts +++ b/dataforged-tools/src/schema/yaml/moves/YamlMoveOutcome.ts @@ -1,5 +1,4 @@ -import type { MoveOutcome, MoveReroll, OutcomeBase, OutcomeMiss, OutcomeMissMatch, Outcomes, OutcomeStrongHit, OutcomeStrongHitMatch, OutcomeWeakHit } from "@schema_json"; -import type { YamlStub } from "@schema_yaml"; +import type { MoveOutcome , MoveReroll, OutcomeBase, OutcomeMiss, OutcomeMissMatch, Outcomes, OutcomeStrongHit, OutcomeStrongHitMatch, OutcomeWeakHit, YamlStub } from "@schema"; /** * @internal diff --git a/dataforged-tools/src/schema_yaml/moves/YamlMoveTrigger.ts b/dataforged-tools/src/schema/yaml/moves/YamlMoveTrigger.ts similarity index 78% rename from dataforged-tools/src/schema_yaml/moves/YamlMoveTrigger.ts rename to dataforged-tools/src/schema/yaml/moves/YamlMoveTrigger.ts index a1f147240..1bfa1f4a9 100644 --- a/dataforged-tools/src/schema_yaml/moves/YamlMoveTrigger.ts +++ b/dataforged-tools/src/schema/yaml/moves/YamlMoveTrigger.ts @@ -1,5 +1,4 @@ -import type { CustomStat, CustomStatOption, MeterAlias, MoveTrigger, MoveTriggerOptionAction, MoveTriggerOptionProgress, PlayerConditionMeter, Replacement, Stat } from "@schema_json"; -import type { YamlStub } from "@schema_yaml"; +import type { CustomStat , CustomStatOption, MeterAlias, MoveTrigger, MoveTriggerOptionAction, MoveTriggerOptionProgress, PlayerConditionMeter, Replacement, Stat, YamlStub } from "@schema"; /** * @internal diff --git a/dataforged-tools/src/schema/yaml/moves/index.ts b/dataforged-tools/src/schema/yaml/moves/index.ts new file mode 100644 index 000000000..3bcfafd36 --- /dev/null +++ b/dataforged-tools/src/schema/yaml/moves/index.ts @@ -0,0 +1,3 @@ +export * from "@schema/yaml/moves/YamlMove.js"; +export * from "@schema/yaml/moves/YamlMoveOutcome.js"; +export * from "@schema/yaml/moves/YamlMoveTrigger.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_yaml/oracles/YamlOracleMetadata.ts b/dataforged-tools/src/schema/yaml/oracles/YamlOracleMetadata.ts similarity index 81% rename from dataforged-tools/src/schema_yaml/oracles/YamlOracleMetadata.ts rename to dataforged-tools/src/schema/yaml/oracles/YamlOracleMetadata.ts index c47266206..5495c0bd4 100644 --- a/dataforged-tools/src/schema_yaml/oracles/YamlOracleMetadata.ts +++ b/dataforged-tools/src/schema/yaml/oracles/YamlOracleMetadata.ts @@ -1,5 +1,4 @@ -import type { OracleDisplayBase , OracleUsage, TableColumnRoll, TableColumnText } from "@schema_json"; -import type { YamlRequirements , YamlRollTemplate, YamlStub , YamlSuggestions } from "@schema_yaml"; +import type { OracleDisplayBase, OracleUsage, TableColumnRoll, TableColumnText , YamlRequirements, YamlRollTemplate, YamlStub, YamlSuggestions } from "@schema"; /** * @internal diff --git a/dataforged-tools/src/schema_yaml/oracles/YamlOracleSet.ts b/dataforged-tools/src/schema/yaml/oracles/YamlOracleSet.ts similarity index 67% rename from dataforged-tools/src/schema_yaml/oracles/YamlOracleSet.ts rename to dataforged-tools/src/schema/yaml/oracles/YamlOracleSet.ts index dc0506f91..10cb650ca 100644 --- a/dataforged-tools/src/schema_yaml/oracles/YamlOracleSet.ts +++ b/dataforged-tools/src/schema/yaml/oracles/YamlOracleSet.ts @@ -1,5 +1,4 @@ -import type { OracleSet } from "@schema_json"; -import type { YamlOracleSetDisplay, YamlOracleSetTemplate, YamlOracleTable, YamlOracleTableTemplate, YamlOracleUsage, YamlRequirements, YamlSource, YamlStubNode } from "@schema_yaml"; +import type { OracleSet, YamlOracleSetDisplay, YamlOracleSetTemplate, YamlOracleTable, YamlOracleTableTemplate, YamlOracleUsage, YamlRequirements, YamlSource , YamlStubNode } from "@schema"; /** diff --git a/dataforged-tools/src/schema_yaml/oracles/YamlOracleTable.ts b/dataforged-tools/src/schema/yaml/oracles/YamlOracleTable.ts similarity index 77% rename from dataforged-tools/src/schema_yaml/oracles/YamlOracleTable.ts rename to dataforged-tools/src/schema/yaml/oracles/YamlOracleTable.ts index 1aa95e7c2..ad87c2e95 100644 --- a/dataforged-tools/src/schema_yaml/oracles/YamlOracleTable.ts +++ b/dataforged-tools/src/schema/yaml/oracles/YamlOracleTable.ts @@ -1,5 +1,4 @@ -import type { OracleMatch , OracleTable, OracleTableRow } from "@schema_json"; -import type { YamlOracleTableDisplay, YamlOracleUsage, YamlRequirements , YamlStubNode } from "@schema_yaml"; +import type { OracleMatch, OracleTable, OracleTableRow, YamlOracleTableDisplay , YamlOracleUsage, YamlRequirements, YamlStubNode } from "@schema"; /** diff --git a/dataforged-tools/src/schema_yaml/oracles/YamlOracleTemplate.ts b/dataforged-tools/src/schema/yaml/oracles/YamlOracleTemplate.ts similarity index 94% rename from dataforged-tools/src/schema_yaml/oracles/YamlOracleTemplate.ts rename to dataforged-tools/src/schema/yaml/oracles/YamlOracleTemplate.ts index c2ce87042..037992593 100644 --- a/dataforged-tools/src/schema_yaml/oracles/YamlOracleTemplate.ts +++ b/dataforged-tools/src/schema/yaml/oracles/YamlOracleTemplate.ts @@ -1,4 +1,4 @@ -import type { YamlOracleSet, YamlOracleTable, YamlRowContentItem, YamlRowRoll, YamlSimpleTableRow } from "@schema_yaml"; +import type { YamlOracleSet, YamlOracleTable, YamlRowContentItem, YamlRowRoll, YamlSimpleTableRow } from "@schema"; /** * @internal diff --git a/dataforged-tools/src/schema/yaml/oracles/index.ts b/dataforged-tools/src/schema/yaml/oracles/index.ts new file mode 100644 index 000000000..eda09abff --- /dev/null +++ b/dataforged-tools/src/schema/yaml/oracles/index.ts @@ -0,0 +1,4 @@ +export * from "@schema/yaml/oracles/YamlOracleSet.js"; +export * from "@schema/yaml/oracles/YamlOracleMetadata.js"; +export * from "@schema/yaml/oracles/YamlOracleTable.js"; +export * from "@schema/yaml/oracles/YamlOracleTemplate.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema/yaml/rarities/YamlDelveRarity.ts b/dataforged-tools/src/schema/yaml/rarities/YamlDelveRarity.ts new file mode 100644 index 000000000..5daf8db3c --- /dev/null +++ b/dataforged-tools/src/schema/yaml/rarities/YamlDelveRarity.ts @@ -0,0 +1,7 @@ +import type { DelveRarity , YamlStubNode } from "@schema"; + +/** + * @internal + */ +export interface YamlDelveRarity extends YamlStubNode {} + diff --git a/dataforged-tools/src/schema/yaml/rarities/index.ts b/dataforged-tools/src/schema/yaml/rarities/index.ts new file mode 100644 index 000000000..464ee59a5 --- /dev/null +++ b/dataforged-tools/src/schema/yaml/rarities/index.ts @@ -0,0 +1 @@ +export * from "@schema/yaml/rarities/YamlDelveRarity.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_yaml/truths/YamlTruth.ts b/dataforged-tools/src/schema/yaml/truths/YamlTruth.ts similarity index 74% rename from dataforged-tools/src/schema_yaml/truths/YamlTruth.ts rename to dataforged-tools/src/schema/yaml/truths/YamlTruth.ts index 09fe74514..46bdc1540 100644 --- a/dataforged-tools/src/schema_yaml/truths/YamlTruth.ts +++ b/dataforged-tools/src/schema/yaml/truths/YamlTruth.ts @@ -1,5 +1,4 @@ -import type { Truth, TruthOption, TruthOptionSubtableRow } from "@schema_json"; -import type { YamlRollTemplate, YamlStub , YamlStubNode, YamlSuggestions } from "@schema_yaml"; +import type { Truth, TruthOption, TruthOptionSubtableRow, YamlRollTemplate , YamlStub, YamlStubNode, YamlSuggestions } from "@schema"; /** * @internal diff --git a/dataforged-tools/src/schema_yaml/truths/YamlTruthClassic.ts b/dataforged-tools/src/schema/yaml/truths/YamlTruthClassic.ts similarity index 65% rename from dataforged-tools/src/schema_yaml/truths/YamlTruthClassic.ts rename to dataforged-tools/src/schema/yaml/truths/YamlTruthClassic.ts index ae54269d0..629e47f8a 100644 --- a/dataforged-tools/src/schema_yaml/truths/YamlTruthClassic.ts +++ b/dataforged-tools/src/schema/yaml/truths/YamlTruthClassic.ts @@ -1,5 +1,4 @@ -import type { TruthClassic , TruthOptionClassic } from "@schema_json"; -import type { YamlStub , YamlStubNode } from "@schema_yaml"; +import type { TruthClassic, TruthOptionClassic , YamlStub, YamlStubNode } from "@schema"; /** diff --git a/dataforged-tools/src/schema/yaml/truths/index.ts b/dataforged-tools/src/schema/yaml/truths/index.ts new file mode 100644 index 000000000..7dd7219e8 --- /dev/null +++ b/dataforged-tools/src/schema/yaml/truths/index.ts @@ -0,0 +1,2 @@ +export * from "@schema/yaml/truths/YamlTruth.js"; +export * from "@schema/yaml/truths/YamlTruthClassic.js"; diff --git a/dataforged-tools/src/schema_yaml/utils.ts b/dataforged-tools/src/schema/yaml/utils.ts similarity index 96% rename from dataforged-tools/src/schema_yaml/utils.ts rename to dataforged-tools/src/schema/yaml/utils.ts index b37da9745..9abe9b5e1 100644 --- a/dataforged-tools/src/schema_yaml/utils.ts +++ b/dataforged-tools/src/schema/yaml/utils.ts @@ -1,4 +1,4 @@ -import type { YamlSource, YamlTitle } from "@schema_yaml"; +import type { YamlSource, YamlTitle } from "@schema"; import type { OmitDeep, PartialDeepBy } from "@utils"; /** diff --git a/dataforged-tools/src/schema_json/assets/index.ts b/dataforged-tools/src/schema_json/assets/index.ts deleted file mode 100644 index 3efa2e126..000000000 --- a/dataforged-tools/src/schema_json/assets/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Types describing asset cards in *Ironsworn* and *Ironsworn: Starforged*. - * @module Json.Assets - */ - -export * from "@schema_json/assets/AssetTypeName.js"; -export * from "@schema_json/assets/AlterMove.js"; -export * from "@schema_json/assets/Asset.js"; -export * from "@schema_json/assets/AssetAbility.js"; -export * from "@schema_json/assets/AssetAttachment.js"; -export * from "@schema_json/assets/AssetType.js"; -export * from "@schema_json/assets/Input.js"; -export * from "@schema_json/assets/InputSelect.js"; -export * from "@schema_json/assets/InputSelectOption.js"; -export * from "@schema_json/assets/AlterMomentum.js"; -export * from "@schema_json/assets/AssetState.js"; -export * from "@schema_json/assets/AssetAlterProperties.js"; -export * from "@schema_json/assets/AssetUsage.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_json/common/Gamespace.ts b/dataforged-tools/src/schema_json/common/Gamespace.ts deleted file mode 100644 index ff42c478a..000000000 --- a/dataforged-tools/src/schema_json/common/Gamespace.ts +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Some might say that "Gamespace" is a terrible pun. To them, I reply: you'll never take me alive. - * @public - */ -export enum Gamespace { - Starforged = "Starforged", - Ironsworn = "Ironsworn" -} \ No newline at end of file diff --git a/dataforged-tools/src/schema_json/common/index.ts b/dataforged-tools/src/schema_json/common/index.ts deleted file mode 100644 index a299da6f1..000000000 --- a/dataforged-tools/src/schema_json/common/index.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Types describing elements common to many *Ironsworn: Starforged* game objects in Dataforged. - * @module Json.Common - */ - -export * from "@schema_json/common/ChallengeRank.js"; -export * from "@schema_json/common/ClockSegments.js"; -export * from "@schema_json/common/ClockType.js"; -export * from "@schema_json/common/Gamespace.js"; -export * from "@schema_json/common/ConditionMeter.js"; -export * from "@schema_json/common/Meter.js"; -export * from "@schema_json/common/CustomStat.js"; -export * from "@schema_json/common/InputType.js"; -export * from "@schema_json/common/MeterAlias.js"; -export * from "@schema_json/common/MeterCondition.js"; -export * from "@schema_json/common/MeterType.js"; -export * from "@schema_json/common/ProgressType.js"; -export * from "@schema_json/common/Replacement.js"; -export * from "@schema_json/common/RollableStat.js"; -export * from "@schema_json/common/Stat.js"; -export * from "@schema_json/common/CustomStatOption.js"; diff --git a/dataforged-tools/src/schema_json/cyclopedia/index.ts b/dataforged-tools/src/schema_json/cyclopedia/index.ts deleted file mode 100644 index 6a8e47796..000000000 --- a/dataforged-tools/src/schema_json/cyclopedia/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Types describing "cyclopedia"-style entries, such as Regions (in *Ironsworn*) and Encounters. - * @module Json.Cyclopedia - */ - -export * from "@schema_json/cyclopedia/EncounterNature.js"; -export * from "@schema_json/cyclopedia/EncounterTags.js"; -export * from "@schema_json/cyclopedia/Encounter.js"; -export * from "@schema_json/cyclopedia/EncounterBase.js"; -export * from "@schema_json/cyclopedia/EncounterIronsworn.js"; -export * from "@schema_json/cyclopedia/EncounterNatureClassicInfo.js"; -export * from "@schema_json/cyclopedia/EncounterStarforged.js"; -export * from "@schema_json/cyclopedia/EncounterVariant.js"; -export * from "@schema_json/cyclopedia/CyclopediaEntry.js"; -export * from "@schema_json/cyclopedia/IronlandsRegion.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_json/game_objects/index.ts b/dataforged-tools/src/schema_json/game_objects/index.ts deleted file mode 100644 index a0274db41..000000000 --- a/dataforged-tools/src/schema_json/game_objects/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * @module Json.GameObjects - */ - -export * from "@schema_json/game_objects/AttributeKey.js"; -export * from "@schema_json/game_objects/AttributeValue.js"; -export * from "@schema_json/game_objects/Attribute.js"; -export * from "@schema_json/game_objects/AttributeChoices.js"; -export * from "@schema_json/game_objects/AttributeMaster.js"; -export * from "@schema_json/game_objects/GameObject.js"; - -export * from "@game_objects/enum/index.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_json/index.ts b/dataforged-tools/src/schema_json/index.ts deleted file mode 100644 index d64ba7ad3..000000000 --- a/dataforged-tools/src/schema_json/index.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * @module Json - */ - -export * from "@schema_json/meta/index.js"; -export * from "@schema_json/common/index.js"; -export * from "@schema_json/game_objects/index.js"; -export * from "@schema_json/oracles/index.js"; -export * from "@schema_json/truths/index.js"; -export * from "@schema_json/cyclopedia/index.js"; -export * from "@schema_json/moves/index.js"; -export * from "@schema_json/assets/index.js"; -export * from "@schema_json/cyclopedia/index.js"; -export * from "@schema_json/delve_site/index.js"; -export * from "@schema_json/GameData.js"; -export * from "@schema_json/rarities/index.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_json/meta/index.ts b/dataforged-tools/src/schema_json/meta/index.ts deleted file mode 100644 index ca9830730..000000000 --- a/dataforged-tools/src/schema_json/meta/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Types describing metadata common to many items in Dataforged. - * @module Json.Meta - */ - -export * from "@schema_json/meta/Display.js"; -export * from "@schema_json/meta/Has.js"; -export * from "@schema_json/meta/Requirements.js"; -export * from "@schema_json/meta/Source.js"; -export * from "@schema_json/meta/Suggestions.js"; -export * from "@schema_json/meta/PartOfSpeechTag.js"; -export * from "@schema_json/meta/Url.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_json/moves/index.ts b/dataforged-tools/src/schema_json/moves/index.ts deleted file mode 100644 index cf054b489..000000000 --- a/dataforged-tools/src/schema_json/moves/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Types describing moves in *Ironsworn: Starforged*. - * @module Json.Moves - */ - -export * from "@schema_json/moves/Move.js"; -export * from "@schema_json/moves/MoveCategory.js"; -export * from "@schema_json/moves/MoveOutcomeInfo.js"; -export * from "@schema_json/moves/Outcomes.js"; -export * from "@schema_json/moves/MoveTrigger.js"; -export * from "@schema_json/moves/MoveTriggerOption.js"; -export * from "@schema_json/moves/RollMethod.js"; -export * from "@schema_json/moves/MoveReroll.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_json/oracles/index.ts b/dataforged-tools/src/schema_json/oracles/index.ts deleted file mode 100644 index 7ca03d78b..000000000 --- a/dataforged-tools/src/schema_json/oracles/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * @module Json.Oracles - */ - -export * from "@schema_json/oracles/MultipleRolls.js"; -export * from "@schema_json/oracles/OracleTable.js"; -export * from "@schema_json/oracles/OracleBase.js"; -export * from "@schema_json/oracles/OracleSet.js"; -export * from "@schema_json/oracles/OracleContent.js"; -export * from "@schema_json/oracles/OracleDisplay.js"; -export * from "@schema_json/oracles/OracleUsage.js"; -export * from "@schema_json/oracles/TableColumn.js"; -export * from "@schema_json/oracles/RollTemplate.js"; -export * from "@schema_json/oracles/OracleTableRow.js"; -export * from "@schema_json/oracles/RollableOracles.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_json/rarities/index.ts b/dataforged-tools/src/schema_json/rarities/index.ts deleted file mode 100644 index f0f12f612..000000000 --- a/dataforged-tools/src/schema_json/rarities/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "@schema_json/rarities/IDelveRarity.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_json/truths/index.ts b/dataforged-tools/src/schema_json/truths/index.ts deleted file mode 100644 index a9183e098..000000000 --- a/dataforged-tools/src/schema_json/truths/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @module Json.SettingTruths - */ -export * from "@schema_json/truths/Truth.js"; -export * from "@schema_json/truths/TruthOption.js"; -export * from "@schema_json/truths/TruthClassic.js"; -export * from "@schema_json/truths/TruthOptionClassic.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_yaml/assets/index.ts b/dataforged-tools/src/schema_yaml/assets/index.ts deleted file mode 100644 index 65bcdad86..000000000 --- a/dataforged-tools/src/schema_yaml/assets/index.ts +++ /dev/null @@ -1,3 +0,0 @@ - -export * from "@schema_yaml/assets/YamlAsset.js"; -export * from "@schema_yaml/assets/YamlAlterMomentum.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_yaml/common/YamlRollTemplate.ts b/dataforged-tools/src/schema_yaml/common/YamlRollTemplate.ts deleted file mode 100644 index 9aeb2e344..000000000 --- a/dataforged-tools/src/schema_yaml/common/YamlRollTemplate.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { YamlStub } from "@schema_yaml"; -import type { RollTemplate } from "@schema_json"; - -/** - * @internal - */ -export interface YamlRollTemplate extends YamlStub { } diff --git a/dataforged-tools/src/schema_yaml/common/index.ts b/dataforged-tools/src/schema_yaml/common/index.ts deleted file mode 100644 index 29466458a..000000000 --- a/dataforged-tools/src/schema_yaml/common/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -export * from "@schema_yaml/common/YamlDataRoot.js"; -export * from "@schema_yaml/common/YamlMeter.js"; -export * from "@schema_yaml/common/YamlRequirements.js"; -export * from "@schema_yaml/common/YamlRollTemplate.js"; -export * from "@schema_yaml/common/YamlSuggestions.js"; -export * from "@schema_yaml/common/YamlTitle.js"; -export * from "@schema_yaml/common/YamlWithRef.js"; -export * from "@schema_yaml/common/YamlSource.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_yaml/cyclopedia/YamlIronswornRegion.ts b/dataforged-tools/src/schema_yaml/cyclopedia/YamlIronswornRegion.ts deleted file mode 100644 index 821987942..000000000 --- a/dataforged-tools/src/schema_yaml/cyclopedia/YamlIronswornRegion.ts +++ /dev/null @@ -1,8 +0,0 @@ -import type { IronlandsRegion } from "@schema_json"; -import type { YamlStubNode } from "@schema_yaml"; - -/** - * @internal - */ - -export interface YamlIronswornRegion extends YamlStubNode { } diff --git a/dataforged-tools/src/schema_yaml/cyclopedia/index.ts b/dataforged-tools/src/schema_yaml/cyclopedia/index.ts deleted file mode 100644 index 89057c5f8..000000000 --- a/dataforged-tools/src/schema_yaml/cyclopedia/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from "@schema_yaml/cyclopedia/YamlEncounterIronsworn.js"; -export * from "@schema_yaml/cyclopedia/YamlEncounterStarforged.js"; -export * from "@schema_yaml/cyclopedia/YamlEncounterVariant.js"; -export * from "@schema_yaml/cyclopedia/YamlEncounter.js"; -export * from "@schema_yaml/cyclopedia/YamlIronswornRegion.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_yaml/delve_site/index.ts b/dataforged-tools/src/schema_yaml/delve_site/index.ts deleted file mode 100644 index d22a1f7f8..000000000 --- a/dataforged-tools/src/schema_yaml/delve_site/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "@schema_yaml/delve_site/YamlDelveCard.js"; -export * from "@schema_yaml/delve_site/YamlDelveSite.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_yaml/index.ts b/dataforged-tools/src/schema_yaml/index.ts deleted file mode 100644 index 7d562c556..000000000 --- a/dataforged-tools/src/schema_yaml/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -export * from "@schema_yaml/utils.js"; -export * from "@schema_yaml/assets/index.js"; -export * from "@schema_yaml/common/index.js"; -export * from "@schema_yaml/moves/index.js"; -export * from "@schema_yaml/oracles/index.js"; -export * from "@schema_yaml/truths/index.js"; -export * from "@schema_yaml/cyclopedia/index.js"; -export * from "@schema_yaml/delve_site/index.js"; -export * from "@schema_yaml/rarities/index.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_yaml/moves/index.ts b/dataforged-tools/src/schema_yaml/moves/index.ts deleted file mode 100644 index 34d076c54..000000000 --- a/dataforged-tools/src/schema_yaml/moves/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from "@schema_yaml/moves/YamlMove.js"; -export * from "@schema_yaml/moves/YamlMoveOutcome.js"; -export * from "@schema_yaml/moves/YamlMoveTrigger.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_yaml/oracles/index.ts b/dataforged-tools/src/schema_yaml/oracles/index.ts deleted file mode 100644 index bed97304f..000000000 --- a/dataforged-tools/src/schema_yaml/oracles/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from "@schema_yaml/oracles/YamlOracleSet.js"; -export * from "@schema_yaml/oracles/YamlOracleMetadata.js"; -export * from "@schema_yaml/oracles/YamlOracleTable.js"; -export * from "@schema_yaml/oracles/YamlOracleTemplate.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_yaml/rarities/YamlDelveRarity.ts b/dataforged-tools/src/schema_yaml/rarities/YamlDelveRarity.ts deleted file mode 100644 index 1d6b1c5b6..000000000 --- a/dataforged-tools/src/schema_yaml/rarities/YamlDelveRarity.ts +++ /dev/null @@ -1,8 +0,0 @@ -import type { DelveRarity } from "@schema_json"; -import type { YamlStubNode } from "@schema_yaml"; - -/** - * @internal - */ -export interface YamlDelveRarity extends YamlStubNode {} - diff --git a/dataforged-tools/src/schema_yaml/rarities/index.ts b/dataforged-tools/src/schema_yaml/rarities/index.ts deleted file mode 100644 index 671cbe7b4..000000000 --- a/dataforged-tools/src/schema_yaml/rarities/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "@schema_yaml/rarities/YamlDelveRarity.js"; \ No newline at end of file diff --git a/dataforged-tools/src/schema_yaml/truths/index.ts b/dataforged-tools/src/schema_yaml/truths/index.ts deleted file mode 100644 index 079ed45c0..000000000 --- a/dataforged-tools/src/schema_yaml/truths/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "@schema_yaml/truths/YamlTruth.js"; -export * from "@schema_yaml/truths/YamlTruthClassic.js"; diff --git a/dataforged-tools/src/start-ironsworn.ts b/dataforged-tools/src/start-ironsworn.ts index 833166092..3e537e056 100644 --- a/dataforged-tools/src/start-ironsworn.ts +++ b/dataforged-tools/src/start-ironsworn.ts @@ -1,14 +1,12 @@ -/* eslint-disable no-console */ - import "source-map-support/register.js"; import { JSON_PATHS } from "@constants"; -import { Gamespace } from "@schema_json"; -import type { Ironsworn } from "@schema_json"; -import { buildDataforged } from "@utils/buildDataforged.js"; +import { Game } from "@schema"; +import type { Ironsworn } from "@schema"; +import { buildDataforged } from "@utils/builders/buildDataforged.js"; import { writeJson } from "@utils/io/writeJSON.js"; import _ from "lodash-es"; -const data = buildDataforged(Gamespace.Ironsworn) as Ironsworn; +const data = buildDataforged(Game.Ironsworn) as Ironsworn; _.forEach(data, (value, key) => { if (typeof value !== "string" && typeof value !== "undefined") { @@ -51,6 +49,7 @@ _.forEach(data, (value, key) => { } JSON_PATHS.forEach(path => { const newPath = path + `/ironsworn/${fileName}.json`; + // eslint-disable-next-line no-console console.log(`[StartIronsworn] Writing json to ${newPath}`); writeJson(newPath, value); }); diff --git a/dataforged-tools/src/start-schema.ts b/dataforged-tools/src/start-schema.ts index 8a8356548..f1365ec70 100644 --- a/dataforged-tools/src/start-schema.ts +++ b/dataforged-tools/src/start-schema.ts @@ -25,8 +25,8 @@ const schemasToWrite: {typeName: string, outFiles: string[], declarations: strin declarations: yamlDeclarations }, { - typeName: "YamlOracleSetFile", - outFiles: [ "../_master-data/schema/oracles.json","../_master-data/schema/oracles-ironsworn.json" ], + typeName: "YamlOracleSetRoot", + outFiles: ["../_master-data/schema/oracles.json"], declarations: yamlDeclarations }, { @@ -39,13 +39,6 @@ const schemasToWrite: {typeName: string, outFiles: string[], declarations: strin outFiles: ["../_master-data/schema/delve_site.json"], declarations: yamlDeclarations }, - { - typeName: "Asset", - outFiles: [ - "../dist/starforged/schema-asset.json" - ], - declarations: jsonDeclarations - }, { typeName: "Starforged", outFiles: [ "../dist/starforged/schema.json", "../src/starforged/schema.json", "./src/json/starforged/schema.json" ], diff --git a/dataforged-tools/src/start-starforged.ts b/dataforged-tools/src/start-starforged.ts index f194cbbf3..b97ec0433 100644 --- a/dataforged-tools/src/start-starforged.ts +++ b/dataforged-tools/src/start-starforged.ts @@ -1,14 +1,12 @@ -/* eslint-disable no-console */ - import "source-map-support/register.js"; import { JSON_PATHS } from "@constants"; -import { Gamespace } from "@schema_json"; -import type { Starforged } from "@schema_json"; -import { buildDataforged } from "@utils/buildDataforged.js"; +import { Game } from "@schema"; +import type { Starforged } from "@schema"; +import { buildDataforged } from "@utils/builders/buildDataforged.js"; import { writeJson } from "@utils/io/writeJSON.js"; import _ from "lodash-es"; -const data = buildDataforged(Gamespace.Starforged) as Starforged; +const data = buildDataforged(Game.Starforged) as Starforged; export { data }; _.forEach(data, (value, key) => { @@ -40,6 +38,7 @@ _.forEach(data, (value, key) => { } JSON_PATHS.forEach(path => { const newPath = path + `/starforged/${fileName}.json`; + // eslint-disable-next-line no-console console.log(`[StartStarforged] Writing json to ${newPath}`); writeJson(newPath, value); }); @@ -48,10 +47,3 @@ _.forEach(data, (value, key) => { JSON_PATHS.forEach(path => writeJson( path+ "/starforged/dataforged.json", data)); -// const outRoot = "../img"; -// const outWebP = "../img/raster/webp"; - -// buildImages(IMG_PATH , outRoot, MASTER_PNG_PATH , outWebP); - - - diff --git a/dataforged-tools/src/utils/buildAssets.ts b/dataforged-tools/src/utils/builders/buildAssets.ts similarity index 83% rename from dataforged-tools/src/utils/buildAssets.ts rename to dataforged-tools/src/utils/builders/buildAssets.ts index 8a5637058..e205d71c3 100644 --- a/dataforged-tools/src/utils/buildAssets.ts +++ b/dataforged-tools/src/utils/builders/buildAssets.ts @@ -1,23 +1,24 @@ import { MASTER_DATA_PATH } from "@constants"; -import { Gamespace } from "@schema_json"; +import { Asset, Game, YamlAssetType } from "@schema"; import { buildLog } from "@utils/logging/buildLog.js"; import yaml from "js-yaml"; import _ from "lodash-es"; import fs from "fs"; -import { YamlAssetRoot } from "@schema_yaml"; +import { YamlAssetRoot } from "@schema"; import { AssetTypeBuilder } from "@builders"; + /** * Build and validate all asset objects from YAML. * @returns An array of Asset objects. */ -export function buildAssets(gamespace: Gamespace = Gamespace.Starforged) { +export function buildAssets(gamespace: Game = Game.Starforged) { const assetPath = `${MASTER_DATA_PATH as string}/${gamespace}/Assets.yaml`; const data = fs.readFileSync(assetPath, { encoding: "utf-8" }); const json = yaml.load(data) as YamlAssetRoot; const result = _.mapValues(json["Asset Types"], (assetTypeYaml, key) => new AssetTypeBuilder(assetTypeYaml, gamespace, json.Source)); buildLog(buildAssets, `Finished building ${result.length} asset types containing a total of ${_.sum(_.map(result,type => Object.keys(type.Assets).length))} assets.`); - return result; -} \ No newline at end of file +} + diff --git a/dataforged-tools/src/utils/buildDataforged.ts b/dataforged-tools/src/utils/builders/buildDataforged.ts similarity index 57% rename from dataforged-tools/src/utils/buildDataforged.ts rename to dataforged-tools/src/utils/builders/buildDataforged.ts index 2dc5b87d5..738c70ef1 100644 --- a/dataforged-tools/src/utils/buildDataforged.ts +++ b/dataforged-tools/src/utils/builders/buildDataforged.ts @@ -1,27 +1,28 @@ -import { DelveCardType, Gamespace } from "@schema_json"; -import type { Ironsworn , Starforged } from "@schema_json"; -import { buildAssets } from "@utils/buildAssets.js"; -import { buildEncounters } from "@utils/buildEncounters.js"; -import { buildMoves } from "@utils/buildMoves.js"; -import { buildOracles } from "@utils/buildOracles.js"; -import { buildTruths } from "@utils/buildTruths.js"; +import { DelveCardType, Game } from "@schema"; +import type { Ironsworn, Starforged } from "@schema"; +import { buildAssets } from "@utils/builders/buildAssets.js"; +import { buildEncounters } from "@utils/builders/buildEncounters.js"; +import { buildMoves } from "@utils/builders/buildMoves.js"; +import { buildOracles } from "@utils/builders/buildOracles.js"; +import { buildTruths } from "@utils/builders/buildTruths.js"; import { dataforgedStats } from "@utils/dataforgedStats.js"; import { buildLog } from "@utils/logging/buildLog.js"; -import { buildDelveSiteCards } from "@utils/buildDelveSiteCards.js"; -import { buildIronlandsRegions } from "@utils/buildIronswornRegions.js"; +import { buildDelveSiteCards } from "@utils/builders/buildDelveSiteCards.js"; +import { buildIronlandsRegions } from "@utils/builders/buildIronswornRegions.js"; +import { IronlandsBuilder } from "@builders/IronlandsBuilder.js"; +import { SourceBuilder } from "@builders"; /** * Builds all data for Dataforged. * @returns An object keyed with the game data. */ -export function buildDataforged(gamespace: Gamespace = Gamespace.Starforged) { +export function buildDataforged(gamespace: Game = Game.Starforged) { buildLog(buildDataforged, `Building Dataforged for ${gamespace}...`); let data: Ironsworn|Starforged; switch (gamespace) { - case Gamespace.Starforged: { + case Game.Starforged: { data = { - // $schema: "./schema.json", "Asset Types": buildAssets(gamespace), Encounters: buildEncounters(gamespace), "Move Categories": buildMoves(gamespace), @@ -29,17 +30,16 @@ export function buildDataforged(gamespace: Gamespace = Gamespace.Starforged) { "Setting Truths": buildTruths(gamespace) } as Starforged; break;} - case Gamespace.Ironsworn: { + case Game.Ironsworn: { data = { - // $schema: "./schema.json", - "Asset Types": buildAssets(gamespace), + "Asset Types": buildAssets(gamespace), Encounters: buildEncounters(gamespace), "Move Categories": buildMoves(gamespace), "Oracle Sets": buildOracles(gamespace), "Setting Truths": buildTruths(gamespace), "Site Themes": buildDelveSiteCards(DelveCardType.Theme), "Site Domains": buildDelveSiteCards(DelveCardType.Domain), - Regions: buildIronlandsRegions(), + Regions: new IronlandsBuilder(SourceBuilder.default(Game.Ironsworn)).toJson(), // Rarities // Delve Sites (the sample ones from Delve) } as Ironsworn; diff --git a/dataforged-tools/src/utils/buildDataforgedLegacy.ts b/dataforged-tools/src/utils/builders/buildDataforgedLegacy.ts similarity index 100% rename from dataforged-tools/src/utils/buildDataforgedLegacy.ts rename to dataforged-tools/src/utils/builders/buildDataforgedLegacy.ts diff --git a/dataforged-tools/src/utils/buildDelveSiteCards.ts b/dataforged-tools/src/utils/builders/buildDelveSiteCards.ts similarity index 74% rename from dataforged-tools/src/utils/buildDelveSiteCards.ts rename to dataforged-tools/src/utils/builders/buildDelveSiteCards.ts index 9c66196f0..7e4ab7703 100644 --- a/dataforged-tools/src/utils/buildDelveSiteCards.ts +++ b/dataforged-tools/src/utils/builders/buildDelveSiteCards.ts @@ -1,7 +1,7 @@ import { DelveDomainBuilder, DelveThemeBuilder } from "@builders/delve_site/DelveCardBuilder.js"; import { MASTER_DATA_PATH } from "@constants"; -import { DelveCardType, Gamespace } from "@schema_json"; -import { YamlDelveSiteRoot } from "@schema_yaml"; +import { DelveCardType, Game } from "@schema"; +import { YamlDelveSiteRoot } from "@schema"; import fs from "fs"; import yaml from "js-yaml"; import _ from "lodash"; @@ -9,7 +9,7 @@ import _ from "lodash"; export function buildDelveSiteCards( type: T ) { - const assetPath = `${MASTER_DATA_PATH as string}/${Gamespace.Ironsworn}/Delve-Site-${type === DelveCardType.Domain ? "Domains" : "Themes"}.yaml`; + const assetPath = `${MASTER_DATA_PATH as string}/${Game.Ironsworn}/Delve-Site-${type === DelveCardType.Domain ? "Domains" : "Themes"}.yaml`; const data = fs.readFileSync(assetPath, { encoding: "utf-8" }); const json = yaml.load(data) as YamlDelveSiteRoot; switch (type) { diff --git a/dataforged-tools/src/utils/buildEncounters.ts b/dataforged-tools/src/utils/builders/buildEncounters.ts similarity index 84% rename from dataforged-tools/src/utils/buildEncounters.ts rename to dataforged-tools/src/utils/builders/buildEncounters.ts index f0a62676c..257de8a5c 100644 --- a/dataforged-tools/src/utils/buildEncounters.ts +++ b/dataforged-tools/src/utils/builders/buildEncounters.ts @@ -1,12 +1,12 @@ import { EncounterNatureClassicInfoBuilder } from "@builders"; import { EncounterStarforgedBuilder } from "@builders"; import { MASTER_DATA_PATH } from "@constants"; -import { Gamespace, Starforged } from "@schema_json"; -import { YamlEncounterRootStarforged, YamlEncounterRootClassic } from "@schema_yaml"; +import { Game, Starforged } from "@schema"; +import { YamlEncounterRootStarforged, YamlEncounterRootClassic } from "@schema"; import { encounterStats } from "@utils/dataforgedStats.js"; import { badJsonError } from "@utils/logging/badJsonError.js"; import { buildLog } from "@utils/logging/buildLog.js"; -import { concatWithYamlRefs } from "@utils/process_yaml/concatWithYamlRefs.js"; +import { concatWithYamlRefs } from "@utils/yaml/concatWithYamlRefs.js"; import fg from "fast-glob"; import _ from "lodash"; @@ -14,7 +14,7 @@ import _ from "lodash"; * Assembles encounter data from YAML shorthand into JSON. * @returns */ -export function buildEncounters(gamespace: G) { +export function buildEncounters(gamespace: G) { type EncounterRootJson = G extends Starforged ? EncounterStarforgedBuilder : EncounterNatureClassicInfoBuilder; type EncounterRootYaml = G extends Starforged ? YamlEncounterRootStarforged : YamlEncounterRootClassic buildLog(buildEncounters, "Building encounters..."); @@ -24,12 +24,12 @@ export function buildEncounters(gamespace: G) { let result; switch (gamespace) { - case Gamespace.Starforged: { + case Game.Starforged: { result = _.mapValues((encounterRootYaml as YamlEncounterRootStarforged).Encounters,enc => new EncounterStarforgedBuilder(enc, encounterRootYaml.Source)) as { [key: string]: EncounterStarforgedBuilder} break; } - case Gamespace.Ironsworn: { + case Game.Ironsworn: { result = _.mapValues((encounterRootYaml as YamlEncounterRootClassic).Encounters,enc => new EncounterNatureClassicInfoBuilder(enc, encounterRootYaml.Source)); break; } @@ -38,9 +38,9 @@ export function buildEncounters(gamespace: G) { } buildLog(buildEncounters, `Finished building ${encounterStats(gamespace, result)}`); switch (gamespace) { - case Gamespace.Starforged: + case Game.Starforged: return result as {[key: string]: EncounterStarforgedBuilder}; - case Gamespace.Ironsworn: + case Game.Ironsworn: return result as {[key: string]: EncounterNatureClassicInfoBuilder}; default: throw badJsonError(buildEncounters); diff --git a/dataforged-tools/src/utils/buildImages.ts b/dataforged-tools/src/utils/builders/buildImages.ts similarity index 100% rename from dataforged-tools/src/utils/buildImages.ts rename to dataforged-tools/src/utils/builders/buildImages.ts diff --git a/dataforged-tools/src/utils/buildIronswornRegions.ts b/dataforged-tools/src/utils/builders/buildIronswornRegions.ts similarity index 74% rename from dataforged-tools/src/utils/buildIronswornRegions.ts rename to dataforged-tools/src/utils/builders/buildIronswornRegions.ts index 8a6c5ce9b..3fdf96277 100644 --- a/dataforged-tools/src/utils/buildIronswornRegions.ts +++ b/dataforged-tools/src/utils/builders/buildIronswornRegions.ts @@ -1,9 +1,9 @@ import { IronlandsRegionBuilder } from "@builders"; import { MASTER_DATA_PATH } from "@constants"; -import { Gamespace } from "@schema_json"; -import { YamlCyclopediaRoot } from "@schema_yaml"; +import { Game } from "@schema"; +import { YamlIronlandsRegionRoot } from "@schema"; import { buildLog } from "@utils/logging/buildLog.js"; -import { concatWithYamlRefs } from "@utils/process_yaml/concatWithYamlRefs.js"; +import { concatWithYamlRefs } from "@utils/yaml/concatWithYamlRefs.js"; import fg from "fast-glob"; import _ from "lodash-es"; @@ -13,9 +13,9 @@ import _ from "lodash-es"; */ export function buildIronlandsRegions() { buildLog(buildIronlandsRegions, "Building regions..."); - const regionFiles = fg.sync(`${MASTER_DATA_PATH as string}/${Gamespace.Ironsworn}/Regions*.(yml|yaml)`, { onlyFiles: true }); + const regionFiles = fg.sync(`${MASTER_DATA_PATH as string}/${Game.Ironsworn}/Regions*.(yml|yaml)`, { onlyFiles: true }); console.log(regionFiles); - const regionRoot = concatWithYamlRefs(undefined, ...regionFiles) as YamlCyclopediaRoot; + const regionRoot = concatWithYamlRefs(undefined, ...regionFiles) as YamlIronlandsRegionRoot; const json = _.mapValues(regionRoot.Regions,region => new IronlandsRegionBuilder(region, regionRoot.Source)) buildLog(buildIronlandsRegions, `Finished building ${json.length} regions`); return json diff --git a/dataforged-tools/src/utils/buildMarkdown.ts b/dataforged-tools/src/utils/builders/buildMarkdown.ts similarity index 100% rename from dataforged-tools/src/utils/buildMarkdown.ts rename to dataforged-tools/src/utils/builders/buildMarkdown.ts diff --git a/dataforged-tools/src/utils/buildMoveMarkdown.ts b/dataforged-tools/src/utils/builders/buildMoveMarkdown.ts similarity index 93% rename from dataforged-tools/src/utils/buildMoveMarkdown.ts rename to dataforged-tools/src/utils/builders/buildMoveMarkdown.ts index a1ad9fe99..74da4b86e 100644 --- a/dataforged-tools/src/utils/buildMoveMarkdown.ts +++ b/dataforged-tools/src/utils/builders/buildMoveMarkdown.ts @@ -1,4 +1,4 @@ -import type { MoveCategory } from "@schema_json"; +import type { MoveCategory } from "@schema"; import { renderMoveCategory } from "@utils/md/renderMoveCategory.js"; import { transformMoveLinks } from "@utils/md/transformHyperlink.js"; import { writeFileSync } from "fs"; diff --git a/dataforged-tools/src/utils/buildMoves.ts b/dataforged-tools/src/utils/builders/buildMoves.ts similarity index 86% rename from dataforged-tools/src/utils/buildMoves.ts rename to dataforged-tools/src/utils/builders/buildMoves.ts index c339acb7f..f6f99a810 100644 --- a/dataforged-tools/src/utils/buildMoves.ts +++ b/dataforged-tools/src/utils/builders/buildMoves.ts @@ -1,5 +1,5 @@ import { MASTER_DATA_PATH } from "@constants"; -import { GameDataRoot, Gamespace } from "@schema_json"; +import { GameDataRoot, Game } from "@schema"; import { buildLog } from "@utils/logging/buildLog.js"; import fg from "fast-glob"; import _ from "lodash-es"; @@ -8,7 +8,7 @@ import yaml from "js-yaml"; import { moveStats } from "@utils/dataforgedStats.js"; import { validate } from "jsonschema"; import { badJsonError } from "@utils/logging/badJsonError.js"; -import { YamlMoveRoot } from "@schema_yaml"; +import { YamlMoveRoot } from "@schema"; import { MoveCategoryBuilder } from "@builders"; const SCHEMA_YAML = fs.readJsonSync("../_master-data/schema/moves.json") @@ -16,7 +16,7 @@ const SCHEMA_YAML = fs.readJsonSync("../_master-data/schema/moves.json") /** * Build datasworn JSON moves from YAML shorthand. */ -export function buildMoves(gamespace: Gamespace = Gamespace.Starforged): GameDataRoot["Move Categories"] { +export function buildMoves(gamespace: Game = Game.Starforged): GameDataRoot["Move Categories"] { buildLog(buildMoves, "Building moves..."); const filePaths = fg.sync(`${MASTER_DATA_PATH as string}/${gamespace}/Moves*.(yml|yaml)`, { onlyFiles: true }); diff --git a/dataforged-tools/src/utils/buildOracleMarkdown.ts b/dataforged-tools/src/utils/builders/buildOracleMarkdown.ts similarity index 100% rename from dataforged-tools/src/utils/buildOracleMarkdown.ts rename to dataforged-tools/src/utils/builders/buildOracleMarkdown.ts diff --git a/dataforged-tools/src/utils/buildOracles.ts b/dataforged-tools/src/utils/builders/buildOracles.ts similarity index 75% rename from dataforged-tools/src/utils/buildOracles.ts rename to dataforged-tools/src/utils/builders/buildOracles.ts index d5db77807..b9cd69622 100644 --- a/dataforged-tools/src/utils/buildOracles.ts +++ b/dataforged-tools/src/utils/builders/buildOracles.ts @@ -1,14 +1,14 @@ import { OracleSetBuilder } from "@builders"; import { MASTER_DATA_PATH, REFS_PATH } from "@constants"; -import { GameDataRoot, Gamespace } from "@schema_json"; +import { GameDataRoot, Game } from "@schema"; import { oracleStats } from "@utils/dataforgedStats.js"; import { buildLog } from "@utils/logging/buildLog.js"; -import { concatWithYamlRefs } from "@utils/process_yaml/concatWithYamlRefs.js"; +import { concatWithYamlRefs } from "@utils/yaml/concatWithYamlRefs.js"; import fs from "fs-extra"; import fg from "fast-glob"; import _ from "lodash"; -import { YamlOracleRoot, YamlOracleSetFile, YamlOracleSet } from "@schema_yaml"; +import { YamlOracleSetsRoot, YamlOracleSetsItems, YamlOracleSet } from "@schema"; import { validate } from "jsonschema"; import { badJsonError } from "@utils/logging/badJsonError.js"; @@ -19,12 +19,12 @@ const SCHEMA_YAML = fs.readJsonSync("../_master-data/schema/oracles.json") * It takes the data from the oracles directory and builds a list of {@link OracleSetBuilder} objects. * @returns An array of {@link OracleSetBuilder} objects. */ -export function buildOracles(gamespace: Gamespace = Gamespace.Starforged): GameDataRoot["Oracle Sets"] { +export function buildOracles(gamespace: Game = Game.Starforged): GameDataRoot["Oracle Sets"] { buildLog(buildOracles, "Building oracles..."); let oracleSetFiles = fg.sync(`${MASTER_DATA_PATH as string}/${gamespace}/Oracles/**/*.(yml|yaml)`, { onlyFiles: true }); - const oracleSetData = _.omitBy(concatWithYamlRefs(REFS_PATH, ...oracleSetFiles), (v,k) => k.startsWith("_")) as {[key: string]: YamlOracleSet}; + const oracleSetData = _.omitBy(concatWithYamlRefs(REFS_PATH, ...oracleSetFiles), (v,k) => k.startsWith("_")) as {[key: string]: YamlOracleSet}; const validation = validate(oracleSetData,SCHEMA_YAML) if (!validation.valid) { throw badJsonError(buildOracles,validation.errors.map(err => _.omit(err, "instance", "schema"))) diff --git a/dataforged-tools/src/utils/buildTruths.ts b/dataforged-tools/src/utils/builders/buildTruths.ts similarity index 83% rename from dataforged-tools/src/utils/buildTruths.ts rename to dataforged-tools/src/utils/builders/buildTruths.ts index f70dff2c6..76e6e6af0 100644 --- a/dataforged-tools/src/utils/buildTruths.ts +++ b/dataforged-tools/src/utils/builders/buildTruths.ts @@ -1,9 +1,9 @@ import { TruthBuilder, TruthClassicBuilder } from "@builders"; import { MASTER_DATA_PATH } from "@constants"; -import { Gamespace } from "@schema_json"; +import { Game } from "@schema"; import { buildLog } from "@utils/logging/buildLog.js"; -import { concatWithYamlRefs } from "@utils/process_yaml/concatWithYamlRefs.js"; -import type { YamlTruthRootClassic, YamlTruthRoot } from "@schema_yaml"; +import { concatWithYamlRefs } from "@utils/yaml/concatWithYamlRefs.js"; +import type { YamlTruthRootClassic, YamlTruthRoot } from "@schema"; import { existsSync } from "fs"; import _ from "lodash-es"; @@ -11,7 +11,7 @@ import _ from "lodash-es"; * It takes the YAML files that contain the setting truths, and builds a list of SettingTruth objects * @returns An array of SettingTruth objects. */ -export function buildTruths(gamespace: G) { +export function buildTruths(gamespace: G) { buildLog(buildTruths, "Building setting truths..."); const filePath = `${MASTER_DATA_PATH as string}/${gamespace}/Truths.yaml`; @@ -20,12 +20,12 @@ export function buildTruths(gamespace: G) { return {}; } switch (gamespace) { - case Gamespace.Ironsworn: { + case Game.Ironsworn: { const truthsRoot = concatWithYamlRefs(undefined, filePath) as YamlTruthRootClassic; const truths = _.mapValues(truthsRoot["Setting Truths"],item => new TruthClassicBuilder(item)); return truths; } - case Gamespace.Starforged: { + case Game.Starforged: { const truthsRoot = concatWithYamlRefs(undefined, filePath) as YamlTruthRoot; const truths = _.mapValues(truthsRoot["Setting Truths"],item => new TruthBuilder(item, truthsRoot.Source, gamespace)); buildLog(buildTruths, `Finished building ${truths.length} setting truth categories.`); diff --git a/dataforged-tools/src/utils/dataforgedStats.ts b/dataforged-tools/src/utils/dataforgedStats.ts index b5323b6d2..463aa711b 100644 --- a/dataforged-tools/src/utils/dataforgedStats.ts +++ b/dataforged-tools/src/utils/dataforgedStats.ts @@ -1,13 +1,13 @@ import type { OracleTableBuilder } from "@builders"; -import { Gamespace } from "@schema_json"; -import type { GameDataRoot, Ironsworn , Starforged } from "@schema_json"; +import { Game } from "@schema"; +import type { GameDataRoot, Ironsworn, Starforged } from "@schema"; import { JSONPath } from "jsonpath-plus"; import _ from "lodash-es"; /** * Extracts statistics on Ironsworn game data. */ -export function dataforgedStats(gamespace: G, { "Asset Types": assets, Encounters: encounters, "Move Categories": moves, "Oracle Sets": oracles, "Setting Truths": truths }: GameDataRoot) { +export function dataforgedStats(gamespace: G, { "Asset Types": assets, Encounters: encounters, "Move Categories": moves, "Oracle Sets": oracles, "Setting Truths": truths }: GameDataRoot) { return [ assetStats(assets), encounterStats(gamespace, encounters), @@ -48,17 +48,17 @@ export function oracleStats(oracles: GameDataRoot["Oracle Sets"]) { * @param gamespace * @param json */ -export function encounterStats(gamespace: G, json: GameDataRoot["Encounters"]) { +export function encounterStats(gamespace: G, json: GameDataRoot["Encounters"]) { let text: string; switch (gamespace) { - case Gamespace.Starforged: { + case Game.Starforged: { let encounterJson = json as Starforged['Encounters']; const encounters = Object.keys(encounterJson); const variants = _.flatMap(encounterJson, (enc) => enc.Variants) text = `${encounters.length} encounters (plus ${variants.length} encounter variants)`; } break; - case Gamespace.Ironsworn: { + case Game.Ironsworn: { let encounterJson = json as Ironsworn['Encounters']; const natures = Object.keys(encounterJson); diff --git a/dataforged-tools/src/utils/extractAncestors.ts b/dataforged-tools/src/utils/extractAncestors.ts index 3b902f67c..400c14aba 100644 --- a/dataforged-tools/src/utils/extractAncestors.ts +++ b/dataforged-tools/src/utils/extractAncestors.ts @@ -1,4 +1,4 @@ -import type { HasId } from "@schema_json"; +import type { HasId } from "@schema"; import {inRange} from "lodash-es" /** diff --git a/dataforged-tools/src/utils/getNameFromId.ts b/dataforged-tools/src/utils/getNameFromId.ts deleted file mode 100644 index c88d0d7c4..000000000 --- a/dataforged-tools/src/utils/getNameFromId.ts +++ /dev/null @@ -1,13 +0,0 @@ - -// TODO: generate fallback names for when it's unspecified - -import type { OracleTable } from "@schema_json"; - - -/** - * Gets the last item of a path-like oracle ID. - */ -export function getNameFromId(oracleId: OracleTable["$id"]): string { - const fragments = oracleId.split("/"); - return fragments[fragments.length - 1]; -} diff --git a/dataforged-tools/src/utils/md/renderMove.ts b/dataforged-tools/src/utils/md/renderMove.ts index 4b8ca8780..f3bf54c27 100644 --- a/dataforged-tools/src/utils/md/renderMove.ts +++ b/dataforged-tools/src/utils/md/renderMove.ts @@ -1,4 +1,4 @@ -import type { Move } from "@schema_json"; +import type { Move } from "@schema"; import _ from "lodash-es"; /** diff --git a/dataforged-tools/src/utils/md/renderMoveCategory.ts b/dataforged-tools/src/utils/md/renderMoveCategory.ts index 97ab6e120..6dc02b7b4 100644 --- a/dataforged-tools/src/utils/md/renderMoveCategory.ts +++ b/dataforged-tools/src/utils/md/renderMoveCategory.ts @@ -1,4 +1,4 @@ -import type { MoveCategory } from "@schema_json"; +import type { MoveCategory } from "@schema"; import { renderMove } from "@utils/md/renderMove.js"; import _ from "lodash-es"; diff --git a/dataforged-tools/src/utils/md/transformHyperlink.ts b/dataforged-tools/src/utils/md/transformHyperlink.ts index 6fd63a6bb..dd1b21f9a 100644 --- a/dataforged-tools/src/utils/md/transformHyperlink.ts +++ b/dataforged-tools/src/utils/md/transformHyperlink.ts @@ -1,5 +1,5 @@ -import type { OracleTableBuilder , OracleSetBuilder } from "@builders"; -import type { OracleSet } from "@schema_json"; +import type { OracleTableBuilder, OracleSetBuilder } from "@builders"; +import type { OracleSet } from "@schema"; import { findById } from "@utils/md/findById.js"; import _ from "lodash-es"; diff --git a/dataforged-tools/src/utils/object_transform/extractRowContent.ts b/dataforged-tools/src/utils/object_transform/extractRowContent.ts index a6d3ffac3..96f31ef2a 100644 --- a/dataforged-tools/src/utils/object_transform/extractRowContent.ts +++ b/dataforged-tools/src/utils/object_transform/extractRowContent.ts @@ -1,4 +1,4 @@ -import { YamlRowContentItem,YamlSimpleTableRow } from "@schema_yaml"; +import { YamlRowContentItem,YamlSimpleTableRow } from "@schema"; /** * Extracts the content of a Row array. In other words, it excludes the Floor and Ceiling numbers.s diff --git a/dataforged-tools/src/utils/object_transform/extractRowRolls.ts b/dataforged-tools/src/utils/object_transform/extractRowRolls.ts index 9115b3aa7..42aa6cfe9 100644 --- a/dataforged-tools/src/utils/object_transform/extractRowRolls.ts +++ b/dataforged-tools/src/utils/object_transform/extractRowRolls.ts @@ -1,4 +1,4 @@ -import { YamlRowContentItem, YamlRowRoll, YamlSimpleTableRow } from "@schema_yaml"; +import { YamlRowContentItem, YamlRowRoll, YamlSimpleTableRow } from "@schema"; import _ from "lodash-es"; /** diff --git a/dataforged-tools/src/utils/object_transform/inferSetsAttributes.ts b/dataforged-tools/src/utils/object_transform/inferSetsAttributes.ts index bb6f24859..6ea6a8e46 100644 --- a/dataforged-tools/src/utils/object_transform/inferSetsAttributes.ts +++ b/dataforged-tools/src/utils/object_transform/inferSetsAttributes.ts @@ -1,4 +1,4 @@ -import type { AttributeKey, Attribute, OracleTableRow, RowNullStub } from "@schema_json"; +import type { AttributeKey, Attribute, OracleTableRow, RowNullStub } from "@schema"; /** * Infers a SetsAttributes object for an Oracle from its table rows. diff --git a/dataforged-tools/src/utils/object_transform/pickInput.ts b/dataforged-tools/src/utils/object_transform/pickInput.ts index fa6cfa2ee..55439356d 100644 --- a/dataforged-tools/src/utils/object_transform/pickInput.ts +++ b/dataforged-tools/src/utils/object_transform/pickInput.ts @@ -1,8 +1,7 @@ - import { InputClockBuilder, InputNumberBuilder, InputSelectBuilder, InputTextBuilder } from "@builders"; -import type { Asset, AssetAbility } from "@schema_json"; -import { InputType } from "@schema_json"; -import type { YamlInputClock, YamlInputNumber, YamlInputSelect, YamlInputText, YamlInput } from "@schema_yaml"; +import type { Asset, AssetAbility } from "@schema"; +import { InputType } from "@schema"; +import type { YamlInputClock, YamlInputNumber, YamlInputSelect, YamlInputText, YamlInput } from "@schema"; /** * Infers the correct class for an YamlInput object and constructs it. diff --git a/dataforged-tools/src/utils/object_transform/templateOracle.ts b/dataforged-tools/src/utils/object_transform/templateOracle.ts index 7c232efc0..edf27ae09 100644 --- a/dataforged-tools/src/utils/object_transform/templateOracle.ts +++ b/dataforged-tools/src/utils/object_transform/templateOracle.ts @@ -1,4 +1,4 @@ -import { YamlOracleSet, YamlOracleSetTemplate, YamlOracleTable, YamlOracleTableTemplate, YamlTemplateBase } from "@schema_yaml"; +import { YamlOracleSet, YamlOracleSetTemplate, YamlOracleTable, YamlOracleTableTemplate, YamlTemplateBase } from "@schema"; import { buildLog } from "@utils/logging/buildLog.js"; import { replaceInAllStrings } from "@utils/object_transform/replaceInAllStrings.js"; diff --git a/dataforged-tools/src/utils/object_transform/templateOracleMetadata.ts b/dataforged-tools/src/utils/object_transform/templateOracleMetadata.ts index ab4d887f4..35e54f03b 100644 --- a/dataforged-tools/src/utils/object_transform/templateOracleMetadata.ts +++ b/dataforged-tools/src/utils/object_transform/templateOracleMetadata.ts @@ -1,4 +1,4 @@ -import { YamlOracleTable, YamlOracleTableTemplate } from "@schema_yaml"; +import { YamlOracleTable, YamlOracleTableTemplate } from "@schema"; import { replaceInAllStrings } from "@utils/object_transform/replaceInAllStrings.js"; import _ from "lodash-es"; diff --git a/dataforged-tools/src/utils/object_transform/templateOracleTable.ts b/dataforged-tools/src/utils/object_transform/templateOracleTable.ts index ed1930b8c..7a925d052 100644 --- a/dataforged-tools/src/utils/object_transform/templateOracleTable.ts +++ b/dataforged-tools/src/utils/object_transform/templateOracleTable.ts @@ -1,5 +1,5 @@ -import { YamlOracleTable, YamlSimpleTableRow, YamlTemplateTable } from "@schema_yaml"; +import { YamlOracleTable, YamlSimpleTableRow, YamlTemplateTable } from "@schema"; import { extractRowContent } from "@utils/object_transform/extractRowContent.js"; import { extractRowRolls } from "@utils/object_transform/extractRowRolls.js"; import _ from "lodash-es"; diff --git a/dataforged-tools/src/utils/simulation/IronswornRoll.ts b/dataforged-tools/src/utils/simulation/IronswornRoll.ts index 2ac7ec521..ebe41deb1 100644 --- a/dataforged-tools/src/utils/simulation/IronswornRoll.ts +++ b/dataforged-tools/src/utils/simulation/IronswornRoll.ts @@ -1,4 +1,4 @@ -import { MoveOutcome , RollType } from "@json_out"; +import { MoveOutcome, RollType } from "@json_out"; import { Die } from "@utils/simulation/Die.js"; import type { NumericOutcome, NumericOutcomes } from "@utils/simulation/NumericOutcomes.js"; import { MOMENTUM_MAX } from "@utils/simulation/PlayerCharacter.js"; diff --git a/dataforged-tools/src/utils/simulation/PlayerCharacter.ts b/dataforged-tools/src/utils/simulation/PlayerCharacter.ts index 7e0c347da..afe3082a5 100644 --- a/dataforged-tools/src/utils/simulation/PlayerCharacter.ts +++ b/dataforged-tools/src/utils/simulation/PlayerCharacter.ts @@ -1,10 +1,10 @@ -import type { PlayerConditionMeter , Stat } from "@json_out"; -import { MoveOutcome , RollType } from "@json_out"; +import type { PlayerConditionMeter, Stat } from "@json_out"; +import { MoveOutcome, RollType } from "@json_out"; import type { AppliesMoveEffect } from "@utils/simulation/AppliesMoveEffect.js"; AppliesMoveEffect import type { IIronswornRoll, IronswornRoll } from "@utils/simulation/IronswornRoll.js"; -import { ActionRoll , resolveIronswornRoll } from "@utils/simulation/IronswornRoll.js"; +import { ActionRoll, resolveIronswornRoll } from "@utils/simulation/IronswornRoll.js"; import type { OutcomeEffectHash, NumericOutcome, NumericOutcomeChoice, NumericOutcomes } from "@utils/simulation/NumericOutcomes.js"; -import { OutcomeEffectHash , OutcomeEffectType } from "@utils/simulation/NumericOutcomes.js"; +import { OutcomeEffectHash, OutcomeEffectType } from "@utils/simulation/NumericOutcomes.js"; import { ProgressTrackType } from "@utils/simulation/progressConstants.js"; import type { ProgressStrategy } from "@utils/simulation/ProgressStrategy.js"; import type { ProgressTrack } from "@utils/simulation/ProgressTrack.js"; diff --git a/dataforged-tools/src/utils/simulation/SceneChallenge.ts b/dataforged-tools/src/utils/simulation/SceneChallenge.ts index 9b61ca207..74cff9547 100644 --- a/dataforged-tools/src/utils/simulation/SceneChallenge.ts +++ b/dataforged-tools/src/utils/simulation/SceneChallenge.ts @@ -4,7 +4,7 @@ import { TensionClock } from "@utils/simulation/Clock.js"; import { MAX_SCORE } from "@utils/simulation/IronswornRoll.js"; import { FD_may20, finishTheScene, SaA_may20 } from "@utils/simulation/moveData.js"; import { OutcomeEffectType } from "@utils/simulation/NumericOutcomes.js"; -import type { NumericOutcomes , OutcomeEffectHash } from "@utils/simulation/NumericOutcomes.js"; +import type { NumericOutcomes, OutcomeEffectHash } from "@utils/simulation/NumericOutcomes.js"; import { PlayerCharacter } from "@utils/simulation/PlayerCharacter.js"; import { ProgressTrackType } from "@utils/simulation/progressConstants.js"; import { ProgressStrategy } from "@utils/simulation/ProgressStrategy.js"; diff --git a/dataforged-tools/src/utils/simulation/simulateRolls.ts b/dataforged-tools/src/utils/simulation/simulateRolls.ts index 7f7dc5d35..51af4e305 100644 --- a/dataforged-tools/src/utils/simulation/simulateRolls.ts +++ b/dataforged-tools/src/utils/simulation/simulateRolls.ts @@ -1,5 +1,5 @@ import type { ClockSegments } from "@json_out"; -import { ChallengeRank , MoveOutcome } from "@json_out"; +import { ChallengeRank , MoveOutcome } from "@json_out"; import { FD_ironsworn, FD_may20, SaA_ironsworn, SaA_may20 } from "@utils/simulation/moveData.js"; import type { NumericOutcomes } from "@utils/simulation/NumericOutcomes.js"; import { OutcomeEffectType } from "@utils/simulation/NumericOutcomes.js"; diff --git a/dataforged-tools/src/utils/sortIronsworn.ts b/dataforged-tools/src/utils/sortIronsworn.ts index e9001bf5c..9c3ce4290 100644 --- a/dataforged-tools/src/utils/sortIronsworn.ts +++ b/dataforged-tools/src/utils/sortIronsworn.ts @@ -1,4 +1,4 @@ -import { Source, SourceTitle } from "@schema_json"; +import { Source, SourceTitle } from "@schema"; const order: SourceTitle[] = [ SourceTitle.Starforged, diff --git a/dataforged-tools/src/utils/types/AttributeHash.ts b/dataforged-tools/src/utils/types/AttributeHash.ts index 056215e68..ae71f43a7 100644 --- a/dataforged-tools/src/utils/types/AttributeHash.ts +++ b/dataforged-tools/src/utils/types/AttributeHash.ts @@ -1,4 +1,4 @@ -import type { AttributeKey, AttributeMaster } from "@schema_json"; +import type { AttributeKey, AttributeMaster } from "@schema"; /** * @alpha */ diff --git a/dataforged-tools/src/utils/types/Partial.ts b/dataforged-tools/src/utils/types/Partial.ts index 2402794f9..cf39a0ef7 100644 --- a/dataforged-tools/src/utils/types/Partial.ts +++ b/dataforged-tools/src/utils/types/Partial.ts @@ -5,7 +5,7 @@ // : Partial // }>; -import { RequireKey } from "@schema_json"; +import { RequireKey } from "@schema"; /** * @public diff --git a/dataforged-tools/src/utils/validateColor.ts b/dataforged-tools/src/utils/validation/validateColor.ts similarity index 100% rename from dataforged-tools/src/utils/validateColor.ts rename to dataforged-tools/src/utils/validation/validateColor.ts diff --git a/dataforged-tools/src/utils/validation/validateTable.ts b/dataforged-tools/src/utils/validation/validateTable.ts index 82006c949..d945f1a9d 100644 --- a/dataforged-tools/src/utils/validation/validateTable.ts +++ b/dataforged-tools/src/utils/validation/validateTable.ts @@ -1,4 +1,4 @@ -import type { OracleTableRow } from "@schema_json"; +import type { OracleTableRow } from "@schema"; import { badJsonError } from "@utils/logging/badJsonError.js"; /** diff --git a/dataforged-tools/src/utils/process_yaml/concatWithYamlRefs.ts b/dataforged-tools/src/utils/yaml/concatWithYamlRefs.ts similarity index 82% rename from dataforged-tools/src/utils/process_yaml/concatWithYamlRefs.ts rename to dataforged-tools/src/utils/yaml/concatWithYamlRefs.ts index d8a269729..0a47e9aeb 100644 --- a/dataforged-tools/src/utils/process_yaml/concatWithYamlRefs.ts +++ b/dataforged-tools/src/utils/yaml/concatWithYamlRefs.ts @@ -1,7 +1,7 @@ import { REFS_PATH } from "@constants"; -import { loadYamlRefs } from "@utils/process_yaml/loadYamlRefs.js"; -import { loadYamlTemplates } from "@utils/process_yaml/loadYamlTemplates.js"; -import type { YamlWithRef } from "@schema_yaml"; +import { loadYamlRefs } from "@utils/yaml/loadYamlRefs.js"; +import { loadYamlTemplates } from "@utils/yaml/loadYamlTemplates.js"; +import type { YamlWithRef } from "@schema"; import yaml from "js-yaml"; import fs from "fs"; import _ from "lodash"; diff --git a/dataforged-tools/src/utils/process_yaml/jsonToYaml.ts b/dataforged-tools/src/utils/yaml/jsonToYaml.ts similarity index 100% rename from dataforged-tools/src/utils/process_yaml/jsonToYaml.ts rename to dataforged-tools/src/utils/yaml/jsonToYaml.ts diff --git a/dataforged-tools/src/utils/process_yaml/loadYamlRefs.ts b/dataforged-tools/src/utils/yaml/loadYamlRefs.ts similarity index 100% rename from dataforged-tools/src/utils/process_yaml/loadYamlRefs.ts rename to dataforged-tools/src/utils/yaml/loadYamlRefs.ts diff --git a/dataforged-tools/src/utils/process_yaml/loadYamlTemplates.ts b/dataforged-tools/src/utils/yaml/loadYamlTemplates.ts similarity index 100% rename from dataforged-tools/src/utils/process_yaml/loadYamlTemplates.ts rename to dataforged-tools/src/utils/yaml/loadYamlTemplates.ts diff --git a/src/types/index.d.ts b/src/types/index.d.ts index ddd7e79d9..c43f3c410 100644 --- a/src/types/index.d.ts +++ b/src/types/index.d.ts @@ -1,280 +1,94 @@ /** * @public */ -export declare enum AssetTypeName { - CommandVehicle = "Command Vehicle", - Companion = "Companion", - Deed = "Deed", - Module = "Module", - Path = "Path", - SupportVehicle = "Support Vehicle", - Ritual = "Ritual", - CombatTalent = "Combat Talent" -} - -/** - * @public - */ -export declare enum AttributeKey { - /** - * {@link Atmosphere} - */ - Atmosphere = "Atmosphere", - /** - * {@link Authority} - */ - Authority = "Authority", - /** - * {@link Behavior} - */ - Behavior = "Encountered Behavior", - /** - * {@link DerelictType} - */ - DerelictType = "Derelict Type", - /** - * {@link Disposition} - */ - Disposition = "Disposition", - /** - * {@link Dominion} - */ - Dominion = "Dominion", - /** - * {@link Environment} - */ - Environment = "Environment", - /** - * {@link FactionType} - */ - FactionType = "Faction Type", - /** - * {@link FringeGroup} - */ - FringeGroup = "Fringe Group", - /** - * {@link Guild} - */ - Guild = "Guild", - /** - * {@link Influence} - */ - Influence = "Influence", - /** - * {@link StarshipInitialContact} {@link SettlementInitialContact} - */ - InitialContact = "Initial Contact", - /** - * {@link Leadership} - */ - Leadership = "Leadership", - /** - * {@link Life} - */ - Life = "Life", - /** - * {@link Location} - */ - Location = "Location", - /** - * {@link LocationTheme} - */ - LocationTheme = "Location Theme", - /** - * {@link PlanetaryClass} - */ - PlanetaryClass = "Planetary Class", - /** - * {@link Population} - */ - Population = "Population", - /** - * {@link Region} - */ - Region = "Region", - /** - * {@link Role} - */ - Role = "Role", - /** - * {@link CreatureScale} - */ - CreatureScale = "Creature Scale", - /** - * {@link Zone} - */ - Zone = "Zone" -} - -/** - * @public - */ -export declare type BlacklistPartial = "Label"; - -/** - * Enumerates challenge ranks. - * @page 39 - * @public - */ -export declare enum ChallengeRank { - Troublesome = 1, - Dangerous = 2, - Formidable = 3, - Extreme = 4, - Epic = 5 -} - -/** - * @public - */ -export declare enum ClockSegments { - Four = 4, - Six = 6, - Eight = 8, - Ten = 10 -} - -/** - * See clocks (p. 234) for more information. - * @public - */ -export declare enum ClockType { - Tension = "Tension", - Campaign = "Campaign" -} - -/** - * @public - */ -export declare enum DelveCardType { - Theme = "Theme", - Domain = "Domain" -} - -/** - * @public - */ -export declare enum EncounterNatureIronsworn { - Ironlander = "Ironlander", - Firstborn = "firstborn", - Animal = "animal", - Beast = "beast", - Horror = "horror", - Anomaly = "anomaly" -} - -/** - * @public - */ -export declare enum EncounterNatureStarforged { - Creature = "Creature", - Horror = "Horror", - Human = "Human", - Machine = "Machine", - Monster = "Monster" -} - -/** - * @public - */ -export declare enum EncounterTags { - Vehicle = "vehicle" +export declare interface AlterMiss extends PartialDeep { } /** - * Base interface for *Ironsworn* and *Ironsworn: Starforged* game data. * @public */ -export declare interface GameDataRoot { - $schema?: string | undefined; - "Asset Types": { - [key: string]: IAssetType; - }; - "Encounters": { - [key: string]: IEncounterStarforged; - } | { - [key: string]: IEncounterNatureInfo; - }; - "Move Categories": { - [key: string]: IMoveCategory; - }; - "Oracle Sets": { - [key: string]: IOracleSet; - }; - "Setting Truths": { - [key: string]: ISettingTruth; - } | { - [key: string]: ISettingTruthClassic; - }; -} +declare interface AlterMiss_2 extends PartialDeep_2 {} /** * @public */ -export declare enum GameObjectType { - Derelict = "Derelict", - DerelictZone = "Derelict Zone", - Starship = "Starship", - Settlement = "Settlement", - Planet = "Planet", - PrecursorVault = "Precursor Vault", - Character = "Character", - Creature = "Creature", - Faction = "Faction" +export declare interface AlterMomentum extends HasId { + /** + * Information on how the player's momentum burn is altered. + */ + Burn?: AlterMomentumBurn[] | undefined; + /** + * Information on how the player's momentum reset is altered. + */ + Reset?: AlterMomentumReset[] | undefined; } /** - * Some might say that "Gamespace" is a terrible pun. To them, I reply: you'll never take me alive. * @public */ -export declare enum Gamespace { - Starforged = "Starforged", - Ironsworn = "Ironsworn" +declare interface AlterMomentum_2 extends HasId_2 { + /** + * Information on how the player's momentum burn is altered. + */ + Burn?: AlterMomentumBurn_2[] | undefined; + /** + * Information on how the player's momentum reset is altered. + */ + Reset?: AlterMomentumReset_2[] | undefined; } /** * @public */ -export declare interface IAlterMiss extends PartialDeep { +export declare interface AlterMomentumBurn extends HasId { + /** + * The trigger condition for altering the PC's momentum burn. + */ + Trigger: HasText; + /** + * The effect altering the PC's momentum burn. + */ + Effect: HasText; + Outcomes?: ("Strong Hit" | "Weak Hit")[] | undefined; } /** * @public */ -export declare interface IAlterMomentum extends IHasId { +declare interface AlterMomentumBurn_2 extends HasId_2 { /** - * Information on how the player's momentum burn is altered. + * The trigger condition for altering the PC's momentum burn. */ - Burn?: IAlterMomentumBurn[] | undefined; + Trigger: HasText_2; /** - * Information on how the player's momentum reset is altered. + * The effect altering the PC's momentum burn. */ - Reset?: IAlterMomentumReset[] | undefined; + Effect: HasText_2; + Outcomes?: ("Strong Hit" | "Weak Hit")[] | undefined; } /** * @public */ -export declare interface IAlterMomentumBurn extends IHasId { +export declare interface AlterMomentumReset extends HasId { /** - * The trigger condition for altering the PC's momentum burn. + * The trigger condition for altering the PC's momentum reset. */ - Trigger: IHasText; + Trigger: HasText; /** - * The effect altering the PC's momentum burn. + * The amount by which the PC's momentum reset is change. */ - Effect: IHasText; - Outcomes?: ("Strong Hit" | "Weak Hit")[] | undefined; + Value: number; } /** * @public */ -export declare interface IAlterMomentumReset extends IHasId { +declare interface AlterMomentumReset_2 extends HasId_2 { /** * The trigger condition for altering the PC's momentum reset. */ - Trigger: IHasText; + Trigger: HasText_2; /** * The amount by which the PC's momentum reset is change. */ @@ -285,7 +99,7 @@ export declare interface IAlterMomentumReset extends IHasId { * Describes alterations applied to moves by asset abilities. * @public */ -export declare interface IAlterMove extends StubExcept { +export declare interface AlterMove extends StubExcept { /** * @pattern ^(Starforged|Ironsworn)/Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/Alter_Moves/[1-9][0-9]*$ */ @@ -294,15 +108,15 @@ export declare interface IAlterMove extends StubExcept * The `$id`s of the move(s) to be altered. If it's `null`, it can alter *any* move to which its trigger conditions apply. If it's `undefined`, see `Extends` instead. * @nullable */ - Moves?: IMove["$id"][] | null | undefined; + Moves?: Move["$id"][] | null | undefined; /** * Some asset abilities alter/extend other asset abilities, specified as an array of IDs. Only changed properties are specified; other properties are the same. */ - Alters?: IAlterMove["$id"][] | undefined; + Alters?: AlterMove["$id"][] | undefined; /** - * The trigger required by the asset ability. If `undefined`, the move alteration applies to all uses of the specified moves, so long as they also meet any implicit asset requirements (fictional framing, `IAsset.Requirement`, not being Broken or Out of Action, etc). + * The trigger required by the asset ability. If `undefined`, the move alteration applies to all uses of the specified moves, so long as they also meet any implicit asset requirements (fictional framing, `Asset.Requirement`, not being Broken or Out of Action, etc). */ - Trigger?: IMoveTrigger | undefined; + Trigger?: MoveTrigger | undefined; /** * Markdown rules text describing added effects which apply *before* the move is rolled, such as adds. * @localize @@ -311,62 +125,164 @@ export declare interface IAlterMove extends StubExcept /** * Added rules text that applies on move outcomes. */ - Outcomes?: IAlterMoveOutcomes | undefined; + Outcomes?: AlterMoveOutcomes | undefined; } /** + * Describes alterations applied to moves by asset abilities. * @public */ -export declare interface IAlterMoveOutcomes extends Omit { - "Strong Hit"?: IAlterStrongHit | undefined; - "Weak Hit"?: IAlterWeakHit | undefined; - Miss?: IAlterMiss | undefined; +declare interface AlterMove_2 extends StubExcept_2 { + /** + * @pattern ^(Starforged|Ironsworn)/Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/Alter_Moves/[1-9][0-9]*$ + */ + $id: string; + /** + * The `$id`s of the move(s) to be altered. If it's `null`, it can alter *any* move to which its trigger conditions apply. If it's `undefined`, see `Extends` instead. + * @nullable + */ + Moves?: Move_2["$id"][] | null | undefined; + /** + * Some asset abilities alter/extend other asset abilities, specified as an array of IDs. Only changed properties are specified; other properties are the same. + */ + Alters?: AlterMove_2["$id"][] | undefined; + /** + * The trigger required by the asset ability. If `undefined`, the move alteration applies to all uses of the specified moves, so long as they also meet any implicit asset requirements (fictional framing, `Asset.Requirement`, not being Broken or Out of Action, etc). + */ + Trigger?: MoveTrigger_2 | undefined; + /** + * Markdown rules text describing added effects which apply *before* the move is rolled, such as adds. + * @localize + */ + Text?: string | undefined; + /** + * Added rules text that applies on move outcomes. + */ + Outcomes?: AlterMoveOutcomes_2 | undefined; } /** * @public */ -export declare interface IAlterStrongHit extends PartialDeep { +export declare interface AlterMoveOutcomes extends Omit { + "Strong Hit"?: AlterStrongHit | undefined; + "Weak Hit"?: AlterWeakHit | undefined; + Miss?: AlterMiss | undefined; } /** * @public */ -export declare interface IAlterWeakHit extends PartialDeep { +declare interface AlterMoveOutcomes_2 extends Omit { + "Strong Hit"?: AlterStrongHit_2 | undefined; + "Weak Hit"?: AlterWeakHit_2 | undefined; + Miss?: AlterMiss_2 | undefined; } /** - * An interface representing an *Ironsworn: Starforged* asset card. * @public */ -export declare interface IAsset extends IHasId, IHasDisplay, IHasSource, Partial, IHasTitle { +export declare interface AlterStrongHit extends PartialDeep { +} + +/** + * @public + */ +declare interface AlterStrongHit_2 extends PartialDeep_2 {} + +/** + * @public + */ +export declare interface AlterWeakHit extends PartialDeep { +} + +/** + * @public + */ +declare interface AlterWeakHit_2 extends PartialDeep_2 {} + +/** + * An interface representing an *Ironsworn: Starforged* asset card. + * @public + */ +export declare interface Asset extends HasId, HasDisplay, HasSource, Partial, HasTitle { + /** + * @example "Starforged/Assets/Path/Bounty_Hunter" + * @pattern ^(Starforged|Ironsworn)/Assets/[A-z_-]+/[A-z_-]+$ + */ + $id: string; + Display: Display; + /** + * Describes any states that the asset might have, such as "Broken". Some states may disable the asset entirely. + */ + States?: AssetState[] | undefined; + /** + * The ID of the asset's parent AssetType + * @example "Starforged/Assets/Path" + */ + "Asset Type": AssetType["$id"]; + /** + * Information on the asset's usage, such as whether its abilities are shared amongst the player characters. + */ + Usage: AssetUsage; + /** + * Details on what attachments (other assets) are accepted by this asset. + */ + Attachments?: AssetAttachment | undefined; + /** + * Data describing the Input controls that should be embedded in the card. Inputs embedded in specific asset abilities appear as keys of the corresponding ability object, instead. + */ + Inputs?: (InputNumber | InputClock | InputText | InputSelect)[] | undefined; + /** + * An optional markdown string representing the requirement text that appears at the top of some asset cards. + * @markdown + * @localize + * @example "If you wear your finely crafted set of personal armor..." + */ + Requirement?: string | undefined; + /** + * The asset's abilities. + */ + Abilities: [AssetAbility, AssetAbility, AssetAbility]; + /** + * Information on this asset's condition meter, if any. + */ + "Condition Meter"?: ConditionMeter | undefined; + Tags?: string[] | undefined; +} + +/** + * An interface representing an *Ironsworn: Starforged* asset card. + * @public + */ +declare interface Asset_2 extends HasId_2, HasDisplay_2, HasSource_2, Partial, HasTitle_2 { /** * @example "Starforged/Assets/Path/Bounty_Hunter" * @pattern ^(Starforged|Ironsworn)/Assets/[A-z_-]+/[A-z_-]+$ */ $id: string; - Display: IDisplay; + Display: Display_2; /** * Describes any states that the asset might have, such as "Broken". Some states may disable the asset entirely. */ - States?: IAssetState[] | undefined; + States?: AssetState_2[] | undefined; /** * The ID of the asset's parent AssetType * @example "Starforged/Assets/Path" */ - "Asset Type": IAssetType["$id"]; + "Asset Type": AssetType_2["$id"]; /** * Information on the asset's usage, such as whether its abilities are shared amongst the player characters. */ - Usage: IAssetUsage; + Usage: AssetUsage_2; /** * Details on what attachments (other assets) are accepted by this asset. */ - Attachments?: IAssetAttachment | undefined; + Attachments?: AssetAttachment_2 | undefined; /** * Data describing the Input controls that should be embedded in the card. Inputs embedded in specific asset abilities appear as keys of the corresponding ability object, instead. */ - Inputs?: (IInputText | IInputSelect)[] | undefined; + Inputs?: (InputNumber_2| InputClock_2| InputText_2| InputSelect_2)[] | undefined; /** * An optional markdown string representing the requirement text that appears at the top of some asset cards. * @markdown @@ -377,11 +293,12 @@ export declare interface IAsset extends IHasId, IHasDisplay, IHasSource, Partial /** * The asset's abilities. */ - Abilities: [IAssetAbility, IAssetAbility, IAssetAbility]; + Abilities: [AssetAbility_2, AssetAbility_2, AssetAbility_2]; /** * Information on this asset's condition meter, if any. */ - "Condition Meter"?: IConditionMeter | undefined; + "Condition Meter"?: ConditionMeter_2 | undefined; + Tags?: string[] | undefined; } @@ -389,7 +306,46 @@ export declare interface IAsset extends IHasId, IHasDisplay, IHasSource, Partial * Represents one of an asset's three abilities. * @public */ -export declare interface IAssetAbility extends IHasId, IHasText, Partial { +export declare interface AssetAbility extends HasId, HasText, Partial { + /** + * @pattern ^(Starforged|Ironsworn)/Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]$ + */ + $id: string; + /** + * Ironsworn companion assets provide labels for their abilities. Starforged asset abilities do not have labels. + */ + Label?: string | undefined; + /** + * New moves added by this asset ability. + */ + Moves?: Move[] | undefined; + /** + * User inputs (text, clocks, etc) associated with this asset ability. + */ + Inputs?: (InputNumber | InputClock | InputText | InputSelect)[] | undefined; + /** + * Information on how this ability alters moves when enabled. + */ + "Alter Moves"?: AlterMove[] | undefined; + /** + * Information on how this ability alters its parent asset when enabled. + */ + "Alter Properties"?: AssetAlterProperties | undefined; + /** + * Information on how this ability alters its owner's momentum (triggers an effect on burn, on reset, etc) + */ + "Alter Momentum"?: AlterMomentum | undefined; + /** + * Whether the asset ability is enabled or not. In most cases, the first asset ability defaults to 'true' and the others to 'false'. If none of an asset's abilities are set to 'true', the player can pick which the ability they start with when purchasing the asset. + */ + Enabled: boolean; +} + +/** + * Represents one of an asset's three abilities. + * @public + */ +declare interface AssetAbility_2 extends HasId_2, HasText_2, Partial { /** * @pattern ^(Starforged|Ironsworn)/Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]$ */ @@ -401,23 +357,23 @@ export declare interface IAssetAbility extends IHasId, IHasText, Partial>, "Abilities" | "Attachments" | "Condition Meter" | "$id">, HasId { + $id: string; + Abilities?: AssetAlterPropertiesAbility[] | undefined; + Attachments?: AssetAlterPropertiesAttachment | undefined; + "Condition Meter"?: AssetAlterPropertiesConditionMeter | undefined; + States?: AssetState[] | undefined; +} + +/** + * Describes changes that an asset ability makes to its parent asset when active. Any properties with object values should be merged recursively. + * + * @example An `AssetAlterProperties` that would set `Asset["Condition Meter"].Max` to 3, and leave its other properties unchanged: * ```json * { "Condition Meter": { "Max": 3 } } * ``` * @public */ -export declare interface IAssetAlterProperties extends Omit>, "Abilities" | "Attachments" | "Condition Meter" | "$id">, IHasId { +declare interface AssetAlterProperties_2 extends Omit>,"Abilities"| +"Attachments"|"Condition Meter"|"$id">, HasId_2 { $id: string; - Abilities?: IAssetAlterPropertiesAbility[] | undefined; - Attachments?: IAssetAlterPropertiesAttachment | undefined; - "Condition Meter"?: IAssetAlterPropertiesConditionMeter | undefined; - States?: IAssetState[] | undefined; + Abilities?: AssetAlterPropertiesAbility_2[] | undefined; + Attachments?: AssetAlterPropertiesAttachment_2 | undefined; + "Condition Meter"?: AssetAlterPropertiesConditionMeter_2 | undefined; + States?: AssetState_2[] | undefined; +} + +/** + * @public + */ +export declare interface AssetAlterPropertiesAbility extends Partial { } /** * @public */ -export declare interface IAssetAlterPropertiesAbility extends Partial { +declare interface AssetAlterPropertiesAbility_2 extends Partial {} + +/** + * @public + */ +export declare interface AssetAlterPropertiesAttachment extends Partial { } /** * @public */ -export declare interface IAssetAlterPropertiesAttachment extends Partial { +declare interface AssetAlterPropertiesAttachment_2 extends Partial {} + +/** + * @public + */ +export declare interface AssetAlterPropertiesConditionMeter extends Partial { } /** * @public */ -export declare interface IAssetAlterPropertiesConditionMeter extends Partial { +declare interface AssetAlterPropertiesConditionMeter_2 extends Partial {} + +/** + * Details which assets are valid attachments. The most prominent example in *Ironsworn: Starforged* is the STARSHIP asset (`Starship/Assets/Command_Vehicle/Starship`); Rover (`Starship/Assets/Support_Vehicle/Rover`) also has an elective ability that adds this property. + * @public + */ +export declare interface AssetAttachment { + /** + * The type of asset that this asset accepts as attachments. + */ + "Asset Types": AssetType["$id"][]; + /** + * The maximum number of attached assets accepted by this asset. If undefined or null, there is no maximum. + * @nullable + */ + "Max": number | null; } /** * Details which assets are valid attachments. The most prominent example in *Ironsworn: Starforged* is the STARSHIP asset (`Starship/Assets/Command_Vehicle/Starship`); Rover (`Starship/Assets/Support_Vehicle/Rover`) also has an elective ability that adds this property. * @public */ -export declare interface IAssetAttachment { +declare interface AssetAttachment_2 { /** * The type of asset that this asset accepts as attachments. */ - "Asset Types": IAssetType["$id"][]; + "Asset Types": AssetType_2["$id"][]; /** * The maximum number of attached assets accepted by this asset. If undefined or null, there is no maximum. * @nullable @@ -481,7 +486,41 @@ export declare interface IAssetAttachment { * States are frequently toggled on and off by players; for real-world gameplay, this is generally represented by flipping the card over. A checkbox or other on/off toggle might serve the same function in a digital implementation. * @public */ -export declare interface IAssetState extends IHasLabel { +export declare interface AssetState extends HasLabel { + /** + * A string label for the state. + * @example "broken" + * @localize + * @pattern ^[a-z].+$ + */ + Label: string; + /** + * Whether this state is currently enabled. + */ + Enabled: boolean; + /** + * Whether this state should disable the entire asset when `AssetState.Enabled === true` + */ + "Disables asset": boolean; + /** + * Whether this state counts as an Impact for the asset's owner. + * + * Note that for vehicles, this shouldn't be applied automatically unless your implementation has some way of telling which vehicle the PC is currently using. + */ + "Impact": boolean; + /** + * Whether or not this state is permanent. + */ + Permanent: boolean; +} + +/** + * Describes a possible state for an asset, like the "broken" status for certain assets (mainly Modules in *Starforged*). + * + * States are frequently toggled on and off by players; for real-world gameplay, this is generally represented by flipping the card over. A checkbox or other on/off toggle might serve the same function in a digital implementation. + * @public + */ +declare interface AssetState_2 extends HasLabel_2 { /** * A string label for the state. * @example "broken" @@ -494,7 +533,7 @@ export declare interface IAssetState extends IHasLabel { */ Enabled: boolean; /** - * Whether this state should disable the entire asset when `IAssetState.Enabled === true` + * Whether this state should disable the entire asset when `AssetState.Enabled === true` */ "Disables asset": boolean; /** @@ -507,13 +546,43 @@ export declare interface IAssetState extends IHasLabel { * Whether or not this state is permanent. */ Permanent: boolean; + /** + * Information on how this state is displayed. + */ + // Display: {"Show on meter": boolean}; + // TODO: figure out if & how this could be integrated with impact info +} + +/** + * Represents an Asset Type such as Command Vehicle, Companion, or Path, and serves as a container for all assets of that type. + * @public + */ +export declare interface AssetType extends HasId, HasDescription, HasDisplay, HasSource, HasTitle, Partial { + /** + * @example "Ironsworn/Assets/Ritual" + * @example "Starforged/Assets/Command_Vehicle" + * @pattern ^(Starforged|Ironsworn)/Assets/[A-z_-]+$ + */ + $id: string; + /** + * The assets that belong to this asset type. + */ + Assets: Asset[]; + /** + * @example "Ritual" + * @example "Command Vehicle" + * @localize + */ + Title: Title; + Display: Display; + Usage: AssetUsage; } /** * Represents an Asset Type such as Command Vehicle, Companion, or Path, and serves as a container for all assets of that type. * @public */ -export declare interface IAssetType extends IHasId, IHasDescription, IHasDisplay, IHasSource, IHasTitle, Partial { +declare interface AssetType_2 extends HasId_2, HasDescription_2, HasDisplay_2, HasSource_2, HasTitle_2, Partial{ /** * @example "Ironsworn/Assets/Ritual" * @example "Starforged/Assets/Command_Vehicle" @@ -523,21 +592,50 @@ export declare interface IAssetType extends IHasId, IHasDescription, IHasDisplay /** * The assets that belong to this asset type. */ - Assets: IAsset[]; + Assets: Asset_2[]; + /** * @example "Ritual" * @example "Command Vehicle" * @localize */ - Title: ITitle; - Display: IDisplay; - Usage: IAssetUsage; + Title: Title_2; + Display: Display_2; + Usage: AssetUsage_2; +} + +/** + * @public + */ +export declare enum AssetTypeName { + CommandVehicle = "Command Vehicle", + Companion = "Companion", + Deed = "Deed", + Module = "Module", + Path = "Path", + SupportVehicle = "Support Vehicle", + Ritual = "Ritual", + CombatTalent = "Combat Talent" +} + +/** + * @public + */ +export declare interface AssetUsage { + /** + * Whether the asset's abilities are shared with Allies. + * + * If set to `true`, the asset's abilities can be invoked by **any** player character; if your app facilitates co-op or guided play, consider how you might expose these abilities to players other than the asset's owner. + * + * Defaults to `true` for Command Vehicle, Support Vehicle, and Module assets. + */ + Shared: boolean; } /** * @public */ -export declare interface IAssetUsage { +declare interface AssetUsage_2 { /** * Whether the asset's abilities are shared with Allies. * @@ -558,2256 +656,4097 @@ export declare interface IAssetUsage { * @see {@link AttributeKey}, {@link Atmosphere}, {@link Authority}, {@link Behavior}, {@link CreatureScale}, {@link DerelictType}, {@link Disposition}, {@link Dominion}, {@link Environment}, {@link FactionType}, {@link FringeGroup}, {@link Guild}, {@link Influence}, {@link Leadership}, {@link Life}, {@link Location}, {@link LocationTheme}, {@link PlanetaryClass}, {@link Population}, {@link Region}, {@link Role}, {@link SettlementInitialContact}, {@link StarshipInitialContact}, {@link Zone} */ -export declare interface IAttribute { +export declare interface Attribute { Key: AttributeKey; Value?: string | undefined; } /** + * Describes an attribute key/value pair, set by an oracle row. The key-value pair should be set on any game object for which that row is generated. + * + * Attributes exist to describe prerequisites that might be fulfilled by more than one table, that don't exist on tables at all, or that a generated game object might want to 'force' as one of it's roll results. + * + * See documentation for a list of available values. * @public + * @see {@link AttributeKey}, {@link Atmosphere}, {@link Authority}, {@link Behavior}, {@link CreatureScale}, {@link DerelictType}, {@link Disposition}, {@link Dominion}, {@link Environment}, {@link FactionType}, {@link FringeGroup}, {@link Guild}, {@link Influence}, {@link Leadership}, {@link Life}, {@link Location}, {@link LocationTheme}, {@link PlanetaryClass}, {@link Population}, {@link Region}, {@link Role}, {@link SettlementInitialContact}, {@link StarshipInitialContact}, {@link Zone} + */ -export declare interface IAttributeChoices { - Key: AttributeKey; - Values?: string[] | undefined; +declare interface Attribute_2 { + Key: AttributeKey_2; + Value?: string | undefined; } /** - * Interface representing a condition meter such as health, spirit, supply. * @public */ -export declare interface IConditionMeter extends IMeter { - /** - * @pattern ^(Starforged|Ironsworn)/Assets/[A-z_-]+/[A-z_-]+/Condition_Meter$ - */ - $id: string; - /** - * @default 0 - */ - Min: number; - /** - * The conditions that can apply to this meter. - */ - Conditions: MeterCondition[]; - /** - * Certain common types of asset meters, like companion health and vehicle integrity, are collectively referenced by {@link IMoveTriggerOptionAction.Using}. The array will include an appropriate alias if that is the case. - */ - Aliases?: MeterAlias[] | undefined; +export declare interface AttributeChoices { + Key: AttributeKey; + Values?: string[] | undefined; } /** * @public */ -export declare interface ICustomStat extends IHasId, IHasLabel { - /** - * @pattern ^(Starforged|Ironsworn)/Moves/([A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[0-9]+)/[A-z_-]+/Trigger/Options/[0-9]+/Custom_stat$ - */ - $id: string; - Options: ICustomStatOption[]; +declare interface AttributeChoices_2 { + Key: AttributeKey_2; + Values?: string[] | undefined; } /** * @public */ -export declare interface ICustomStatOption extends IHasId, IHasLabel { +export declare enum AttributeKey { /** - * @pattern ^(Starforged|Ironsworn)/Moves/([A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[0-9]+)/[A-z_-]+/Trigger/Options/[0-9]+/Custom_stat/[A-z_-]+$ + * {@link Atmosphere} */ - $id: string; + Atmosphere = "Atmosphere", /** - * The numeric value to be used as +stat when making an Action Roll. + * {@link Authority} */ - Value: number; - Label: string; -} - -/** - * Basic interface for elements common to "cyclopedia" style pages, such as Regions (*Ironsworn*) and Encounters *(Ironsworn* and *Starforged*) - * @public - */ -export declare interface ICyclopediaEntry extends IHasId, IHasDisplay, IHasDescription, IHasSource, Partial, IHasTitle { + Authority = "Authority", /** - * @pattern ^(Starforged|Ironsworn)/([A-z_-]+/)+$ + * {@link Behavior} */ - $id: string; - Tags?: string[] | undefined; + Behavior = "Encountered Behavior", /** - * @markdown - * @localize + * {@link DerelictType} */ - Features?: string[] | undefined; -} - -/** - * Interface describing common characteristics of themes and domains from *Ironsworn: Delve*. - * - * Together, the theme and domain help you visualize your exploration of the site, and provide oracle tables for features and dangers. - * - * @see IDelveTheme - * @see IDelveDomain - * @public - */ -export declare interface IDelveCard extends IHasSource, IHasSummary, IHasDescription, IHasId, IHasTitle { + DerelictType = "Derelict Type", /** - * @pattern ^Ironsworn/(Themes|Domains)/[A-z_-]+$ + * {@link Disposition} */ - $id: string; + Disposition = "Disposition", /** - * Indicates whether this is a site Theme or a site Domain. + * {@link Dominion} */ - Type: DelveCardType; + Dominion = "Dominion", /** - * The summary text that appears immediately below the card's title. For best rendering, ensure that it fits on a single line. - * @markdown - * @localize + * {@link Environment} */ - Summary: string; + Environment = "Environment", /** - * An extended description for this card that doesn't appear on the card itself. For 'canonical' Themes and Domains, these are presented on p. 84 - 93 of *Ironsworn: Delve*. - * - * Most are two paragraphs long, approximately 90 words (600 characters); the longest 'canonical' description clocks in at 98 words (619 characters). Allot space accordingly. - * - * @markdown - * @localize + * {@link FactionType} */ - Description: string; + FactionType = "Faction Type", /** - * The Features contributed by this card. Effectively a 'partial' oracle table; combine with the features of another card to complete it. + * {@link FringeGroup} */ - Features: IRow[]; + FringeGroup = "Fringe Group", /** - * The Dangers contributed by this card. Effectively a 'partial' oracle table; combine with the dangers of another card and the Reveal a Danger move oracle table to complete it. + * {@link Guild} */ - Dangers: IRow[]; -} - -/** - * Interface describing a delve site domain. - * - * The **domain** represents the physical characteristics of the site—the terrain or architecture you must traverse. - * - * Together, the theme and domain help you visualize your exploration of the site, and provide oracle tables for features and dangers. - * - * @see IDelveTheme - * @public - */ -export declare interface IDelveDomain extends IDelveCard { + Guild = "Guild", /** - * @pattern ^Ironsworn/Domains/[A-z_-]+$ + * {@link Influence} */ - $id: string; - Type: DelveCardType.Domain; + Influence = "Influence", /** - * The Features contributed by this Domain card. Effectively a 'partial' oracle table; combine with the features of a Theme card to complete it. + * {@link StarshipInitialContact} {@link SettlementInitialContact} */ - Features: [ - IRow & { - Floor: 21; - Ceiling: 43; - }, - IRow & { - Floor: 44; - Ceiling: 56; - }, - IRow & { - Floor: 57; - Ceiling: 64; - }, - IRow & { - Floor: 65; - Ceiling: 68; - }, - IRow & { - Floor: 69; - Ceiling: 72; - }, - IRow & { - Floor: 73; - Ceiling: 76; - }, - IRow & { - Floor: 77; - Ceiling: 80; - }, - IRow & { - Floor: 81; - Ceiling: 84; - }, - IRow & { - Floor: 85; - Ceiling: 88; - }, - IRow & { - Floor: 89; - Ceiling: 98; - Result: "Something unusual or unexpected"; - }, - IRow & { - Floor: 99; - Ceiling: 99; - Result: "You transition into a new theme"; - }, - IRow & { - Floor: 100; - Ceiling: 100; - Result: "You transition into a new domain"; - } - ]; + InitialContact = "Initial Contact", /** - * The Dangers contributed by this Domain card. Effectively a 'partial' oracle table; combine with the dangers of Theme and the Reveal a Danger move oracle table to complete it. + * {@link Leadership} */ - Dangers: [ - IRow & { - Floor: 31; - Ceiling: 33; - }, - IRow & { - Floor: 34; - Ceiling: 36; - }, - IRow & { - Floor: 37; - Ceiling: 39; - }, - IRow & { - Floor: 40; - Ceiling: 42; - }, - IRow & { - Floor: 43; - Ceiling: 45; - } - ]; -} - -/** - * Represents a Rarity (described in Ironsworn: Delve) - * @public - */ -export declare interface IDelveRarity extends IHasTitle, IHasDisplay, IHasSource, IHasDescription { + Leadership = "Leadership", /** - * @minimum 3 - * @maximum 5 + * {@link Life} */ - "XP Cost": number; + Life = "Life", /** - * The ID of the asset, to which this rarity applies its effects. - * @see {@link IAsset.$id} + * {@link Location} */ - Asset: IAsset["$id"]; -} - -/** - * Interface describing a delve site theme. - * - * The **theme** represents the condition or state of the site, and indicates the kinds of denizens and threats you might find there. - * - * Together, the theme and domain help you visualize your exploration of the site, and provide oracle tables for features and dangers. - * - * @see IDelveDomain - * @public - */ -export declare interface IDelveTheme extends IDelveCard { + Location = "Location", /** - * @pattern ^Ironsworn/Themes/[A-z_-]+$ + * {@link LocationTheme} */ - $id: string; - Type: DelveCardType.Theme; + LocationTheme = "Location Theme", /** - * The Features contributed by this Theme card. Effectively a 'partial' oracle table; combine with the features of a Domain card to complete it. + * {@link PlanetaryClass} */ - Features: [ - IRow & { - Floor: 1; - Ceiling: 4; - }, - IRow & { - Floor: 5; - Ceiling: 8; - }, - IRow & { - Floor: 9; - Ceiling: 12; - }, - IRow & { - Floor: 13; - Ceiling: 16; - }, - IRow & { - Floor: 17; - Ceiling: 20; - } - ]; + PlanetaryClass = "Planetary Class", /** - * The Dangers contributed by this Theme card. Effectively a 'partial' oracle table; combine with the dangers of Domain and the Reveal a Danger move oracle table to complete it. + * {@link Population} */ - Dangers: [ - IRow & { - Floor: 1; - Ceiling: 5; - }, - IRow & { - Floor: 6; - Ceiling: 10; - }, - IRow & { - Floor: 11; - Ceiling: 12; - }, - IRow & { - Floor: 13; - Ceiling: 14; - }, - IRow & { - Floor: 15; - Ceiling: 16; - }, - IRow & { - Floor: 17; - Ceiling: 18; - }, - IRow & { - Floor: 19; - Ceiling: 20; - }, - IRow & { - Floor: 21; - Ceiling: 22; - }, - IRow & { - Floor: 23; - Ceiling: 24; - }, - IRow & { - Floor: 25; - Ceiling: 26; - }, - IRow & { - Floor: 27; - Ceiling: 28; - }, - IRow & { - Floor: 29; - Ceiling: 30; - } - ]; -} - -/** - * Interface for data relevant to an item's display/rendering. - * @public - */ -export declare interface IDisplay { + Population = "Population", /** - * A URL pointing to a single SVG icon. - * @pattern ^img/vector/[A-z-_0-9/]+\.svg$ + * {@link Region} */ - Icon?: string | undefined; + Region = "Region", /** - * An array of URLs pointing to one or more WEBP images. - * @pattern ^img/raster/[A-z-_0-9/]+\.webp$ + * {@link Role} */ - Images?: string[] | undefined; + Role = "Role", /** - * A hex color associated with this item, for use as e.g. an accent color in its display. - * @pattern ^#[A-f0-9][A-f0-9][A-f0-9][A-f0-9][A-f0-9][A-f0-9]$ + * {@link CreatureScale} */ - Color?: string | undefined; + CreatureScale = "Creature Scale", + /** + * {@link Zone} + */ + Zone = "Zone" } /** - * Represents a full (i.e. not a stub/variant) encounter entry in *Ironsworn* or *Ironsworn: Starforged*. * @public */ -export declare interface IEncounter extends IEncounterBase { - Features: string[]; - Drives: string[]; - Tactics: string[]; - "Quest Starter": string; - "Your Truth"?: string | undefined; -} - -/** - * Interface common to Encounter entries in *Ironsworn* and *Ironsworn: Starforged*, plus 'stubs' like IEncounterVariant. - * @see {@link IEncounter}, {@link IEncounterVariant} - * @public - */ -export declare interface IEncounterBase extends ICyclopediaEntry { +declare enum AttributeKey_2 { /** - * @example "Starforged/Encounters/Chiton" - * @pattern ^(Starforged|Ironsworn)/Encounters/[A-z_-]+$ + * {@link Atmosphere} */ - $id: string; + Atmosphere="Atmosphere", /** - * @example "Monster" - * @localize + * {@link Authority} */ - Nature: EncounterNatureStarforged | EncounterNatureIronsworn; - Display: IDisplay; + Authority="Authority", /** - * @example "Insectoid horde" - * @markdown - * @localize + * {@link Behavior} */ - Summary?: string | undefined; - Tags?: EncounterTags[] | undefined; - Rank: ChallengeRank; + Behavior="Encountered Behavior", /** - * @markdown - * @localize + * {@link DerelictType} */ - Features?: string[] | undefined; + DerelictType="Derelict Type", /** - * @markdown - * @localize + * {@link Disposition} */ - Drives?: string[] | undefined; + Disposition="Disposition", /** - * @markdown - * @localize + * {@link Dominion} */ - Tactics?: string[] | undefined; + Dominion="Dominion", /** - * Ironsworn, p. 135: "Some NPCs include a question for you to answer. This is an opportunity to customize the NPC to your vision of the Ironlands. You can do this as you define your world or discover through play. Truths may represent an absolute fact, or merely something the people of your world believe." - * - * Only present in Ironsworn encounters. - * @markdown - * @localize + * {@link Environment} */ - "Your Truth"?: string | undefined; + Environment="Environment", + /** + * {@link FactionType} + */ + FactionType="Faction Type", + /** + * {@link FringeGroup} + */ + FringeGroup="Fringe Group", + /** + * {@link Guild} + */ + Guild="Guild", + /** + * {@link Influence} + */ + Influence="Influence", + /** + * {@link StarshipInitialContact} {@link SettlementInitialContact} + */ + InitialContact="Initial Contact", + /** + * {@link Leadership} + */ + Leadership="Leadership", + /** + * {@link Life} + */ + Life="Life", + /** + * {@link Location} + */ + Location="Location", + /** + * {@link LocationTheme} + */ + LocationTheme="Location Theme", + /** + * {@link PlanetaryClass} + */ + PlanetaryClass="Planetary Class", + /** + * {@link Population} + */ + Population="Population", + /** + * {@link Region} + */ + Region="Region", + /** + * {@link Role} + */ + Role="Role", + /** + * {@link CreatureScale} + */ + CreatureScale="Creature Scale", + /** + * {@link Zone} + */ + Zone="Zone", } /** - * Represents an *Ironsworn* Encounter entry. * @public */ -export declare interface IEncounterIronsworn extends IEncounter { - /** - * @pattern ^(Starforged|Ironsworn)/Encounters/[A-z_-]+/[A-z_-]+$ - */ - $id: string; - Nature: EncounterNatureIronsworn; - "Your Truth"?: string | undefined; - Summary?: string | undefined; -} +export declare type BlacklistPartial = "Label"; /** - * Represents the metadata describing an *Ironsworn* encounter's nature; used as a category to contain all Encounters of that type. + * Enumerates challenge ranks. + * @page 39 * @public */ -export declare interface IEncounterNatureInfo extends IHasDescription, IHasSource, IHasId, IHasDisplay, IHasSummary, IHasTitle { +export declare enum ChallengeRank { /** - * @pattern ^Ironsworn/Encounters/[A-z_-]+$ + * Troublesome */ - $id: string; - Encounters: IEncounterIronsworn[]; - Summary: string; - Display: IDisplay; + Troublesome = 1, + /** + * Dangerous + */ + Dangerous = 2, + /** + * Formidable + */ + Formidable = 3, + /** + * Extreme + */ + Extreme = 4, + /** + * Epic + */ + Epic = 5 } /** - * Represents an *Ironsworn: Starforged* Encounter entry. + * Enumerates challenge ranks. + * @page 39 * @public */ -export declare interface IEncounterStarforged extends IEncounter { +declare enum ChallengeRank_2 { /** - * @pattern ^Starforged/Encounters/[A-z_-]+$ + * Troublesome */ - $id: string; - Nature: EncounterNatureStarforged; - Summary: string; - Variants?: IEncounterVariant[] | undefined; + Troublesome = 1, + /** + * Dangerous + */ + Dangerous = 2, + /** + * Formidable + */ + Formidable = 3, + /** + * Extreme + */ + Extreme = 4, + /** + * Epic + */ + Epic = 5 } /** - * Represents a variant encounter 'stubs' included with a parent encounter in *Ironsworn: Starforged*. * @public */ -export declare interface IEncounterVariant extends StubBy { - /** - * @pattern ^Starforged/Encounters/[A-z_-]+/[A-z_-]+$ - */ - $id: string; - "Variant of": IEncounterStarforged["$id"]; +export declare enum ClockSegments { + Four = 4, + Six = 6, + Eight = 8, + Ten = 10 } /** - * Describes a game object, with optional required parameters (for example, a specific Location result). * @public */ -export declare interface IGameObject { - "Object type": GameObjectType; - Requires?: IRequirements | undefined; +declare enum ClockSegments_2 { + Four = 4, + Six = 6, + Eight = 8, + Ten = 10 } /** - * Interface for items with aliases. + * See clocks (p. 234) for more information. * @public */ -export declare interface IHasAliases { - /** - * Alternate names for this item, including: names it had earlier in development that have since changed, alternate spellings/punctuation, common misspellings, and so on. - */ - Aliases: string[]; +export declare enum ClockType { + Tension = "Tension", + Campaign = "Campaign" } /** - * Interface for items with a user-facing markdown description, consisting of one or more paragraphs. + * See clocks (p. 234) for more information. * @public */ -export declare interface IHasDescription extends IHasId { - /** - * A user-facing markdown description of the item, consisting of one or more paragraphs. - * @markdown - * @localize - */ - Description: string; +declare enum ClockType_2 { + Tension = "Tension", + Campaign = "Campaign" } /** - * Interface for items with rendering information. + * Interface representing a condition meter such as health, spirit, supply. * @public */ -export declare interface IHasDisplay { +export declare interface ConditionMeter extends Meter { /** - * Data relevant to this item's display/rendering. + * @pattern ^(Starforged|Ironsworn)/Assets/[A-z_-]+/[A-z_-]+/Condition_Meter$ + */ + $id: string; + /** + * @default 0 + */ + Min: number; + /** + * @default 5 */ - Display: IDisplay; + Max: number; + /** + * The conditions that can apply to this meter. + */ + Conditions: MeterCondition[]; + /** + * Certain common types of asset meters, like companion health and vehicle integrity, are collectively referenced by {@link MoveTriggerOptionAction.Using}. The array will include an appropriate alias if that is the case. + */ + Aliases?: MeterAlias[] | undefined; } /** - * Interface for items that have associated game objects. + * Interface representing a condition meter such as health, spirit, supply. * @public */ -export declare interface IHasGameObjects { +declare interface ConditionMeter_2 extends Meter_2 { /** - * Any game objects that are explicitly pointed to by the original text. For most implementations, it is *not* recommended to generate them automatically - see "Peeling the Onion", p. 293. + * @pattern ^(Starforged|Ironsworn)/Assets/[A-z_-]+/[A-z_-]+/Condition_Meter$ + */ + $id: string; + /** + * @default 0 */ - "Game objects": IGameObject[]; + Min: number; + /** + * @default 5 + */ + Max: number; + /** + * The conditions that can apply to this meter. + */ + Conditions: MeterCondition_2[]; + /** + * Certain common types of asset meters, like companion health and vehicle integrity, are collectively referenced by {@link MoveTriggerOptionAction.Using}. The array will include an appropriate alias if that is the case. + */ + Aliases?: MeterAlias_2[] | undefined; } /** - * For elements with unique string IDs. Any object that contains a localizable user-facing string *must* have an ID, so several interfaces inherit this. * @public */ -export declare interface IHasId { +export declare interface CustomStat extends HasId, HasLabel { /** - * The item's unique string ID. Any object that contains a localizable user-facing string *must* have this key. - * @pattern ^(Starforged|Ironsworn)/[0-9A-z_/-]+$ + * @pattern ^(Starforged|Ironsworn)/Moves/([A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[0-9]+)/[A-z_-]+/Trigger/Options/[0-9]+/Custom_stat$ */ $id: string; + Options: CustomStatOption[]; } /** * @public */ -export declare interface IHasLabel extends IHasId { +declare interface CustomStat_2 extends HasId_2, HasLabel_2 { /** - * The user-facing text label of this item. - * @localize + * @pattern ^(Starforged|Ironsworn)/Moves/([A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[0-9]+)/[A-z_-]+/Trigger/Options/[0-9]+/Custom_stat$ */ - Label: string; + $id: string; + Options: CustomStatOption_2[]; } /** * @public */ -export declare interface IHasOptional { +export declare interface CustomStatOption extends HasId, HasLabel { /** - * Whether or not the source material presents this rules item as optional. - * @default false + * @pattern ^(Starforged|Ironsworn)/Moves/([A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[0-9]+)/[A-z_-]+/Trigger/Options/[0-9]+/Custom_stat/[A-z_-]+$ */ - Optional: boolean; + $id: string; + /** + * The numeric value to be used as +stat when making an Action Roll. + */ + Value: number; + Label: string; } /** - * Interface for items with metadata that describes an oracle's semantic or lexical content. * @public */ -export declare interface IHasOracleContent { +declare interface CustomStatOption_2 extends HasId_2, HasLabel_2 { /** - * Metadata that describes an oracle's semantic or lexical content. + * @pattern ^(Starforged|Ironsworn)/Moves/([A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[0-9]+)/[A-z_-]+/Trigger/Options/[0-9]+/Custom_stat/[A-z_-]+$ + */ + $id: string; + /** + * The numeric value to be used as +stat when making an Action Roll. */ - Content: IOracleContent; + Value: number; + Label: string; } /** + * Basic interface for elements common to "cyclopedia" style pages, such as Regions (*Ironsworn* classic) and Encounters (*Ironsworn* classic and *Starforged*) * @public */ -export declare interface IHasQuestStarter extends IHasId { +export declare interface CyclopediaEntry extends HasId, HasDisplay, HasDescription, HasSource, Partial, HasTitle { + /** + * @pattern ^(Starforged|Ironsworn)/([A-z_-]+/)+$ + */ + $id: string; + Tags?: string[] | undefined; /** - * A markdown string describing the quest starter associated with this item. * @markdown * @localize */ - "Quest Starter": string; + Features?: string[] | undefined; } /** - * Interface for items that have prerequisites. + * Basic interface for elements common to "cyclopedia" style pages, such as Regions (*Ironsworn* classic) and Encounters (*Ironsworn* classic and *Starforged*) * @public */ -export declare interface IHasRequirements { +declare interface CyclopediaEntry_2 extends HasId_2, HasDisplay_2, HasDescription_2, HasSource_2, Partial,HasTitle_2 { /** - * Prerequisites for this item. + * @pattern ^(Starforged|Ironsworn)/([A-z_-]+/)+$ */ - Requires: IRequirements; + $id: string; + Tags?: string[] | undefined; + /** + * @markdown + * @localize + */ + Features?: string[] | undefined; } /** - * Interface for items that include roll string templates. + * Interface describing common characteristics of themes and domains from *Ironsworn: Delve*. + * + * Together, the theme and domain help you visualize your exploration of the site, and provide oracle tables for features and dangers. + * + * @see DelveTheme + * @see DelveDomain * @public */ -export declare interface IHasRollTemplate extends IHasId { +export declare interface DelveCard extends HasSource, HasSummary, HasDescription, HasId, HasTitle { /** - * Describes the string values of this item that should be replaced with template strings and filled with the results of one or more oracle rolls. + * @pattern ^Ironsworn/(Themes|Domains)/[A-z_-]+$ */ - "Roll template": IRollTemplate; -} - -/** - * Interface for items with sourcing information. - * @public - */ -export declare interface IHasSource { + $id: string; /** - * Information on this item's source. + * Indicates whether this is a site Theme or a site Domain. */ - Source: ISource; -} - -/** - * Interface for items that have a subtable-like object. - * @deprecated Currently only used by setting truths. If you need to denote a subtable, use the `Oracle rolls` property to point to an `IOracle` in the `Oracles` property of this table's parent. - * @public - */ -export declare interface IHasSubtable { - Subtable: IRow[]; -} - -/** - * Interface for items that include "non-canonical" suggestions of related items. - * @public - */ -export declare interface IHasSuggestions { + Type: DelveCardType; /** - * "Non-canonical" suggestions of related items. They might be convenient to present to the user, but in most implementations rolling them automatically is not recommended. + * The summary text that appears immediately below the card's title. For best rendering, ensure that it fits on a single line. + * @markdown + * @localize */ - Suggestions: ISuggestions; -} - -/** - * Interface for items with a user-facing markdown summary. - * @public - */ -export declare interface IHasSummary extends IHasId { + Summary: string; /** - * A user-facing markdown summary of the item. Summary is shorter than {@link IHasDescription | Description}, when they're both present. + * An extended description for this card that doesn't appear on the card itself. For 'canonical' Themes and Domains, these are presented on p. 84 - 93 of *Ironsworn: Delve*. + * + * Most are two paragraphs long, approximately 90 words (600 characters); the longest 'canonical' description clocks in at 98 words (619 characters). Allot space accordingly. + * * @markdown * @localize */ - Summary: string; -} - -/** - * Interface for items that have a table-like object. - * @public - */ -export declare interface IHasTable extends IHasId { - Table: IRow[]; -} - -/** - * @public - */ -export declare interface IHasTags { + Description: string; /** - * Arbitrary strings tags that describe optional metadata that doesn't fit in other properties. + * The Features contributed by this card. Effectively a 'partial' oracle table; combine with the features of another card to complete it. */ - Tags: string[]; + Features: OracleTableRow[]; + /** + * The Dangers contributed by this card. Effectively a 'partial' oracle table; combine with the dangers of another card and the Reveal a Danger move oracle table to complete it. + */ + Dangers: OracleTableRow[]; } /** - * Interface for items that reproduce Starforged rules text in markdown. + * Interface describing common characteristics of themes and domains from *Ironsworn: Delve*. + * + * Together, the theme and domain help you visualize your exploration of the site, and provide oracle tables for features and dangers. + * + * @see DelveTheme + * @see DelveDomain * @public */ -export declare interface IHasText extends IHasId { +declare interface DelveCard_2 extends HasSource_2, HasSummary_2, HasDescription_2, HasId_2, HasTitle_2 { /** - * The item's rules text as a markdown string. + * @pattern ^Ironsworn/(Themes|Domains)/[A-z_-]+$ + */ + $id: string + /** + * Indicates whether this is a site Theme or a site Domain. + */ + Type: DelveCardType_2; + /** + * The summary text that appears immediately below the card's title. For best rendering, ensure that it fits on a single line. * @markdown * @localize */ - Text: string; + Summary: string; + /** + * An extended description for this card that doesn't appear on the card itself. For 'canonical' Themes and Domains, these are presented on p. 84 - 93 of *Ironsworn: Delve*. + * + * Most are two paragraphs long, approximately 90 words (600 characters); the longest 'canonical' description clocks in at 98 words (619 characters). Allot space accordingly. + * + * @markdown + * @localize + */ + Description: string; + /** + * The Features contributed by this card. Effectively a 'partial' oracle table; combine with the features of another card to complete it. + */ + Features: OracleTableRow_2[]; + /** + * The Dangers contributed by this card. Effectively a 'partial' oracle table; combine with the dangers of another card and the Reveal a Danger move oracle table to complete it. + */ + Dangers: OracleTableRow_2[]; } /** * @public */ -export declare interface IHasTitle extends IHasId { - Title: ITitle; +export declare enum DelveCardType { + Theme = "Theme", + Domain = "Domain" } /** - * A stub interface representing an input widget of any type. - * @see {@link IInputNumber}, {@link IInputClock}, {@link IInputText}, {@link IInputSelect} * @public */ -export declare interface IInput extends IHasId, IHasLabel { - /** - * @pattern ^(Starforged|Ironsworn)/Assets/[A-z_-]+/[A-z_-]+(/Abilities/[1-3])?/Inputs/[A-z_-]+$ - */ - $id: string; - "Input Type": InputType; - /** - * Whether the input's value is expected to change over the course of a campaign. For example, name fields are typically `false`, while something like a clock or tally would be `true`. - * - * It's a good idea to make everything editable regardless, but this property might inform whether your UI presents that functionality "front and center" or as a secondary interaction (via long press, right click, etc); - */ - Adjustable: boolean; - Label: string; +declare enum DelveCardType_2 { + Theme = "Theme", + Domain = "Domain" } /** - * An input representing an *Ironsworn: Starforged* clock. - * @page 239 - * @see {@link InputType.Clock} + * Interface describing a delve site domain. + * + * The **domain** represents the physical characteristics of the site—the terrain or architecture you must traverse. + * + * Together, the theme and domain help you visualize your exploration of the site, and provide oracle tables for features and dangers. + * + * @see DelveTheme * @public */ -export declare interface IInputClock extends IInput { - "Input Type": InputType.Clock; +export declare interface DelveDomain extends DelveCard { /** - * Whether the clock is a Tension Clock or a Campaign Clock. For assets this doesn't really matter since they have their own specific trigger conditions, and can probably be ignored. + * @pattern ^Ironsworn/Domains/[A-z_-]+$ */ - "Clock Type": ClockType; + $id: string; + Type: DelveCardType.Domain; /** - * An integer representing the total number of segments in this Clock. *Ironsworn: Starforged* uses clocks with 4, 6, 8, and 10 segments. - * - * `Filled` should not exceed this number. + * The Features contributed by this Domain card. Effectively a 'partial' oracle table; combine with the features of a Theme card to complete it. */ - Segments: ClockSegments; + Features: [ + OracleTableRow & { + Floor: 21; + Ceiling: 43; + }, + OracleTableRow & { + Floor: 44; + Ceiling: 56; + }, + OracleTableRow & { + Floor: 57; + Ceiling: 64; + }, + OracleTableRow & { + Floor: 65; + Ceiling: 68; + }, + OracleTableRow & { + Floor: 69; + Ceiling: 72; + }, + OracleTableRow & { + Floor: 73; + Ceiling: 76; + }, + OracleTableRow & { + Floor: 77; + Ceiling: 80; + }, + OracleTableRow & { + Floor: 81; + Ceiling: 84; + }, + OracleTableRow & { + Floor: 85; + Ceiling: 88; + }, + OracleTableRow & { + Floor: 89; + Ceiling: 98; + Result: "Something unusual or unexpected"; + }, + OracleTableRow & { + Floor: 99; + Ceiling: 99; + Result: "You transition into a new theme"; + }, + OracleTableRow & { + Floor: 100; + Ceiling: 100; + Result: "You transition into a new domain"; + } + ]; /** - * An integer representing how many filled segments this clock has. This is always 0 in Dataforged; it's included to make it easy to store clock states with the same interface. + * The Dangers contributed by this Domain card. Effectively a 'partial' oracle table; combine with the dangers of Theme and the Reveal a Danger move oracle table to complete it. */ - Filled: number; + Dangers: [ + OracleTableRow & { + Floor: 31; + Ceiling: 33; + }, + OracleTableRow & { + Floor: 34; + Ceiling: 36; + }, + OracleTableRow & { + Floor: 37; + Ceiling: 39; + }, + OracleTableRow & { + Floor: 40; + Ceiling: 42; + }, + OracleTableRow & { + Floor: 43; + Ceiling: 45; + } + ]; } /** - * An input where the user sets an integer. - * Suggested rendering: a number input spinner, similar to `` in HTML. - * @see {@link InputType.Number} + * Interface describing a delve site domain. + * + * The **domain** represents the physical characteristics of the site—the terrain or architecture you must traverse. + * + * Together, the theme and domain help you visualize your exploration of the site, and provide oracle tables for features and dangers. + * + * @see DelveTheme * @public */ -export declare interface IInputNumber extends IInput { - "Input Type": InputType.Number; - Min: number; +declare interface DelveDomain_2 extends DelveCard_2 { /** - * @nullable + * @pattern ^Ironsworn/Domains/[A-z_-]+$ */ - Max: number | null; - Step: 1; - Value: number; -} - -/** - * An input where the user selects a single option from a list of pre-set options. - * Suggested rendering: a drop-down selection menu. - * @example - * ```json - * { - * "Label": "Material", - * "Input Type": "Select", - * "Attributes": [ - * { "Key": "stat", "Type": "Stat" }, - * { "Key": "condition_meter", "Type": "Condition Meter" } - * ], - * "Options": [ - * { - * "Label": "Thunderwood", - * "Sets": [ - * { "Key": "stat", "Value": "edge" }, - * { "Key": "condition_meter", "Value": "health" } - * ] - * } - * ] - * } - * ``` - * @public - */ -export declare interface IInputSelect extends IInput { - "Input Type": InputType.Select; + $id: string + Type: DelveCardType_2.Domain /** - * Hints which attribute(s) set by this dropdown's options. + * The Features contributed by this Domain card. Effectively a 'partial' oracle table; combine with the features of a Theme card to complete it. */ - Sets: IInputSelectAttributeDefinition[]; - Options: IInputSelectOption[]; -} - -/** - * Provides hints for the keys and typing of an {@link IInputSelect}'s child {@link IInputSelectOption}s. - * @typeParam V - The type(s) of the value(s) set by this item's options. - * @public - */ -export declare interface IInputSelectAttributeDefinition { + Features: [ + OracleTableRow_2 & {Floor: 21, Ceiling: 43}, + OracleTableRow_2 & {Floor: 44, Ceiling: 56}, + OracleTableRow_2 & {Floor: 57, Ceiling: 64}, + OracleTableRow_2 & {Floor: 65, Ceiling: 68}, + OracleTableRow_2 & {Floor: 69, Ceiling: 72}, + OracleTableRow_2 & {Floor: 73, Ceiling: 76}, + OracleTableRow_2 & {Floor: 77, Ceiling: 80}, + OracleTableRow_2 & {Floor: 81, Ceiling: 84}, + OracleTableRow_2 & {Floor: 85, Ceiling: 88}, + OracleTableRow_2 & {Floor: 89, Ceiling: 98, Result: "Something unusual or unexpected"}, + OracleTableRow_2 & {Floor: 99, Ceiling: 99, Result: "You transition into a new theme"}, + OracleTableRow_2 & {Floor: 100, Ceiling: 100, Result: "You transition into a new domain" }, + ]; /** - * @pattern ^[a-z_]+$ + * The Dangers contributed by this Domain card. Effectively a 'partial' oracle table; combine with the dangers of Theme and the Reveal a Danger move oracle table to complete it. */ - Key: string; - Type: InputSelectOptionType; + Dangers: [ + OracleTableRow_2 & {Floor: 31, Ceiling: 33}, + OracleTableRow_2 & {Floor: 34, Ceiling: 36}, + OracleTableRow_2 & {Floor: 37, Ceiling: 39}, + OracleTableRow_2 & {Floor: 40, Ceiling: 42}, + OracleTableRow_2 & {Floor: 43, Ceiling: 45}, + ] } /** - * Represents an option in an {@link IInputSelect}. + * Represents a Rarity (described in Ironsworn: Delve) * @public */ -export declare interface IInputSelectOption extends IHasId, IHasLabel { +export declare interface DelveRarity extends HasTitle, HasDisplay, HasSource, HasDescription { /** - * @pattern ^(Starforged|Ironsworn)/Assets/[A-z_-]+/[A-z_-]+/Inputs/[A-z_-]+/Options/[A-z_-]+$ + * @minimum 3 + * @maximum 5 */ - $id: string; + "XP Cost": number; /** - * A array describing what attribute keys should be set to when this option is active. *All* items in the array should be set in this manner. + * The ID of the asset, to which this rarity applies its effects. + * @see {@link Asset.$id} */ - Set: (IInputSelectOptionSetterStat | IInputSelectOptionSetterMeter | IInputSelectOptionSetterNumber | IInputSelectOptionSetterString)[]; + Asset: Asset["$id"]; } /** + * Interface describing a delve site theme. + * + * The **theme** represents the condition or state of the site, and indicates the kinds of denizens and threats you might find there. + * + * Together, the theme and domain help you visualize your exploration of the site, and provide oracle tables for features and dangers. + * + * @see DelveDomain * @public */ -export declare interface IInputSelectOptionSetter extends IHasId { +export declare interface DelveTheme extends DelveCard { /** - * @pattern ^(Starforged|Ironsworn)/Assets/[A-z_-]+/[A-z_-]+/Inputs/[A-z_-]+/Options/[A-z_-]+/[A-z_-]+$ + * @pattern ^Ironsworn/Themes/[A-z_-]+$ */ $id: string; - Key: IInputSelectAttributeDefinition["Key"]; - Type: InputSelectOptionType; - Value: Stat | PlayerConditionMeter | number | string; + Type: DelveCardType.Theme; + /** + * The Features contributed by this Theme card. Effectively a 'partial' oracle table; combine with the features of a Domain card to complete it. + */ + Features: [ + OracleTableRow & { + Floor: 1; + Ceiling: 4; + }, + OracleTableRow & { + Floor: 5; + Ceiling: 8; + }, + OracleTableRow & { + Floor: 9; + Ceiling: 12; + }, + OracleTableRow & { + Floor: 13; + Ceiling: 16; + }, + OracleTableRow & { + Floor: 17; + Ceiling: 20; + } + ]; + /** + * The Dangers contributed by this Theme card. Effectively a 'partial' oracle table; combine with the dangers of Domain and the Reveal a Danger move oracle table to complete it. + */ + Dangers: [ + OracleTableRow & { + Floor: 1; + Ceiling: 5; + }, + OracleTableRow & { + Floor: 6; + Ceiling: 10; + }, + OracleTableRow & { + Floor: 11; + Ceiling: 12; + }, + OracleTableRow & { + Floor: 13; + Ceiling: 14; + }, + OracleTableRow & { + Floor: 15; + Ceiling: 16; + }, + OracleTableRow & { + Floor: 17; + Ceiling: 18; + }, + OracleTableRow & { + Floor: 19; + Ceiling: 20; + }, + OracleTableRow & { + Floor: 21; + Ceiling: 22; + }, + OracleTableRow & { + Floor: 23; + Ceiling: 24; + }, + OracleTableRow & { + Floor: 25; + Ceiling: 26; + }, + OracleTableRow & { + Floor: 27; + Ceiling: 28; + }, + OracleTableRow & { + Floor: 29; + Ceiling: 30; + } + ]; } /** - * A condition meter set by an {@link IInputSelectOption}. + * Interface describing a delve site theme. + * + * The **theme** represents the condition or state of the site, and indicates the kinds of denizens and threats you might find there. + * + * Together, the theme and domain help you visualize your exploration of the site, and provide oracle tables for features and dangers. + * + * @see DelveDomain * @public */ -export declare interface IInputSelectOptionSetterMeter extends IInputSelectOptionSetter { - Type: InputSelectOptionType.ConditionMeter; - Value: PlayerConditionMeter; +declare interface DelveTheme_2 extends DelveCard_2 { + /** + * @pattern ^Ironsworn/Themes/[A-z_-]+$ + */ + $id: string + Type: DelveCardType_2.Theme + /** + * The Features contributed by this Theme card. Effectively a 'partial' oracle table; combine with the features of a Domain card to complete it. + */ + Features: [ + OracleTableRow_2 & {Floor: 1, Ceiling: 4}, + OracleTableRow_2 & {Floor: 5, Ceiling: 8}, + OracleTableRow_2 & {Floor: 9, Ceiling: 12}, + OracleTableRow_2 & {Floor: 13, Ceiling: 16}, + OracleTableRow_2 & {Floor: 17, Ceiling: 20}, + ], + /** + * The Dangers contributed by this Theme card. Effectively a 'partial' oracle table; combine with the dangers of Domain and the Reveal a Danger move oracle table to complete it. + */ + Dangers: [ + OracleTableRow_2 & {Floor: 1, Ceiling: 5}, + OracleTableRow_2 & {Floor: 6, Ceiling: 10}, + OracleTableRow_2 & {Floor: 11, Ceiling: 12}, + OracleTableRow_2 & {Floor: 13, Ceiling: 14}, + OracleTableRow_2 & {Floor: 15, Ceiling: 16}, + OracleTableRow_2 & {Floor: 17, Ceiling: 18}, + OracleTableRow_2 & {Floor: 19, Ceiling: 20}, + OracleTableRow_2 & {Floor: 21, Ceiling: 22}, + OracleTableRow_2 & {Floor: 23, Ceiling: 24}, + OracleTableRow_2 & {Floor: 25, Ceiling: 26}, + OracleTableRow_2 & {Floor: 27, Ceiling: 28}, + OracleTableRow_2 & {Floor: 29, Ceiling: 30}, + ] } /** - * An integer value set by an {@link IInputSelectOption}. + * Interface for data relevant to an item's display/rendering. * @public */ -export declare interface IInputSelectOptionSetterNumber extends IInputSelectOptionSetter { - Type: InputSelectOptionType.Number; - Value: number; +export declare interface Display { + /** + * A URL pointing to a single SVG icon. + * @pattern ^img/vector/[A-z-_0-9/]+\.svg$ + */ + Icon?: string | undefined; + /** + * An array of URLs pointing to one or more WEBP images. + * @pattern ^img/raster/[A-z-_0-9/]+\.webp$ + */ + Images?: string[] | undefined; + /** + * A hex color associated with this item, for use as e.g. an accent color in its display. + * @pattern ^#[A-f0-9][A-f0-9][A-f0-9][A-f0-9][A-f0-9][A-f0-9]$ + */ + Color?: string | undefined; } /** - * A stat set by an {@link IInputSelectOption}. + * Interface for data relevant to an item's display/rendering. * @public */ -export declare interface IInputSelectOptionSetterStat extends IInputSelectOptionSetter { - Type: InputSelectOptionType.Stat; - Value: Stat; +declare interface Display_2 { + /** + * A URL pointing to a single SVG icon. + * @pattern ^img/vector/[A-z-_0-9/]+\.svg$ + */ + Icon?: string | undefined; + /** + * An array of URLs pointing to one or more WEBP images. + * @pattern ^img/raster/[A-z-_0-9/]+\.webp$ + */ + Images?: string[] | undefined; + /** + * A hex color associated with this item, for use as e.g. an accent color in its display. + * @pattern ^#[A-f0-9][A-f0-9][A-f0-9][A-f0-9][A-f0-9][A-f0-9]$ + */ + Color?: string | undefined; } /** - * An arbitrary string value set by an {@link IInputSelectOption}. + * Represents a full (i.e. not a stub/variant) encounter entry in *Ironsworn* or *Ironsworn: Starforged*. * @public */ -export declare interface IInputSelectOptionSetterString extends IInputSelectOptionSetter { - Type: InputSelectOptionType.String; - Value: string; +export declare interface Encounter extends EncounterBase { + Features: string[]; + Drives: string[]; + Tactics: string[]; + "Quest Starter": string; + "Your Truth"?: string | undefined; } /** - * A text input. - * Suggested rendering: a single-line text input, similar to `` in HTML. - * @see {@link InputType.Text} + * Represents a full (i.e. not a stub/variant) encounter entry in *Ironsworn* or *Ironsworn: Starforged*. * @public */ -export declare interface IInputText extends IInput { - "Input Type": InputType.Text; +declare interface Encounter_2 extends EncounterBase_2 { + Features: string[]; + Drives: string[]; + Tactics: string[]; + "Quest Starter": string; + "Your Truth"?: string | undefined; } /** + * Interface common to Encounter entries in *Ironsworn* and *Ironsworn: Starforged*, plus 'stubs' like EncounterVariant. EncounterVariant. EncounterVariant. + * @see {@link Encounter}, {@link EncounterVariant} * @public */ -export declare interface IIronswornRegion extends ICyclopediaEntry { +export declare interface EncounterBase extends CyclopediaEntry { /** - * @pattern ^Ironsworn/Regions/[A-z_-]$ + * @example "Starforged/Encounters/Chiton" + * @pattern ^(Starforged|Ironsworn)/Encounters/[A-z_-]+$ */ $id: string; - Summary: string; - Features: string[]; - "Quest Starter": string; - Source: ISource; -} - -/** - * Base interface for properties common to all resource meters. - * @see {@link IConditionMeter} - * @public - */ -export declare interface IMeter extends IHasId, IHasLabel { /** - * The minimum value of the meter. Usually this is 0. Momentum is currently the only exception to this and goes as low as -6. + * @example "Monster" + * @localize */ - Min: number; + Nature: EncounterNatureStarforged | EncounterNatureClassic; + Display: Display; /** - * The maximum value of the meter. + * @example "Insectoid horde" + * @markdown + * @localize */ - Max: number; + Summary?: string | undefined; + Tags?: EncounterTags[] | undefined; + Rank: ChallengeRank; /** - * The initial value of the meter. + * @markdown + * @localize */ - Value: number; + Features?: string[] | undefined; /** - * Whether the meter value can be used in place of a stat in an action roll. + * @markdown + * @localize */ - Rollable: boolean; + Drives?: string[] | undefined; /** - * @pattern ^[a-z].+$ + * @markdown + * @localize */ - Label: string; + Tactics?: string[] | undefined; + /** + * Ironsworn, p. 135: "Some NPCs include a question for you to answer. This is an opportunity to customize the NPC to your vision of the Ironlands. You can do this as you define your world or discover through play. Truths may represent an absolute fact, or merely something the people of your world believe." + * + * Only present in Ironsworn encounters. + * @markdown + * @localize + */ + "Your Truth"?: string | undefined; } /** - * Interface representing a Starforged move. + * Interface common to Encounter entries in *Ironsworn* and *Ironsworn: Starforged*, plus 'stubs' like EncounterVariant. EncounterVariant. EncounterVariant. + * @see {@link Encounter}, {@link EncounterVariant} * @public */ -export declare interface IMove extends IHasId, IHasText, IHasDisplay, IHasSource, IHasOptional, IHasTitle, Partial { +declare interface EncounterBase_2 extends CyclopediaEntry_2 { /** - * @example "Starforged/Moves/Adventure/Face_Danger" - * @pattern ^(Starforged|Ironsworn)/Moves/([A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3])/[A-z_-]+$ + * @example "Starforged/Encounters/Chiton" + * @pattern ^(Starforged|Ironsworn)/Encounters/[A-z_-]+$ */ $id: string; /** - * Note the "Canonical" key for asset-specific moves is something of a misnomer, as in the original text doesn't name them. They're provided in the same format for convenience, however. - * @see IHasTitle - * @example - * ```json - * {"Canonical": "Face Danger"} - * ``` - */ - Title: ITitle; - /** - * The ID of the parent Asset of the move, if any. - */ - Asset?: IAsset["$id"] | undefined; - /** - * The ID of the move's category. - * @example "Starforged/Moves/Adventure" + * @example "Monster" + * @localize */ - Category: IMoveCategory["$id"]; + Nature: EncounterNatureStarforged_2 | EncounterNatureClassic_2; + Display: Display_2; /** - * Whether or not the move is a Progress Move. Progress moves roll two challenge dice against a progress score. + * @example "Insectoid horde" + * @markdown + * @localize */ - "Progress Move"?: boolean | undefined; + Summary?: string | undefined; + Tags?: EncounterTags_2[] | undefined; + Rank: ChallengeRank_2; /** - * The ID of the move that this move is a variant of, if any. + * @markdown + * @localize */ - "Variant of"?: IMove["$id"] | undefined; + Features?: string[] | undefined; /** - * The move's trigger data. + * @markdown + * @localize */ - Trigger: IMoveTrigger; + Drives?: string[] | undefined; /** - * The IDs of any oracles directly referenced by the move, or vice versa. + * @markdown + * @localize */ - Oracles?: IOracleTable["$id"][] | undefined; + Tactics?: string[] | undefined; /** - * Outcome information for the move. + * Ironsworn, p. 135: "Some NPCs include a question for you to answer. This is an opportunity to customize the NPC to your vision of the Ironlands. You can do this as you define your world or discover through play. Truths may represent an absolute fact, or merely something the people of your world believe." + * + * Only present in Ironsworn encounters. + * @markdown + * @localize */ - Outcomes?: IMoveOutcomes | undefined; - Display: IDisplay; - Tags?: string[] | undefined; + "Your Truth"?: string | undefined; } /** - * Represents a category of moves such as "Session Moves" or "Combat Moves", and serves as a container for moves within that category. + * Represents an *Ironsworn* Encounter entry. * @public */ -export declare interface IMoveCategory extends IHasId, IHasSource, IHasDescription, IHasDisplay, IHasOptional, IHasTitle { +export declare interface EncounterClassic extends Encounter { /** - * @example "Starforged/Moves/Adventure" - * @pattern ^(Starforged|Ironsworn)/Moves/[A-z_-]+$ + * @pattern ^(Starforged|Ironsworn)/Encounters/[A-z_-]+/[A-z_-]+$ */ $id: string; - Moves: { - [key: string]: IMove; - }; - Display: IDisplay; + Nature: EncounterNatureClassic; + "Your Truth"?: string | undefined; + Summary?: string | undefined; } /** + * Represents an *Ironsworn* Encounter entry. * @public */ -export declare interface IMoveOutcomes extends IHasId { +declare interface EncounterClassic_2 extends Encounter_2 { /** - * @pattern ^(Starforged|Ironsworn)/(Moves/[A-z_-]+/[A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/Alter_Moves/[0-9]+|Moves/Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/[A-z_-]+)/Outcomes$ + * @pattern ^(Starforged|Ironsworn)/Encounters/[A-z_-]+/[A-z_-]+$ */ $id: string; - "Strong Hit": IOutcomeStrongHit; - "Weak Hit": IOutcomeWeakHit; - "Miss": IOutcomeMiss; + Nature: EncounterNatureClassic_2; + "Your Truth"?: string | undefined; + Summary?: string | undefined; } /** - * Describes a reroll offered by a move outcome. The vast majority of rerolls in *Ironsworn* are elective, so automatic rerolling isn't recommended. * @public */ -export declare interface IMoveReroll extends IHasId, Partial { - /** - * - */ - $id: string; - /** - * The markdown string describing the conditions of the reroll. It should be presented to the user so that they can decide whether a reroll is appropriate. - * @markdown - * @localize - */ - Text?: string | undefined; - /** - * The dice to be rerolled. - */ - Dice: RerollType; +export declare enum EncounterNatureClassic { + Ironlander = "Ironlander", + Firstborn = "firstborn", + Animal = "animal", + Beast = "beast", + Horror = "horror", + Anomaly = "anomaly" } /** - * Describes the trigger conditions of the move. * @public */ -export declare interface IMoveTrigger extends IHasId, Partial { +declare enum EncounterNatureClassic_2 { + Ironlander = "Ironlander", + Firstborn = "firstborn", + Animal = "animal", + Beast = "beast", + Horror = "horror", + Anomaly = "anomaly", +} + +/** + * Represents the metadata describing an *Ironsworn* encounter's nature; used as a category to contain all Encounters of that type. + * @public + */ +export declare interface EncounterNatureClassicInfo extends HasDescription, HasSource, HasId, HasDisplay, HasSummary, HasTitle { /** - * @pattern ^(Starforged|Ironsworn)/(Moves/[A-z_-]+/[A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/Alter_Moves/[0-9]+|Moves/Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/[A-z_-]+)/Trigger$ + * @pattern ^Ironsworn/Encounters/[A-z_-]+$ */ $id: string; - /** - * A markdown string containing the primary trigger text for this move. - * - * Secondary triggers (for specific stats or uses of an asset ability) are described in `Options`. - * - * @markdown - * @localize - * @example "When you attempt something risky or react to an imminent threat..." - */ - Text?: string | undefined; - /** - * Information on who can trigger this item. Used mainly by asset abilities, some of which can trigger from an Ally's move. - * - * If unspecified, assume `Ally` is `false` and `Player` is `true`. - */ - By?: IMoveTriggerBy | undefined; - /** - * Information on any action rolls or progress rolls that are made when this move is triggered (which may describe a specific subset of the primary trigger in their own `Text` property). - * - * If there's no action rolls or progress rolls attached to this move, this is `undefined`. - */ - "Options"?: (IMoveTriggerOptionAction | IMoveTriggerOptionProgress)[] | undefined; + Encounters: { + [key: string]: EncounterClassic; + }; + Title: Title & { + Short: NatureKey; + }; } /** * @public */ -export declare interface IMoveTriggerBy { - /** - * Whether the player character who owns this item can trigger it. Unsurprisingly, this is usually true, but there's a few exceptions: see *Starforged's* LOYALIST asset for an example. - * @public - */ - Player: boolean; - /** - * Whether an Ally (a player character other than the owner) can trigger this item. This is usually false, but there's several exceptions among asset abilities. - */ - Ally: boolean; +export declare enum EncounterNatureStarforged { + Creature = "creature", + Horror = "horror", + Human = "human", + Machine = "machine", + Monster = "monster" } /** * @public */ -export declare interface IMoveTriggerOptionAction extends IMoveTriggerOptionBase { - "Roll type": RollType.Action; - Using: RollableStat[]; +declare enum EncounterNatureStarforged_2 { + Creature = "creature", + Horror = "horror", + Human = "human", + Machine = "machine", + Monster = "monster" } /** + * Represents an *Ironsworn: Starforged* Encounter entry. * @public */ -export declare interface IMoveTriggerOptionBase extends IHasId, Partial { +export declare interface EncounterStarforged extends Encounter { /** - * @pattern ^(Starforged|Ironsworn)/(Moves/[A-z_-]+/[A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/Alter_Moves/[0-9]+|Moves/Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/[A-z_-]+)/Trigger/Options/[0-9]+$ + * @pattern ^Starforged/Encounters/[A-z_-]+$ */ $id: string; - /** - * Whether this option is an action roll or progress roll. - */ - "Roll type": RollType; - /** - * The method used to choose the stat or track in the `Using` array. - */ - Method: RollMethod; - /** - * The stat(s) or progress track(s) that may be rolled with this move trigger option. - */ - Using: (RollableStat | ProgressTypeStarforged | ProgressTypeIronsworn)[]; - /** - * Defines a custom stat, if one is included in this object's `With` array. - */ - "Custom stat"?: ICustomStat | undefined; + Nature: EncounterNatureStarforged; + Summary: string; + Variants?: EncounterVariant[] | undefined; } /** + * Represents an *Ironsworn: Starforged* Encounter entry. * @public */ -export declare interface IMoveTriggerOptionProgress extends IMoveTriggerOptionBase { - "Roll type": RollType.Progress; - Using: (ProgressTypeStarforged | ProgressTypeIronsworn)[]; +declare interface EncounterStarforged_2 extends Encounter_2 { + /** + * @pattern ^Starforged/Encounters/[A-z_-]+$ + */ + $id: string; + Nature: EncounterNatureStarforged_2; + Summary: string; + // TODO should be a keyed object + Variants?: EncounterVariant_2[] | undefined; } /** - * Describes {@link IRow} results that call for multiple rolls, most commonly "Roll twice" results. * @public */ -export declare interface IMultipleRolls { - /** - * The number of rolls to make on the parent oracle table. - */ - Amount: number; - /** - * Whether to allow duplicate results when generating multiple rolls. - * - * Implicitly required by `Make it worse`. - */ - "Allow duplicates": boolean; - /** - * Whether duplicate rolls should be compounded in an Ironsworn-style "Make it worse" results. - * - * Typically this is accompanied by `IRow.Result` text like "Roll twice more on this table. Both results occur. If they are the same result, make it worse." - * - * Can safely be ignored in Starforged-only implementations. Implicitly requires `Allow duplicates`. - */ - "Make it worse": boolean; +export declare enum EncounterTags { + Vehicle = "vehicle" } /** - * The type of an attribute set by a Select Input. * @public */ -export declare enum InputSelectOptionType { - /** - * A reference to one of the player character's stats: edge, heart, iron, shadow, or wits. - * @see {@link Stat} - */ - Stat = "Stat", - /** - * A reference to one of the player character's condition meters (Starforged) or status tracks (Ironsworn): health, spirit, or supply. - * @see {@link PlayerConditionMeter} - */ - ConditionMeter = "Condition Meter", - /** - * An arbitrary pre-set string value. - */ - String = "String", - /** - * A arbitrary pre-set number value. - */ - Number = "Number" +declare enum EncounterTags_2 { + Vehicle = "vehicle" } /** + * Represents a variant encounter 'stubs' included with a parent encounter in *Ironsworn: Starforged*. * @public */ -export declare enum InputType { - /** - * @see {@link IInputText} - */ - Text = "Text", - /** - * @see {@link IInputSelect} - */ - Select = "Select", - /** - * @see {@link IInputNumber} - */ - Number = "Number", +export declare interface EncounterVariant extends StubBy { /** - * @see {@link IInputClock} + * @pattern ^Starforged/Encounters/[A-z_-]+/[A-z_-]+$ */ - Clock = "Clock" + $id: string; + "Variant of": EncounterStarforged["$id"]; } /** - * Interface with elements common to various Oracle-related interfaces and classes. - * - * If you're trying to crawl the tree for a specific ID, I'd recommend using some flavour of JSONpath (I like `jsonpath-plus`) - it's purpose-made for this sort of nested data structure. - * - * But if for some reason you can't, you can use this interface to type both {@link IOracleTable} and {@link IOracleSet} as you recurse the oracle hierarchy. Objects with `Categories` and `Oracles` are "branches", and objects with `Table` are "leaves". + * Represents a variant encounter 'stubs' included with a parent encounter in *Ironsworn: Starforged*. * @public */ -export declare interface IOracleBase extends Partial, IHasId, IHasDisplay, IHasSource, IHasTitle { - $id: string; - /** - * An array containing the ID of every {@link IOracleSet} ancestor of this item. The array is sorted from the most recent ancestor (e.g. one level up) to the most distant. - * @pattern ^(Ironsworn|Starforged)/Oracles/[A-z_-/]+$ - */ - Ancestors: IOracleSet["$id"][]; - Display: IOracleDisplayBase; - /** - * Information on the usage of this oracle: recommended number of rolls, etc. - */ - Usage?: IOracleUsage | undefined; - /** - * Represents a single oracle table, where 'table' is defined as being something with a single roll range. - * - * This key appears only on {@link IOracleSet}, and thus only on 'leaf' nodes of the oracle hierarchy 'tree'. - */ - Table?: (IRow | IRowNullStub)[] | undefined; - /** - * Oracle tables contained by this set. - * - * This key appears only on {@link IOracleSet}, and thus only on 'branch' nodes of the oracle hierarchy 'tree'. - */ - Tables?: { - [key: string]: IOracleTable; - } | undefined; +declare interface EncounterVariant_2 extends StubBy_2 { /** - * Oracle sets contained by this set. - * - * This key appears only on {@link IOracleSet}, and thus only on 'branch' nodes of the oracle hierarchy 'tree'. - */ - Sets?: { - [key: string]: IOracleSet; - } | undefined; - /** - * Describes the match behaviour of this oracle's table, if any, and provides a `Text` string describing it. Only appears on a handful of move oracles like Ask the Oracle and Advance a Threat. - * - * This key appears only on {@link IOracleTable}s that have a `Table`. + * @pattern ^Starforged/Encounters/[A-z_-]+/[A-z_-]+$ */ - "On a Match"?: IOracleMatch | undefined; + $id: string; + "Variant of": EncounterStarforged_2["$id"]; } /** - * Interface for metadata that describes an oracle's semantic or lexical content. + * Base interface for *Ironsworn* and *Ironsworn: Starforged* game data. * @public */ -export declare interface IOracleContent { - /** - * The part of speech of this oracle. - */ - "Part of speech"?: PartOfSpeechTag[] | undefined; - /** - * Any arbitrary string tags associated with this oracle. - */ - "Tags"?: string[] | undefined; +export declare interface GameDataRoot { + $schema?: string | undefined; + "Asset Types": { + [key: string]: AssetType; + }; + "Encounters": { + [key: string]: EncounterStarforged; + } | { + [key: string]: EncounterNatureClassicInfo; + }; + "Move Categories": { + [key: string]: MoveCategory; + }; + "Oracle Sets": { + [key: string]: OracleSet; + }; + "Setting Truths": { + [key: string]: Truth; + } | { + [key: string]: TruthClassic; + }; } /** - * Base interface inherited by {@link IOracleSetDisplay} and {@link IOracleTableDisplay}. + * Describes a game object, with optional required parameters (for example, a specific Location result). * @public */ -export declare interface IOracleDisplayBase extends IDisplay, IHasId { - /** - * If this oracle's `Table` should be rendered as a column of another table, it's indicated here. - * - * If `undefined`, this table is rendered as a standalone table. - * - * If this is set (and the rendering such 'embedded' columns is desired), then `Display.Table` may be safely ignored. - */ - "Column of"?: IOracleTable["$id"] | undefined; - /** - * Information on the rendering of this table when it's provided as a standalone table (as opposed to a column of another table). - * - * If close correspondence to the text's table rendering is desired, `Display["Column of"]` should be preferred (when present). - */ - "Columns"?: [ITableColumnRoll, ...(ITableColumnRoll | ITableColumnText)[]] | undefined; - /** - * This table is displayed as embedded in a row of another table. - */ - "Embed in"?: IRow["$id"] | undefined; +export declare interface GameObject { + "Object type": GameObjectType; + Requires?: Requirements | undefined; } /** + * Describes a game object, with optional required parameters (for example, a specific Location result). * @public */ -export declare interface IOracleMatch extends IHasId, IHasText { - /** - * @pattern ^(Ironsworn|Starforged)/Oracles/[A-z_-]+((/[A-z_-]+)+)?/On_a_Match$ - */ - $id: string; +declare interface GameObject_2 { + "Object type": GameObjectType_2; + Requires?: Requirements_2 | undefined; } /** - * Represents an oracle set: a grouping that can contain both {@link IOracleTable}s and other instances of {@link IOracleSet}, but doesn't have its own `Table` key. - * - * @see {@link IOracleBase} if you need to type both {@link IOracleTable} and {@link IOracleSet} to crawl the oracle hierarchy in search of a specific `$id`. - * * @public */ -export declare interface IOracleSet extends Omit { - /** - * @pattern ^(Ironsworn|Starforged)/Oracles/[A-z_-]+(/[A-z_-]+)?$ - */ - $id: string; - /** - * A list of sample names for this category. Only used by Planetary Class {@link IOracleSet}s. - */ - "Sample Names"?: string[] | undefined; - Sets?: { - [key: string]: IOracleSet; - } | undefined; - Tables?: { - [key: string]: IOracleTable; - } | undefined; - Display: IOracleSetDisplay; +export declare enum GameObjectType { + Derelict = "Derelict", + DerelictZone = "Derelict Zone", + Starship = "Starship", + Settlement = "Settlement", + Planet = "Planet", + PrecursorVault = "Precursor Vault", + Character = "Character", + Creature = "Creature", + Faction = "Faction" } /** - * Information on displaying {@link IOracleSet}, including information on its rendering in the original text. - * - * If an {@link IOracleSet} has `Columns`, it represents a "supertable" composed of multiple roll or string columns. * @public */ -export declare interface IOracleSetDisplay extends Omit { +declare enum GameObjectType_2 { + Derelict = "Derelict", + DerelictZone = "Derelict Zone", + Starship = "Starship", + Settlement = "Settlement", + Planet = "Planet", + PrecursorVault = "Precursor Vault", + Character = "Character", + Creature = "Creature", + Faction = "Faction" } /** - * Represents an oracle that has a `Table` composed of {@link IRow} objects. Appears only as a 'leaf' note on the oracle hierarchy 'tree'. - * - * @see {@link IOracleBase} if you need to type both {@link IOracleTable} and {@link IOracleSet} to crawl the oracle hierarchy in search of a specific `$id`. - * + * Some might say that "Gamespace" is a terrible pun. To them, I reply: you'll never take me alive. * @public */ -export declare interface IOracleTable extends Omit { - /** - * @pattern ^(Ironsworn|Starforged)/Oracles/[A-z_-]+((/[A-z_-]+)+)?$ - */ - $id: string; - /** - * @example - * ```json - * { - * "Canonical": "Character Revealed Aspect", - * "Short": "Revealed Aspect" - * } - * ``` - * @example - * ```json - * { - * "Canonical": "Spaceborne Peril", - * "Short": "Peril" - * } - * ``` - */ - Title: ITitle; - Display: IOracleTableDisplay; - "Table": (IRow | IRowNullStub)[]; - /** - * Describes the match behaviour of this oracle's table, if any, and provides a `Text` string describing it. Only appears on a handful of move oracles like Ask the Oracle and Advance a Threat. - */ - "On a Match"?: IOracleMatch | undefined; +export declare enum Gamespace { + Starforged = "Starforged", + Ironsworn = "Ironsworn" } /** - * Information on displaying {@link IOracleTable}, including information on its rendering in the original text. + * Some might say that "Gamespace" is a terrible pun. To them, I reply: you'll never take me alive. * @public */ -export declare interface IOracleTableDisplay extends IOracleDisplayBase { - "Columns": [ITableColumnRoll, ...(ITableColumnRoll | ITableColumnText)[]]; +declare enum Gamespace_2 { + Starforged = "Starforged", + Ironsworn = "Ironsworn" } /** - * Describes the recommended usage of this item. + * Interface for items with aliases. * @public */ -export declare interface IOracleUsage extends Partial { - /** - * Whether this table should be included in the initial oracle rolls when generating a game object. This is a somewhat arbitrary recommendation, and may not be appropriate for all implementations (or all game situations). Rather it's a reasonable starting point in *most* cases. - * - * That said, the game itself recommends **against** rolling all possible results at once (see "Peeling the Onion", p. 293, *Starforged*). If your goal is to implement the game 'as-written', consider how you might include some means of "progressive disclosure" of oracle results. - * - * May be deprecated in the future in favour of dedicated object template information. - */ - Initial?: boolean | undefined; - Suggestions?: ISuggestions | undefined; - Requires?: IRequirements | undefined; - /** - * The minimum number of rolls when using this oracle to create a game object, *if* this oracle is rolled. Assume it's 1 if not specified. - * @deprecated Previous versions of the Starforged Backer Preview had tables that made use of this key, but none do at present. Given the "peeling the onion" philosophy, this key is of limited utility, and will probably be removed in future versions. - */ - "Min rolls"?: number | undefined; +export declare interface HasAliases { /** - * The maximum number of rolls when using this oracle to create a game object. Assume it's 1 if not specified. + * Alternate names for this item, including: names it had earlier in development that have since changed, alternate spellings/punctuation, common misspellings, and so on. */ - "Max rolls"?: number | undefined; + Aliases: string[]; +} + +/** + * Interface for items with aliases. + * @public + */ +declare interface HasAliases_2 { /** - * Whether the table's standard use is iterative. Common examples are Feature, Opportunity, and Peril tables, which are most often used repeatedly to describe different areas of/events in a place, rather than being assigned as a description of the place as a whole. - * - * Mutually exclusive with `Max rolls`. If undefined, assume `false`. + * Alternate names for this item, including: names it had earlier in development that have since changed, alternate spellings/punctuation, common misspellings, and so on. */ - Repeatable?: boolean | undefined; + Aliases: string[]; +} + +/** + * Interface for items with a user-facing markdown description, consisting of one or more paragraphs. + * @public + */ +export declare interface HasDescription extends HasId { /** - * Whether multiple rolls (as in object generation, or with {@link IMultipleRolls}) . + * A user-facing markdown description of the item, consisting of one or more paragraphs. + * @markdown + * @localize */ - "Allow duplicates"?: boolean | undefined; + Description: string; +} + +/** + * Interface for items with a user-facing markdown description, consisting of one or more paragraphs. + * @public + */ +declare interface HasDescription_2 extends HasId_2 { /** - * Hints which attributes are set by this table. + * A user-facing markdown description of the item, consisting of one or more paragraphs. + * @markdown + * @localize */ - "Sets"?: IAttributeChoices[] | undefined; + Description: string; } /** + * Interface for items with rendering information. * @public */ -export declare interface IOutcomeInfoBase extends IHasId, Partial { +export declare interface HasDisplay { /** - * @pattern ^(Starforged|Ironsworn)/(Moves/[A-z_-]+/[A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/Alter_Moves/[0-9]+|Moves/Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/[A-z_-]+)/Outcomes/((Miss|Strong_Hit)(/With_a_Match)?|Weak_Hit)$ + * Data relevant to this item's display/rendering. */ - $id: string; + Display: Display; +} + +/** + * Interface for items with rendering information. + * @public + */ +declare interface HasDisplay_2 { /** - * Defines a different outcome for this result with a match. Its text should replace the text of this object. + * Data relevant to this item's display/rendering. */ - "With a Match"?: IOutcomeInfoBase | undefined; + Display: Display_2; +} + +/** + * Interface for items that have associated game objects. + * @public + */ +export declare interface HasGameObjects { /** - * Count this roll as another roll outcome, e.g. "Count a weak hit as a miss" + * Any game objects that are explicitly pointed to by the original text. For most implementations, it is *not* recommended to generate them automatically - see "Peeling the Onion", p. 293. */ - "Count as"?: keyof typeof MoveOutcome | undefined; + "Game objects": GameObject[]; +} + +/** + * Interface for items that have associated game objects. + * @public + */ +declare interface HasGameObjects_2 { /** - * Information on rerolls offered by this move. + * Any game objects that are explicitly pointed to by the original text. For most implementations, it is *not* recommended to generate them automatically - see "Peeling the Onion", p. 293. */ - Reroll?: IMoveReroll | undefined; + "Game objects": GameObject_2[] +} + +/** + * For elements with unique string IDs. Any object that contains a localizable user-facing string *must* have an ID, so several interfaces inherit this. + * @public + */ +export declare interface HasId { /** - * Whether this outcome leaves the player character in control (Starforged) or with initiative (Ironsworn) or not. If unspecified, assume that it's `true` on a Strong Hit, and `false` on a Weak Hit or Miss. + * The item's unique string ID. Any object that contains a localizable user-facing string *must* have this key. + * @pattern ^(Starforged|Ironsworn)/[0-9A-z_/-]+$ */ - "In Control"?: boolean | undefined; - Text?: RequireText extends true ? string : (string | undefined); + $id: string; } /** + * For elements with unique string IDs. Any object that contains a localizable user-facing string *must* have an ID, so several interfaces inherit this. * @public */ -export declare interface IOutcomeMiss extends IHasId, IOutcomeInfoBase { +declare interface HasId_2 { /** - * @pattern ^(Starforged|Ironsworn)/(Moves/[A-z_-]+/[A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/Alter_Moves/[0-9]+|Moves/Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/[A-z_-]+)/Outcomes/Miss$ + * The item's unique string ID. Any object that contains a localizable user-facing string *must* have this key. + * @pattern ^(Starforged|Ironsworn)/[0-9A-z_/-]+$ */ $id: string; - "With a Match"?: IOutcomeMissMatch | undefined; +} + +/** + * @public + */ +export declare interface HasLabel extends HasId { /** - * @default false + * The user-facing text label of this item. + * @localize */ - "In Control"?: boolean | undefined; + Label: string; } /** * @public */ -export declare interface IOutcomeMissMatch extends Omit { +declare interface HasLabel_2 extends HasId_2 { /** - * @pattern ^(Starforged|Ironsworn)/(Moves/[A-z_-]+/[A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/Alter_Moves/[0-9]+|Moves/Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/[A-z_-]+)/Outcomes/Miss/With_a_Match$ + * The user-facing text label of this item. + * @localize */ - $id: string; + Label: string +} + +/** + * @public + */ +export declare interface HasOptional { /** + * Whether or not the source material presents this rules item as optional. * @default false */ - "In Control"?: boolean | undefined; + Optional: boolean; } /** * @public */ -export declare interface IOutcomeStrongHit extends IHasId, IOutcomeInfoBase { - /** - * @pattern ^(Starforged|Ironsworn)/(Moves/[A-z_-]+/[A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/Alter_Moves/[0-9]+|Moves/Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/[A-z_-]+)/Outcomes/Strong_Hit$ - */ - $id: string; - "With a Match"?: IOutcomeStrongHitMatch | undefined; +declare interface HasOptional_2 { /** - * @default true + * Whether or not the source material presents this rules item as optional. + * @default false */ - "In Control"?: boolean | undefined; + Optional: boolean; } /** + * Interface for items with metadata that describes an oracle's semantic or lexical content. * @public */ -export declare interface IOutcomeStrongHitMatch extends Omit { +export declare interface HasOracleContent { /** - * @pattern ^(Starforged|Ironsworn)/(Moves/[A-z_-]+/[A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/Alter_Moves/[0-9]+|Moves/Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/[A-z_-]+)/Outcomes/Strong_Hit/With_a_Match$ + * Metadata that describes an oracle's semantic or lexical content. */ - $id: string; + Content: OracleContent; +} + +/** + * Interface for items with metadata that describes an oracle's semantic or lexical content. + * @public + */ +declare interface HasOracleContent_2 { /** - * @default true + * Metadata that describes an oracle's semantic or lexical content. */ - "In Control"?: boolean | undefined; + Content: OracleContent_2; } /** * @public */ -export declare interface IOutcomeWeakHit extends Omit, "With a Match"> { +export declare interface HasQuestStarter extends HasId { /** - * @pattern ^(Starforged|Ironsworn)/(Moves/[A-z_-]+/[A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/Alter_Moves/[0-9]+|Moves/Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/[A-z_-]+)/Outcomes/Weak_Hit$ + * A markdown string describing the quest starter associated with this item. + * @markdown + * @localize */ - $id: string; + "Quest Starter": string; +} + +/** + * @public + */ +declare interface HasQuestStarter_2 extends HasId_2 { /** - * @default false + * A markdown string describing the quest starter associated with this item. + * @markdown + * @localize */ - "In Control"?: boolean | undefined; + "Quest Starter": string; } /** - * Data describing an item's requirements. + * Interface for items that have prerequisites. * @public */ -export declare interface IRequirements { +export declare interface HasRequirements { /** - * A list of attribute keys, and values of those keys that satisfy the requirements. + * Prerequisites for this item. */ - Attributes: IAttributeChoices[]; + Requires: Requirements; } /** - * Describes the string keys of this item that should be replaced with template strings and filled with the results of one or more oracles. + * Interface for items that have prerequisites. * @public */ -export declare interface IRollTemplate extends IHasId, Partial { +declare interface HasRequirements_2 { /** - * @pattern ^(Starforged|Ironsworn)/[A-z_-]+/.+/Roll_template$ + * Prerequisites for this item. */ - $id: string; + Requires: Requirements_2; +} + +/** + * Interface for items that include roll string templates. + * @public + */ +export declare interface HasRollTemplate extends HasId { /** - * A template string for the parent's `Result` property, to be filled with an oracle table roll Result. - * @localize - * @example - * ```json - * "{{Starforged/Oracles/Factions/Affiliation}} of the {{Starforged/Oracles/Factions/Legacy}} {{Starforged/Oracles/Factions/Identity}}" - * ``` + * Describes the string values of this item that should be replaced with template strings and filled with the results of one or more oracle rolls. */ - Result?: string | undefined; + "Roll template": RollTemplate; +} + +/** + * Interface for items that include roll string templates. + * @public + */ +declare interface HasRollTemplate_2 extends HasId_2 { /** - * A template string for the parent's `Summary` property, to be filled with an oracle table roll Result. - * @localize + * Describes the string values of this item that should be replaced with template strings and filled with the results of one or more oracle rolls. */ - Summary?: string | undefined; + "Roll template": RollTemplate_2 +} + +/** + * Interface for items with sourcing information. + * @public + */ +export declare interface HasSource { /** - * A template string for the parent's `Description` property, to be filled with an oracle table roll Result. - * @localize - * @example - * ```json - * "Our computers are limited to simple digital systems and the most basic machine intelligence. This is because: {{Starforged/Setting_Truths/Artificial_Intelligence/1-33/Subtable}}.\n\nThe Adepts serve in place of those advanced systems. They utilize mind-altering drugs to see the universe as a dazzling lattice of data, identifying trends and predicting outcomes with uncanny accuracy. But to gain this insight they sacrifice much of themselves." - * ``` + * Information on this item's source. */ - Description?: string | undefined; + Source: Source; } /** - * Root object for *Ironsworn* game data. + * Interface for items with sourcing information. * @public */ -export declare interface Ironsworn extends GameDataRoot { - "Encounters": { - [key: string]: IEncounterNatureInfo; - }; - "Setting Truths": { - [key: string]: ISettingTruthClassic; - }; - "Site Domains": { - [key: string]: IDelveDomain; - }; - "Site Themes": { - [key: string]: IDelveTheme; - }; - Regions?: { - [key: string]: IIronswornRegion; - }; - Rarities?: { - [key: string]: IDelveRarity; - }; +declare interface HasSource_2 { + + /** + * Information on this item's source. + */ + Source: Source_2; } /** + * Interface for items that have a subtable-like object. + * @deprecated Currently only used by setting truths. If you need to denote a subtable, use the `Oracle rolls` property to point to an `Oracle` in the `Oracles` property of this table's parent. * @public */ -export declare const ironsworn: Ironsworn; +export declare interface HasSubtable { + Subtable: OracleTableRow[]; +} /** - * Interface representing a single row in an oracle table. + * Interface for items that include "non-canonical" suggestions of related items. * @public */ -export declare interface IRow extends Partial & IHasRollTemplate & IHasSuggestions & IHasOracleContent & IHasGameObjects & IHasDisplay> { +export declare interface HasSuggestions { /** - * The ID of this row. - * @pattern ^(Ironsworn|Starforged)/Oracles(/[A-z_-]+)+/[1-9][0-9]*(-[1-9][0-9]*)?(/Subtable/[1-9][0-9]*(-[1-9][0-9]*)?)?$ - */ - $id: string; - /** - * The low end of the dice range for this row. - * @minimum 1 - * @maximum 100 - * @nullable + * "Non-canonical" suggestions of related items. They might be convenient to present to the user, but in most implementations rolling them automatically is not recommended. */ - Floor: number | null; + Suggestions: Suggestions; +} + +/** + * Interface for items that include "non-canonical" suggestions of related items. + * @public + */ +declare interface HasSuggestions_2 { /** - * The high end of the dice range for this row. - * @minimum 1 - * @maximum 100 - * @nullable + * "Non-canonical" suggestions of related items. They might be convenient to present to the user, but in most implementations rolling them automatically is not recommended. */ - Ceiling: number | null; + Suggestions: Suggestions_2; +} + +/** + * Interface for items with a user-facing markdown summary. + * @public + */ +export declare interface HasSummary extends HasId { /** - * The primary result text for the row, annotated in Markdown. - * In the book, this is frequently the only column aside from the roll column. Otherwise, it is the first column. - * Some tables label this column as something other than Result; see the parent (or grandparent) Oracle.Display for more information. + * A user-facing markdown summary of the item. Summary is shorter than {@link HasDescription | Description}, when they're both present. * @markdown * @localize */ - Result: string; + Summary: string; +} + +/** + * Interface for items with a user-facing markdown summary. + * @public + */ +declare interface HasSummary_2 extends HasId_2 { /** - * A secondary markdown string that must be presented to the user for the implementation to be complete, but may benefit from progressive disclosure (such as a collapsible element, popover/tooltip, etc). - * - * Generally, `Summary` is longer than `Result`. - * - * Some tables label this column as something other than `Result`; see the parent (or grandparent) `IOracle.Display.Table` for more information. - * - * `null` is used in cases where an 'empty' `Summary` exists (example: Starship Type, p. 326). In the book, these table cells are rendered with the text `--` (and this is the recommended placeholder for tabular display). For display as a single result (e.g. VTT table roll output), however, `null` values can be safely omitted. - * @nullable + * A user-facing markdown summary of the item. Summary is shorter than {@link HasDescription | Description}, when they're both present. * @markdown * @localize */ - Summary?: string | null | undefined; - /** - * Additional oracle tables that should be rolled when this row is selected. - */ - "Oracle rolls"?: IOracleTable["$id"][] | undefined; - /** - * A table to be rolled when this row is selected. If this row references an external oracle, the `Oracles` property is used instead. - */ - Subtable?: IRow[] | ISettingTruthOptionSubtableRow[] | undefined; - /** - * Data for rows that call for multiple rolls, e.g. on `Roll twice` results. - */ - "Multiple rolls"?: IMultipleRolls | undefined; - /** - * The attributes set by this row. - */ - Attributes?: IAttribute[] | undefined; + Summary: string; } /** - * A row stub that has no dice range assigned to it, but still contains user-facing strings that are relevant to rendering the table. Typically, their dice range appears as "--" in the book. + * Interface for items that have a table-like object. * @public */ -export declare interface IRowNullStub extends Omit, "$id"> { - Floor: null; - Ceiling: null; - Result: string; - Summary?: string | undefined | null; +export declare interface HasTable extends HasId { + Table: OracleTableRow[]; } /** - * Interface for Starforged Setting Truth categories such as "Exodus" and "Cataclysm". See page XX of Starforged for further information. - * @see ISettingTruthOption + * Interface for items that have a table-like object. * @public */ -export declare interface ISettingTruth extends IHasId, IHasSource, IHasDisplay, Partial, IHasTable, IHasTitle { - /** - * @pattern ^Starforged/Setting_Truths/[A-z_-]+$ - */ - $id: string; - /** - * The 'canonical' options for this setting truth category. - */ - Table: ISettingTruthOption[]; - /** - * A Markdown version of the text that appears at the end of each Truth entry; it offers suggestions on the character's assets and background. - * @markdown - * @localize - */ - Character: string; - Display: IDisplay; +declare interface HasTable_2 extends HasId_2 { Table: OracleTableRow_2[] } /** * @public */ -export declare interface ISettingTruthClassic extends IHasTitle, IHasSource { +export declare interface HasTags { /** - * @pattern ^Ironsworn/Setting_Truths/[A-z_-]+$ + * Arbitrary strings tags that describe optional metadata that doesn't fit in other properties. */ - $id: string; - Options: ISettingTruthOptionClassic[]; + Tags: string[]; } /** - * Interface for 'canonical' options within a SettingTruth category. - * @see {@link ISettingTruth} * @public */ -export declare interface ISettingTruthOption extends IRow, IHasQuestStarter, IHasDescription { +declare interface HasTags_2 { /** - * @pattern ^Starforged/Setting_Truths/[A-z_-]+/(1-33|34-67|68-100)$ + * Arbitrary strings tags that describe optional metadata that doesn't fit in other properties. */ - $id: string; - "Roll template"?: IRollTemplate | undefined; - Subtable?: ISettingTruthOptionSubtableRow[] | undefined; + Tags: string[]; } /** + * Interface for items that reproduce Starforged rules text in markdown. * @public */ -export declare interface ISettingTruthOptionClassic extends IHasDescription, IHasQuestStarter { +export declare interface HasText extends HasId { /** - * @pattern ^Ironsworn/Setting_Truths/[A-z_-]+/[1-3]$ + * The item's rules text as a markdown string. + * @markdown + * @localize */ - $id: string; + Text: string; } /** + * Interface for items that reproduce Starforged rules text in markdown. * @public */ -export declare interface ISettingTruthOptionSubtableRow extends IRow { +declare interface HasText_2 extends HasId_2 { /** - * @pattern ^(Starforged|Ironsworn)/Setting_Truths/[A-z_-]+/(1-33|34-67|68-100|[1-3])/[1-9][0-9]*(-[1-9][0-9]*)?$ + * The item's rules text as a markdown string. + * @markdown + * @localize */ - $id: string; + Text: string; } /** - * Interface representing data on this item's source. For 'canonical' content, this is usually a book with numbered pages, but it might also be a link to a web site. * @public */ -export declare interface ISource { - /** - * The title of the source. - * - * For 'canonical' content, use one of the enumerated `SourceTitle` strings. - * - * For 3rd-party content (including homebrew) that's been released as part of a titled document, use the title of that document (e.g. "Steelforged", "Ironsmith"). - * - * If the source has no particular title (for instance, it's a single custom element in a VTT implementation), use "Custom". - */ - Title: SourceTitle | string; - /** - * The author(s) of this item. For 'canonical' content, this one's usually pretty obvious 😉 However, it's included so that homebrew content can use the same interface/schema. - * @default ["Shawn Tomkin"] - */ - Authors: string[]; - /** - * The 6-number date string formatted as `MMDDYY`. Relevant only during Starforged development; it will be deprecated once the game is released. - * @pattern ^(0[1-9]|1[0-2])([0-2][1-9]|3[0-1])([0-9][0-9])$ - */ - Date?: string | undefined; - /** - * The page on which the item appears most prominently in the source material (if it's in a format that uses page numbers). - */ - Page?: number | undefined; - /** - * The URL where the source material is available. - * @pattern ^https?://.*$ - */ - Url?: string | undefined; - /** - * The URL pointing to the license which this content falls under. - */ - License: License; +export declare interface HasTitle extends HasId { + Title: Title; } /** * @public */ -export declare interface ISourceYaml extends Partial { +declare interface HasTitle_2 extends HasId_2 { Title: Title_2 } /** - * Describes "non-canonical" suggestions for game content related to the parent item. - * - * These are intended be offered as convenient shortcuts for the user (for instance, including a menu dropdown for rolling on suggested tables); having them roll automatically is **not recommended** for most projects. - * - * These can be safely ignored if that functionality is not desired. + * A stub interface representing an input widget of any type. + * @see {@link InputNumber}, {@link InputClock}, {@link InputText}, {@link InputSelect} * @public */ -export declare interface ISuggestions { - /** - * Suggested game objects and their parameters. - */ - "Game objects"?: IGameObject[] | undefined; +export declare interface Input extends HasId, HasLabel { /** - * Suggested oracle rolls, by table ID. Multiples of the same ID can be used to indicate that multiple rolls should be made. + * @pattern ^(Starforged|Ironsworn)/Assets/[A-z_-]+/[A-z_-]+(/Abilities/[1-3])?/Inputs/[A-z_-]+$ */ - "Oracle rolls"?: IOracleTable["$id"][] | undefined; + $id: string; + "Input Type": InputType; /** - * Suggested move IDs. + * Whether the input's value is expected to change over the course of a campaign. For example, name fields are typically `false`, while something like a clock or tally would be `true`. + * + * It's a good idea to make everything editable regardless, but this property might inform whether your UI presents that functionality "front and center" or as a secondary interaction (via long press, right click, etc); */ - "Moves"?: IMove["$id"][] | undefined; + Adjustable: boolean; + Label: string; +} + +/** + * A stub interface representing an input widget of any type. + * @see {@link InputNumber}, {@link InputClock}, {@link InputText}, {@link InputSelect} + * @public + */ +declare interface Input_2 extends HasId_2, HasLabel_2 { /** - * Suggested asset IDs. + * @pattern ^(Starforged|Ironsworn)/Assets/[A-z_-]+/[A-z_-]+(/Abilities/[1-3])?/Inputs/[A-z_-]+$ */ - "Assets"?: IAsset["$id"][] | undefined; + $id: string; + "Input Type": InputType_2; /** - * Suggested encounter IDs. + * Whether the input's value is expected to change over the course of a campaign. For example, name fields are typically `false`, while something like a clock or tally would be `true`. + * + * It's a good idea to make everything editable regardless, but this property might inform whether your UI presents that functionality "front and center" or as a secondary interaction (via long press, right click, etc); */ - "Encounters"?: IEncounterStarforged["$id"][] | IEncounterIronsworn["$id"][] | undefined; + Adjustable: boolean; + Label: string; +} + +/** + * An input representing an *Ironsworn: Starforged* clock. + * @page 239 + * @see {@link InputType.Clock} + * @public + */ +export declare interface InputClock extends Input { + "Input Type": InputType.Clock; /** - * Suggested delve site themes. + * Whether the clock is a Tension Clock or a Campaign Clock. For assets this doesn't really matter since they have their own specific trigger conditions, and can probably be ignored. */ - "Themes"?: IDelveTheme["$id"][] | undefined; + "Clock Type": ClockType; /** - * Suggested delve site domains. + * An integer representing the total number of segments in this Clock. *Ironsworn: Starforged* uses clocks with 4, 6, 8, and 10 segments. + * + * `Filled` should not exceed this number. */ - "Domains"?: IDelveDomain["$id"][] | undefined; + Segments: ClockSegments; /** - * Suggested Ironlands regions. + * An integer representing how many filled segments this clock has. This is always 0 in Dataforged; it's included to make it easy to store clock states with the same interface. */ - "Regions"?: IIronswornRegion["$id"][] | undefined; + Filled: number; } /** - * Interface with elements common to {@link ITableColumnRoll} and {@link ITableColumnText}. + * An input representing an *Ironsworn: Starforged* clock. + * @page 239 + * @see {@link InputType.Clock} * @public */ -export declare interface ITableColumnBase extends IHasLabel { +declare interface InputClock_2 extends Input_2 { + "Input Type": InputType_2.Clock; /** - * The label or header text to use for this column. - * @localize + * Whether the clock is a Tension Clock or a Campaign Clock. For assets this doesn't really matter since they have their own specific trigger conditions, and can probably be ignored. */ - Label: string; + "Clock Type": ClockType_2; /** - * The ID of the {@link IOracleTable} whose {@link IOracleTable.Table} content will be displayed in the table. + * An integer representing the total number of segments in this Clock. *Ironsworn: Starforged* uses clocks with 4, 6, 8, and 10 segments. + * + * `Filled` should not exceed this number. */ - "Content": IOracleTable["$id"]; - Type: TableColumnType; + Segments: ClockSegments_2 /** - * The key of each {@link IRow} in the {@link IOracleTable.Table}, whose string value is displayed in the rendered table. + * An integer representing how many filled segments this clock has. This is always 0 in Dataforged; it's included to make it easy to store clock states with the same interface. */ - Key?: KeysWithValuesOfType | undefined; + Filled: number; } /** + * An input where the user sets an integer. + * Suggested rendering: a number input spinner, similar to `` in HTML. + * @see {@link InputType.Number} * @public */ -export declare interface ITableColumnRoll extends Omit { +export declare interface InputNumber extends Input { + "Input Type": InputType.Number; + Min: number; /** - * @default "Roll" - * @localize + * @nullable */ - Label: string; - Type: TableColumnType.Range; + Max: number | null; + Step: 1; + Value: number; } /** - * Describes the rendering of a table column that displays textual content (as opposed to {@link ITableColumnRoll}, which displays numerical ranges). + * An input where the user sets an integer. + * Suggested rendering: a number input spinner, similar to `` in HTML. + * @see {@link InputType.Number} * @public */ -export declare interface ITableColumnText extends ITableColumnBase { - Type: TableColumnType.String; - /** - * @default "Result" - * @localize - */ - Label: string; +declare interface InputNumber_2 extends Input_2 { + "Input Type": InputType_2.Number; + Min: number; /** - * @default "Result" + * @nullable */ - Key: KeysWithValuesOfType; + Max: number | null; + Step: 1; + Value: number; } /** + * An input where the user selects a single option from a list of pre-set options. + * Suggested rendering: a drop-down selection menu. + * @example + * ```json + * { + * "Label": "Material", + * "Input Type": "Select", + * "Attributes": [ + * { "Key": "stat", "Type": "Stat" }, + * { "Key": "condition_meter", "Type": "Condition Meter" } + * ], + * "Options": [ + * { + * "Label": "Thunderwood", + * "Sets": [ + * { "Key": "stat", "Value": "edge" }, + * { "Key": "condition_meter", "Value": "health" } + * ] + * } + * ] + * } + * ``` * @public */ -export declare interface ITitle extends IHasId { +export declare interface InputSelect extends Input { + "Input Type": InputType.Select; /** - * @pattern ^(Starforged|Ironsworn)/[0-9A-z_/-]+/Title$ - */ - $id: string; - /** - * The title of this item, which here is defined as the associated header text *exactly* as it appears on the page. - * - * For items that represent a single table column, this is the label that appears at the top of the column. - * - * Use this title if you want high fidelity to the book. For most interactive UX, it's recommended to use {@link ITitle.Standard} instead. - * - * @localize - */ - Canonical: string; - /** - * The recommended title for most implementations. - * - * This is usually the same as the canonical title, but editorializes a bit by trimming out things like "Oracle 15" in some Ironsworn oracles (because *nobody* remembers it as "Oracle 15"). - * - * If you need the shortest possible name, see {@link ITitle.Short} instead. - * @localize - */ - Standard: string; - /** - * The shortest title for this item that remains distinct amongst its siblings. - * - * Unless you're very pressed for space, most UX should use {@link ITitle.Standard} instead. - * - * @localize + * Hints which attribute(s) set by this dropdown's options. */ - Short: string; + Sets: InputSelectAttributeDefinition[]; + Options: InputSelectOption[]; } /** + * An input where the user selects a single option from a list of pre-set options. + * Suggested rendering: a drop-down selection menu. + * @example + * ```json + * { + * "Label": "Material", + * "Input Type": "Select", + * "Attributes": [ + * { "Key": "stat", "Type": "Stat" }, + * { "Key": "condition_meter", "Type": "Condition Meter" } + * ], + * "Options": [ + * { + * "Label": "Thunderwood", + * "Sets": [ + * { "Key": "stat", "Value": "edge" }, + * { "Key": "condition_meter", "Value": "health" } + * ] + * } + * ] + * } + * ``` * @public */ -export declare type KeysMatching = { - [K in keyof T]-?: T[K] extends V ? K : never; -}[keyof T]; +declare interface InputSelect_2 extends Input_2 { + "Input Type": InputType_2.Select; + /** + * Hints which attribute(s) set by this dropdown's options. + */ + Sets: InputSelectAttributeDefinition_2[]; + Options: InputSelectOption_2[]; +} /** + * Provides hints for the keys and typing of an {@link InputSelect}'s child {@link InputSelectOption}s. + * @typeParam V - The type(s) of the value(s) set by this item's options. * @public */ -export declare type KeysWithValuesOfType = keyof { - [P in keyof T]: T[P] extends V | undefined ? V : never; -}; +export declare interface InputSelectAttributeDefinition { + /** + * @pattern ^[a-z_]+$ + */ + Key: string; + Type: InputSelectOptionType; +} /** + * Provides hints for the keys and typing of an {@link InputSelect}'s child {@link InputSelectOption}s. + * @typeParam V - The type(s) of the value(s) set by this item's options. * @public */ -export declare enum License { - CC_BY_NC_SA = "https://creativecommons.org/licenses/by-nc-sa/4.0/", - CC_BY_SA = "https://creativecommons.org/licenses/by-sa/4.0/", - None = "None" +declare interface InputSelectAttributeDefinition_2 { + /** + * @pattern ^[a-z_]+$ + */ + Key: string; + Type: InputSelectOptionType_2; } /** - * Set by Oracles / Location Themes / Theme Type + * Represents an option in an {@link InputSelect}. * @public */ -export declare enum LocationTheme { - Chaotic = "Chaotic", - Fortified = "Fortified", - Haunted = "Haunted", - Infested = "Infested", - Inhabited = "Inhabited", - Mechanical = "Mechanical", - Ruined = "Ruined", - Sacred = "Sacred" +export declare interface InputSelectOption extends HasId, HasLabel { + /** + * @pattern ^(Starforged|Ironsworn)/Assets/[A-z_-]+/[A-z_-]+/Inputs/[A-z_-]+/Options/[A-z_-]+$ + */ + $id: string; + /** + * A array describing what attribute keys should be set to when this option is active. *All* items in the array should be set in this manner. + */ + Set: (InputSelectOptionSetterStat | InputSelectOptionSetterMeter | InputSelectOptionSetterNumber | InputSelectOptionSetterString)[]; } /** + * Represents an option in an {@link InputSelect}. * @public */ -export declare type MetadataKey = "$id" | "Title" | "Asset Type" | "Display" | "Source" | "Tags" | "Usage" | "Aliases"; +declare interface InputSelectOption_2 extends HasId_2, HasLabel_2 { + /** + * @pattern ^(Starforged|Ironsworn)/Assets/[A-z_-]+/[A-z_-]+/Inputs/[A-z_-]+/Options/[A-z_-]+$ + */ + $id: string; + /** + * A array describing what attribute keys should be set to when this option is active. *All* items in the array should be set in this manner. + */ + Set: (InputSelectOptionSetterStat_2| InputSelectOptionSetterMeter_2| InputSelectOptionSetterNumber_2| InputSelectOptionSetterString_2)[]; +} /** - * Names of non-player condition meters (for e.g. companions and vehicles) that are referenced by moves and other assets. - * If an asset condition meter can be used in this manner, the alias is included in its Aliases array. * @public */ -export declare enum MeterAlias { - Attached_Asset_Meter = "attached asset meter", - CompanionHealth = "companion health", - VehicleIntegrity = "vehicle integrity", - CommandVehicleIntegrity = "command vehicle integrity", - SupportVehicleIntegrity = "support vehicle integrity", - IncidentalVehicleIntegrity = "incidental vehicle integrity" +export declare interface InputSelectOptionSetter extends HasId { + /** + * @pattern ^(Starforged|Ironsworn)/Assets/[A-z_-]+/[A-z_-]+/Inputs/[A-z_-]+/Options/[A-z_-]+/[A-z_-]+$ + */ + $id: string; + Key: InputSelectAttributeDefinition["Key"]; + Type: InputSelectOptionType; + Value: Stat | PlayerConditionMeter | number | string; } /** - * Conditions (such as impacts) that can apply to asset cards with condition meters. These are typically presented as tick boxes on the asset card. * @public */ -export declare enum MeterCondition { - /** - * Battered may be marked when your vehicle is at 0 integrity and you fail to Withstand Damage. The vehicle is barely holding together. - * @page 51 - */ - Battered = "battered", - /** - * Cursed may be marked when your command vehicle (STARSHIP asset) is at 0 integrity and you fail to Withstand Damage. This is a permanent impact. Your ship will never be quite right again. - * @page 51 - */ - Cursed = "cursed", +declare interface InputSelectOptionSetter_2 extends HasId_2 { /** - * When your companion’s health is at 0 and you score a miss, they are out of action. You cannot leverage their support until they gain at least +1 health. Envision what this means in the fiction of your scene. - * @page 204 + * @pattern ^(Starforged|Ironsworn)/Assets/[A-z_-]+/[A-z_-]+/Inputs/[A-z_-]+/Options/[A-z_-]+/[A-z_-]+$ */ - OutOfAction = "out of action", - /** Used by "Fleet Commander" asset */ - Wrecked = "wrecked" + $id: string; + Key: InputSelectAttributeDefinition_2["Key"]; + Type: InputSelectOptionType_2; + Value: Stat_2 | PlayerConditionMeter_2 | number | string; } /** - * Enumerates player character resource meters. + * A condition meter set by an {@link InputSelectOption}. * @public */ -export declare enum MeterType { - Health = "health", - Spirit = "spirit", - Supply = "supply", - Momentum = "momentum" +export declare interface InputSelectOptionSetterMeter extends InputSelectOptionSetter { + Type: InputSelectOptionType.ConditionMeter; + Value: PlayerConditionMeter; } /** - * "Assets" is also valid, technically, but it's only used in IDs, so it's omitted here. + * A condition meter set by an {@link InputSelectOption}. * @public */ -export declare enum MoveCategoryName { - Session = "Session", - Adventure = "Adventure", - Quest = "Quest", - Connection = "Connection", - Exploration = "Exploration", - Combat = "Combat", - Suffer = "Suffer", - Recover = "Recover", - Threshold = "Threshold", - Legacy = "Legacy", - Fate = "Fate" +declare interface InputSelectOptionSetterMeter_2 extends InputSelectOptionSetter_2 { + Type: InputSelectOptionType_2.ConditionMeter; + Value: PlayerConditionMeter_2 } /** + * An integer value set by an {@link InputSelectOption}. * @public */ -export declare enum MoveOutcome { - Miss = 0, - "Weak Hit" = 1, - "Strong Hit" = 2 +export declare interface InputSelectOptionSetterNumber extends InputSelectOptionSetter { + Type: InputSelectOptionType.Number; + Value: number; } /** + * An integer value set by an {@link InputSelectOption}. * @public */ -export declare type Nullable = { - [P in keyof T]: T[P] | null; -}; +declare interface InputSelectOptionSetterNumber_2 extends InputSelectOptionSetter_2 { + Type: InputSelectOptionType_2.Number; + Value: number +} /** + * A stat set by an {@link InputSelectOption}. * @public */ -export declare type NullableKey = { - [P in keyof T]: P extends K ? T[P] | null : T[P]; -}; +export declare interface InputSelectOptionSetterStat extends InputSelectOptionSetter { + Type: InputSelectOptionType.Stat; + Value: Stat; +} /** - * Similar to "Omit", but recurses through any keyed object children to omit K from them, too. + * A stat set by an {@link InputSelectOption}. * @public */ -export declare type OmitDeep = { - [P in keyof T]: P extends K ? never : T[P] extends Record ? OmitDeep : T[P]; -}; +declare interface InputSelectOptionSetterStat_2 extends InputSelectOptionSetter_2 { + Type: InputSelectOptionType_2.Stat; + Value: Stat_2 +} /** - * A stub that omits common metadata recursively. Use it to create things like e.g. AssetAlterProperties. - * - * Additional keys to omit (non-recursively) may optionally be provided with K. + * An arbitrary string value set by an {@link InputSelectOption}. * @public */ -export declare type OmitMetadataDeep = OmitDeep, MetadataKey>; +export declare interface InputSelectOptionSetterString extends InputSelectOptionSetter { + Type: InputSelectOptionType.String; + Value: string; +} /** - * Omits "never" types. + * An arbitrary string value set by an {@link InputSelectOption}. * @public */ -export declare type OmitNever = { - [K in keyof T as T[K] extends never ? never : K]: T[K]; -}; +declare interface InputSelectOptionSetterString_2 extends InputSelectOptionSetter_2 { + Type: InputSelectOptionType_2.String; + Value: string +} /** + * The type of an attribute set by a Select Input. * @public */ -export declare type OptionalKeys = { - [K in keyof T]-?: Record extends Pick ? K : never; -}[keyof T]; +export declare enum InputSelectOptionType { + /** + * A reference to one of the player character's stats: edge, heart, iron, shadow, or wits. + * @see {@link Stat} + */ + Stat = "Stat", + /** + * A reference to one of the player character's condition meters (Starforged) or status tracks (Ironsworn): health, spirit, or supply. + * @see {@link PlayerConditionMeter} + */ + ConditionMeter = "Condition Meter", + /** + * An arbitrary pre-set string value. + */ + String = "String", + /** + * A arbitrary pre-set number value. + */ + Number = "Number" +} /** - * Makes a type where K is nullable. + * The type of an attribute set by a Select Input. * @public */ -export declare type PartialBy = Omit & Partial>; +declare enum InputSelectOptionType_2 { + /** + * A reference to one of the player character's stats: edge, heart, iron, shadow, or wits. + * @see {@link Stat} + */ + Stat = "Stat", + /** + * A reference to one of the player character's condition meters (Starforged) or status tracks (Ironsworn): health, spirit, or supply. + * @see {@link PlayerConditionMeter} + */ + ConditionMeter = "Condition Meter", + /** + * An arbitrary pre-set string value. + */ + String = "String", + /** + * A arbitrary pre-set number value. + */ + Number = "Number" +} /** - * Similar to 'Partial', but recurses through all properties and their children, too. Use with care, as it can sometimes cause compiler segfaults. It's recommended to combine this with Omit if there's properties that you're sure you won't need (make {@link PartialDeep} the outermost generic type, in this case). - * + * A text input. + * Suggested rendering: a single-line text input, similar to `` in HTML. + * @see {@link InputType.Text} * @public */ -export declare type PartialDeep = Partial<{ - [P in keyof T]?: (T[P] extends Record ? PartialDeep : T[P]) | undefined; -}>; +export declare interface InputText extends Input { + "Input Type": InputType.Text; +} /** - * Makes a type where K and its properties are nullable. + * A text input. + * Suggested rendering: a single-line text input, similar to `` in HTML. + * @see {@link InputType.Text} * @public */ -export declare type PartialDeepBy = Omit & PartialDeep>; +declare interface InputText_2 extends Input_2 { + "Input Type": InputType_2.Text +} /** - * Make all properties of T nullable except for K, which is required. * @public */ -export declare type PartialExcept = RequireKey<{ - [P in keyof T]?: T[P]; -}, K>; - -/** - * A stub that with recursively optional metadata. Additional keys to make partial may optionally be provided with K. +export declare enum InputType { + /** + * @see {@link InputText} + */ + Text = "text", + /** + * @see {@link InputSelect} + */ + Select = "select", + /** + * @see {@link InputNumber} + */ + Number = "number", + /** + * @see {@link InputClock} + */ + Clock = "clock" +} + +/** * @public */ -export declare type PartialMetadataDeep = PartialDeepBy; +declare enum InputType_2 { + /** + * @see {@link InputText} + */ + Text = "text", + /** + * @see {@link InputSelect} + */ + Select = "select", + /** + * @see {@link InputNumber} + */ + Number = "number", + /** + * @see {@link InputClock} + */ + Clock = "clock" +} /** * @public */ -export declare enum PartOfSpeechTag { - Noun = "noun", - CommonNoun = "common noun", - Fragment = "fragment", - Adjective = "adjective", - ProperNoun = "proper noun", - Verb = "verb", - Plural = "plural", - Name = "name", - ProperNounFragment = "proper noun fragment", - Sentences = "sentences", - CompoundNoun = "compound noun", - PossessiveCase = "possessive case" +export declare interface IronlandsRegion extends CyclopediaEntry, HasSummary, HasQuestStarter { + /** + * @pattern ^Ironsworn/Regions/[A-z_-]$ + */ + $id: string; + Features: string[]; + "Quest Starter": string; + Summary: string; } /** - * Set by "Oracles / Planets / Class" * @public */ -export declare enum PlanetaryClass { - Desert = "Desert", - Furnace = "Furnace", - Grave = "Grave", - Ice = "Ice", - Jovian = "Jovian", - Jungle = "Jungle", - Ocean = "Ocean", - Rocky = "Rocky", - Shattered = "Shattered", - Tainted = "Tainted", - Vital = "Vital" +declare interface IronlandsRegion_2 extends CyclopediaEntry_2, HasSummary_2, HasQuestStarter_2 { + /** + * @pattern ^Ironsworn/Regions/[A-z_-]$ + */ + $id: string; + Features: string[]; + "Quest Starter": string; + Summary: string; } /** - * Standard player character condition meters. + * Root object for *Ironsworn* game data. * @public */ -export declare enum PlayerConditionMeter { - Health = "health", - Spirit = "spirit", - Supply = "supply" +export declare interface Ironsworn extends GameDataRoot { + "Encounters": { + [key: string]: EncounterNatureClassicInfo; + }; + "Setting Truths": { + [key: string]: TruthClassic; + }; + "Site Domains": { + [key: string]: DelveDomain; + }; + "Site Themes": { + [key: string]: DelveTheme; + }; + Regions: { + [key: string]: IronlandsRegion; + }; + Rarities?: { + [key: string]: DelveRarity; + }; } /** * @public */ -export declare enum ProgressTypeIronsworn { - Combat = "combat progress", - Vow = "vow progress", - Journey = "journey progress", - Delve = "delve progress", - SceneChallenge = "scene challenge progress", - BondsTrack = "bonds track" +export declare const ironsworn: Ironsworn; + +/** + * @public + */ +export declare type KeysMatching = { + [K in keyof T]-?: T[K] extends V ? K : never; +}[keyof T]; + +/** + * @public + */ +export declare type KeysWithValuesOfType = keyof { + [P in keyof T]: T[P] extends V | undefined ? V : never; +}; + +/** + * @public + */ +declare type KeysWithValuesOfType_2 = keyof { + [P in keyof T]: T[P] extends V | undefined ? V : never; +}; + +/** + * @public + */ +export declare enum License { + CC_BY_NC_SA = "https://creativecommons.org/licenses/by-nc-sa/4.0/", + CC_BY_SA = "https://creativecommons.org/licenses/by-sa/4.0/", + None = "None" } /** * @public */ -export declare enum ProgressTypeStarforged { - Combat = "combat progress", - Vow = "vow progress", - Expedition = "expedition progress", - Connection = "connection progress", - SceneChallenge = "scene challenge progress", - QuestsLegacy = "quests legacy", - BondsLegacy = "bonds legacy", - DiscoveriesLegacy = "discoveries legacy" +declare enum License_2 { + CC_BY_NC_SA = "https://creativecommons.org/licenses/by-nc-sa/4.0/", + CC_BY_SA = "https://creativecommons.org/licenses/by-sa/4.0/", + None = "None" } /** - * Standard replacement strings, used by constructors when processing the master YAML data. + * Set by Oracles / Location Themes / Theme Type * @public */ -export declare enum Replacement { +export declare enum LocationTheme { + Chaotic = "Chaotic", + Fortified = "Fortified", + Haunted = "Haunted", + Infested = "Infested", + Inhabited = "Inhabited", + Mechanical = "Mechanical", + Ruined = "Ruined", + Sacred = "Sacred" +} + +/** + * Set by Oracles / Location Themes / Theme Type + * @public + */ +declare enum LocationTheme_2 { + Chaotic = "Chaotic", + Fortified = "Fortified", + Haunted = "Haunted", + Infested = "Infested", + Inhabited = "Inhabited", + Mechanical = "Mechanical", + Ruined = "Ruined", + Sacred = "Sacred" +} + +/** + * @public + */ +export declare type MetadataKey = "$id" | "Title" | "Asset Type" | "Display" | "Source" | "Tags" | "Usage" | "Aliases"; + +/** + * @public + */ +declare type MetadataKey_2 = "$id" | "Title" | "Asset Type" | "Display" | "Source" | "Tags" | "Usage" | "Aliases"; + +/** + * Base interface for properties common to all resource meters. + * @see {@link ConditionMeter} + * @public + */ +export declare interface Meter extends HasId, HasLabel { /** - * Replace with the ID of the nearest ancestor asset. + * The minimum value of the meter. Usually this is 0. Momentum is currently the only exception to this and goes as low as -6. */ - Asset = "${{@ASSET}}", + Min: number; /** - * Replace with the ID of the nearest ancestor asset's condition meter. + * The maximum value of the meter. */ - AssetMeter = "${{@ASSET_METER}}", + Max: number; /** - * Replace with the ID of the nearest ancestor move trigger's custom stat. + * The initial value of the meter. */ - CustomStat = "${{@CUSTOM_STAT}}", + Value: number; /** - * Replace with the ID of the nearest select option value of the Stat type + * Whether the meter value can be used in place of a stat in an action roll. */ - AssetSelectStat = "${{@ASSET_SELECT_STAT}}", + Rollable: boolean; /** - * Replace with the ID of the nearest select option value of the ConditionMeter type. + * @pattern ^[a-z].+$ */ - AssetSelectMeter = "${{@ASSET_SELECT_METER}}" + Label: string; } /** + * Base interface for properties common to all resource meters. + * @see {@link ConditionMeter} * @public */ -export declare type RequiredKeys = { - [K in keyof T]-?: Record extends Pick ? never : K; -}[keyof T]; - -/** - * Generic type: require specific keys to be NonNullable. - * @public - */ -export declare type RequireKey = T & { - [P in K]-?: NonNullable; -}; - -/** - * Enumerates which dice are to be rerolled. - * @public - */ -export declare enum RerollType { +declare interface Meter_2 extends HasId_2, HasLabel_2 { /** - * The player can pick and choose which dice to reroll. + * The minimum value of the meter. Usually this is 0. Momentum is currently the only exception to this and goes as low as -6. */ - Any = "Any", + Min: number; /** - * The player can pick and choose which challenge dice to reroll. + * The maximum value of the meter. */ - ChallengeDice = "Challenge dice", + Max: number; /** - * The action die is rerolled. + * The initial value of the meter. */ - ActionDie = "Action die", + Value: number; /** - * The player can choose one challenge die to reroll. + * Whether the meter value can be used in place of a stat in an action roll. */ - ChallengeDie = "Challenge die", + Rollable: boolean; /** - * Reroll *all* dice + * @pattern ^[a-z].+$ */ - All = "All" + Label: string; } /** + * Names of non-player condition meters (for e.g. companions and vehicles) that are referenced by moves and other assets. + * If an asset condition meter can be used in this manner, the alias is included in its Aliases array. * @public */ -export declare type RetainBlacklist = { - [P in keyof T as T[P] extends BlacklistPartial ? P : never]: T[P]; -}; +export declare enum MeterAlias { + Attached_Asset_Meter = "attached asset meter", + CompanionHealth = "companion health", + VehicleIntegrity = "vehicle integrity", + CommandVehicleIntegrity = "command vehicle integrity", + SupportVehicleIntegrity = "support vehicle integrity", + IncidentalVehicleIntegrity = "incidental vehicle integrity" +} /** - * Enumerates the ID of every 'canonical' Starforged oracle that can be rolled directly. Provided to make it easy to type-check e.g. functions that accept an oracle ID as an argument. + * Names of non-player condition meters (for e.g. companions and vehicles) that are referenced by moves and other assets. + * If an asset condition meter can be used in this manner, the alias is included in its Aliases array. * @public */ -export declare enum RollableOraclesSF { - Character_Creation_Background_Assets = "Starforged/Oracles/Character_Creation/Background_Assets", - Character_Creation_Backstory_Prompts = "Starforged/Oracles/Character_Creation/Backstory_Prompts", - Character_Creation_Inciting_Incident = "Starforged/Oracles/Character_Creation/Inciting_Incident", - Character_Creation_Sector_Trouble = "Starforged/Oracles/Character_Creation/Sector_Trouble", - Character_Creation_Starship_History = "Starforged/Oracles/Character_Creation/Starship_History", - Character_Creation_Starship_Quirks = "Starforged/Oracles/Character_Creation/Starship_Quirks", - Characters_Disposition = "Starforged/Oracles/Characters/Disposition", - Characters_First_Look = "Starforged/Oracles/Characters/First_Look", - Characters_Goal = "Starforged/Oracles/Characters/Goal", - Characters_Name_Callsign = "Starforged/Oracles/Characters/Name/Callsign", - Characters_Name_Family_Name = "Starforged/Oracles/Characters/Name/Family_Name", +declare enum MeterAlias_2 { + Attached_Asset_Meter = "attached asset meter", + CompanionHealth = "companion health", + VehicleIntegrity = "vehicle integrity", + CommandVehicleIntegrity = "command vehicle integrity", + SupportVehicleIntegrity = "support vehicle integrity", + IncidentalVehicleIntegrity = "incidental vehicle integrity" +} + +/** + * Conditions (such as impacts) that can apply to asset cards with condition meters. These are typically presented as tick boxes on the asset card. + * @public + */ +export declare enum MeterCondition { + /** + * Battered may be marked when your vehicle is at 0 integrity and you fail to Withstand Damage. The vehicle is barely holding together. + * @page 51 + */ + Battered = "battered", + /** + * Cursed may be marked when your command vehicle (STARSHIP asset) is at 0 integrity and you fail to Withstand Damage. This is a permanent impact. Your ship will never be quite right again. + * @page 51 + */ + Cursed = "cursed", + /** + * When your companion’s health is at 0 and you score a miss, they are out of action. You cannot leverage their support until they gain at least +1 health. Envision what this means in the fiction of your scene. + * @page 204 + */ + OutOfAction = "out of action", + /** Used by "Fleet Commander" asset */ + Wrecked = "wrecked" +} + +/** + * Conditions (such as impacts) that can apply to asset cards with condition meters. These are typically presented as tick boxes on the asset card. + * @public + */ +declare enum MeterCondition_2 { + /** + * Battered may be marked when your vehicle is at 0 integrity and you fail to Withstand Damage. The vehicle is barely holding together. + * @page 51 + */ + Battered = "battered", + /** + * Cursed may be marked when your command vehicle (STARSHIP asset) is at 0 integrity and you fail to Withstand Damage. This is a permanent impact. Your ship will never be quite right again. + * @page 51 + */ + Cursed = "cursed", + /** + * When your companion’s health is at 0 and you score a miss, they are out of action. You cannot leverage their support until they gain at least +1 health. Envision what this means in the fiction of your scene. + * @page 204 + */ + OutOfAction = "out of action", + /** Used by "Fleet Commander" asset */ + Wrecked = "wrecked" +} + +/** + * Enumerates player character resource meters. + * @public + */ +export declare enum MeterType { + Health = "health", + Spirit = "spirit", + Supply = "supply", + Momentum = "momentum" +} + +/** + * Interface representing a Starforged move. + * @public + */ +export declare interface Move extends HasId, HasText, HasDisplay, HasSource, HasOptional, HasTitle, Partial { + /** + * @example "Starforged/Moves/Adventure/Face_Danger" + * @pattern ^(Starforged|Ironsworn)/Moves/([A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3])/[A-z_-]+$ + */ + $id: string; + /** + * Note the "Canonical" key for asset-specific moves is something of a misnomer, as in the original text doesn't name them. They're provided in the same format for convenience, however. + * @see HasTitle + * @example + * ```json + * {"Canonical": "Face Danger"} + * ``` + */ + Title: Title; + /** + * The ID of the parent Asset of the move, if any. + */ + Asset?: Asset["$id"] | undefined; + /** + * The ID of the move's category. + * @example "Starforged/Moves/Adventure" + */ + Category: MoveCategory["$id"]; + /** + * Whether or not the move is a Progress Move. Progress moves roll two challenge dice against a progress score. + */ + "Progress Move"?: boolean | undefined; + /** + * The ID of the move that this move is a variant of, if any. + */ + "Variant of"?: Move["$id"] | undefined; + /** + * The move's trigger data. + */ + Trigger: MoveTrigger; + /** + * The IDs of any oracles directly referenced by the move, or vice versa. + */ + Oracles?: OracleTable["$id"][] | undefined; + /** + * Outcome information for the move. + */ + Outcomes?: Outcomes | undefined; + Tags?: string[] | undefined; +} + +/** + * Interface representing a Starforged move. + * @public + */ +declare interface Move_2 extends HasId_2, HasText_2, HasDisplay_2, HasSource_2, HasOptional_2, HasTitle_2,Partial { + /** + * @example "Starforged/Moves/Adventure/Face_Danger" + * @pattern ^(Starforged|Ironsworn)/Moves/([A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3])/[A-z_-]+$ + */ + $id: string; + /** + * Note the "Canonical" key for asset-specific moves is something of a misnomer, as in the original text doesn't name them. They're provided in the same format for convenience, however. + * @see HasTitle + * @example + * ```json + * {"Canonical": "Face Danger"} + * ``` + */ + Title: Title_2; + /** + * The ID of the parent Asset of the move, if any. + */ + Asset?: Asset_2["$id"] | undefined; + /** + * The ID of the move's category. + * @example "Starforged/Moves/Adventure" + */ + Category: MoveCategory_2["$id"]; + /** + * Whether or not the move is a Progress Move. Progress moves roll two challenge dice against a progress score. + */ + "Progress Move"?: boolean | undefined; + /** + * The ID of the move that this move is a variant of, if any. + */ + "Variant of"?: Move_2["$id"] | undefined; + /** + * The move's trigger data. + */ + Trigger: MoveTrigger_2; + /** + * The IDs of any oracles directly referenced by the move, or vice versa. + */ + Oracles?: OracleTable_2["$id"][] | undefined; + /** + * Outcome information for the move. + */ + Outcomes?: Outcomes_2 | undefined; + Tags?: string[] | undefined; +} + +/** + * Represents a category of moves such as "Session Moves" or "Combat Moves", and serves as a container for moves within that category. + * @public + */ +export declare interface MoveCategory extends HasId, HasSource, HasDescription, HasDisplay, HasOptional, HasTitle { + /** + * @example "Starforged/Moves/Adventure" + * @pattern ^(Starforged|Ironsworn)/Moves/[A-z_-]+$ + */ + $id: string; + Moves: { + [key: string]: Move; + }; +} + +/** + * Represents a category of moves such as "Session Moves" or "Combat Moves", and serves as a container for moves within that category. + * @public + */ +declare interface MoveCategory_2 extends HasId_2, HasSource_2, HasDescription_2, HasDisplay_2, HasOptional_2, HasTitle_2 { + /** + * @example "Starforged/Moves/Adventure" + * @pattern ^(Starforged|Ironsworn)/Moves/[A-z_-]+$ + */ + $id: string; + Moves: {[key:string]: Move_2}; +} + +/** + * "Assets" is also valid, technically, but it's only used in IDs, so it's omitted here. + * @public + */ +export declare enum MoveCategoryName { + Session = "Session", + Adventure = "Adventure", + Quest = "Quest", + Connection = "Connection", + Exploration = "Exploration", + Combat = "Combat", + Suffer = "Suffer", + Recover = "Recover", + Threshold = "Threshold", + Legacy = "Legacy", + Fate = "Fate" +} + +/** + * @public + */ +export declare enum MoveOutcome { + Miss = 0, + "Weak Hit" = 1, + "Strong Hit" = 2 +} + +/** + * @public + */ +declare enum MoveOutcome_2 { + Miss = 0, + "Weak Hit" = 1, + "Strong Hit" = 2 +} + +/** + * Describes a reroll offered by a move outcome. The vast majority of rerolls in *Ironsworn* are elective, so automatic rerolling isn't recommended. + * @public + */ +export declare interface MoveReroll extends HasId, Partial { + /** + * + */ + $id: string; + /** + * The markdown string describing the conditions of the reroll. It should be presented to the user so that they can decide whether a reroll is appropriate. + * @markdown + * @localize + */ + Text?: string | undefined; + /** + * The dice to be rerolled. + */ + Dice: RerollType; +} + +/** + * Describes a reroll offered by a move outcome. The vast majority of rerolls in *Ironsworn* are elective, so automatic rerolling isn't recommended. + * @public + */ +declare interface MoveReroll_2 extends HasId_2, Partial { + /** + * + */ + $id: string; + /** + * The markdown string describing the conditions of the reroll. It should be presented to the user so that they can decide whether a reroll is appropriate. + * @markdown + * @localize + */ + Text?: string | undefined; + /** + * The dice to be rerolled. + */ + Dice: RerollType_2; +} + +/** + * Describes the trigger conditions of the move. + * @public + */ +export declare interface MoveTrigger extends HasId, Partial { + /** + * @pattern ^(Starforged|Ironsworn)/(Moves/[A-z_-]+/[A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/Alter_Moves/[0-9]+|Moves/Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/[A-z_-]+)/Trigger$ + */ + $id: string; + /** + * A markdown string containing the primary trigger text for this move. + * + * Secondary triggers (for specific stats or uses of an asset ability) are described in `Options`. + * + * @markdown + * @localize + * @example "When you attempt something risky or react to an imminent threat..." + */ + Text?: string | undefined; + /** + * Information on who can trigger this item. Used mainly by asset abilities, some of which can trigger from an Ally's move. + * + * If unspecified, assume `Ally` is `false` and `Player` is `true`. + */ + By?: MoveTriggerBy | undefined; + /** + * Information on any action rolls or progress rolls that are made when this move is triggered (which may describe a specific subset of the primary trigger in their own `Text` property). + * + * If there's no action rolls or progress rolls attached to this move, this is `undefined`. + */ + "Options"?: (MoveTriggerOptionAction | MoveTriggerOptionProgress)[] | undefined; +} + +/** + * Describes the trigger conditions of the move. + * @public + */ +declare interface MoveTrigger_2 extends HasId_2, Partial { + /** + * @pattern ^(Starforged|Ironsworn)/(Moves/[A-z_-]+/[A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/Alter_Moves/[0-9]+|Moves/Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/[A-z_-]+)/Trigger$ + */ + $id: string; + /** + * A markdown string containing the primary trigger text for this move. + * + * Secondary triggers (for specific stats or uses of an asset ability) are described in `Options`. + * + * @markdown + * @localize + * @example "When you attempt something risky or react to an imminent threat..." + */ + Text?: string | undefined; + /** + * Information on who can trigger this item. Used mainly by asset abilities, some of which can trigger from an Ally's move. + * + * If unspecified, assume `Ally` is `false` and `Player` is `true`. + */ + By?: MoveTriggerBy_2 | undefined; + /** + * Information on any action rolls or progress rolls that are made when this move is triggered (which may describe a specific subset of the primary trigger in their own `Text` property). + * + * If there's no action rolls or progress rolls attached to this move, this is `undefined`. + */ + "Options"?: (MoveTriggerOptionAction_2|MoveTriggerOptionProgress_2)[] | undefined; +} + +/** + * @public + */ +export declare interface MoveTriggerBy { + /** + * Whether the player character who owns this item can trigger it. Unsurprisingly, this is usually true, but there's a few exceptions: see *Starforged's* LOYALIST asset for an example. + * @public + */ + Player: boolean; + /** + * Whether an Ally (a player character other than the owner) can trigger this item. This is usually false, but there's several exceptions among asset abilities. + */ + Ally: boolean; +} + +/** + * @public + */ +declare interface MoveTriggerBy_2 { + /** + * Whether the player character who owns this item can trigger it. Unsurprisingly, this is usually true, but there's a few exceptions: see *Starforged's* LOYALIST asset for an example. + * @public + */ + Player: boolean; + /** + * Whether an Ally (a player character other than the owner) can trigger this item. This is usually false, but there's several exceptions among asset abilities. + */ + Ally: boolean; +} + +/** + * @public + */ +export declare interface MoveTriggerOptionAction extends MoveTriggerOptionBase { + "Roll type": RollType.Action; + Using: RollableStat[]; +} + +/** + * @public + */ +declare interface MoveTriggerOptionAction_2 extends MoveTriggerOptionBase_2 { + "Roll type": RollType_2.Action; + Using: RollableStat_2[]; +} + +/** + * @public + */ +export declare interface MoveTriggerOptionBase extends HasId, Partial { + /** + * @pattern ^(Starforged|Ironsworn)/(Moves/[A-z_-]+/[A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/Alter_Moves/[0-9]+|Moves/Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/[A-z_-]+)/Trigger/Options/[0-9]+$ + */ + $id: string; + /** + * Whether this option is an action roll or progress roll. + */ + "Roll type": RollType; + /** + * The method used to choose the stat or track in the `Using` array. + */ + Method: RollMethod; + /** + * The stat(s) or progress track(s) that may be rolled with this move trigger option. + */ + Using: (RollableStat | ProgressTypeStarforged | ProgressTypeIronsworn)[]; + /** + * Defines a custom stat, if one is included in this object's `With` array. + */ + "Custom stat"?: CustomStat | undefined; +} + +/** + * @public + */ +declare interface MoveTriggerOptionBase_2 extends HasId_2, Partial { + /** + * @pattern ^(Starforged|Ironsworn)/(Moves/[A-z_-]+/[A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/Alter_Moves/[0-9]+|Moves/Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/[A-z_-]+)/Trigger/Options/[0-9]+$ + */ + $id: string; + /** + * Whether this option is an action roll or progress roll. + */ + "Roll type": RollType_2; + /** + * The method used to choose the stat or track in the `Using` array. + */ + Method: RollMethod_2; + /** + * The stat(s) or progress track(s) that may be rolled with this move trigger option. + */ + Using: (RollableStat_2 | ProgressTypeStarforged_2|ProgressTypeIronsworn_2)[]; + /** + * Defines a custom stat, if one is included in this object's `With` array. + */ + "Custom stat"?: CustomStat_2 | undefined; +} + +/** + * @public + */ +export declare interface MoveTriggerOptionProgress extends MoveTriggerOptionBase { + "Roll type": RollType.Progress; + Using: (ProgressTypeStarforged | ProgressTypeIronsworn)[]; +} + +/** + * @public + */ +declare interface MoveTriggerOptionProgress_2 extends MoveTriggerOptionBase_2 { + "Roll type": RollType_2.Progress; + Using: (ProgressTypeStarforged_2|ProgressTypeIronsworn_2)[]; +} + +/** + * Describes {@link Row} results that call for multiple rolls, most commonly "Roll twice" results. + * @public + */ +export declare interface MultipleRolls { + /** + * The number of rolls to make on the parent oracle table. + */ + Amount: number; + /** + * Whether to allow duplicate results when generating multiple rolls. + * + * Implicitly required by `Make it worse`. + */ + "Allow duplicates": boolean; + /** + * Whether duplicate rolls should be compounded in an Ironsworn-style "Make it worse" results. + * + * Typically this is accompanied by `Row.Result` text like "Roll twice more on this table. Both results occur. If they are the same result, make it worse." + * + * Can safely be ignored in Starforged-only implementations. Implicitly requires `Allow duplicates`. + */ + "Make it worse": boolean; +} + +/** + * Describes {@link Row} results that call for multiple rolls, most commonly "Roll twice" results. + * @public + */ +declare interface MultipleRolls_2 { + /** + * The number of rolls to make on the parent oracle table. + */ + Amount: number; + /** + * Whether to allow duplicate results when generating multiple rolls. + * + * Implicitly required by `Make it worse`. + */ + "Allow duplicates": boolean; + /** + * Whether duplicate rolls should be compounded in an Ironsworn-style "Make it worse" results. + * + * Typically this is accompanied by `Row.Result` text like "Roll twice more on this table. Both results occur. If they are the same result, make it worse." + * + * Can safely be ignored in Starforged-only implementations. Implicitly requires `Allow duplicates`. + */ + "Make it worse": boolean; +} + +/** + * @public + */ +export declare type NatureKey = keyof typeof EncounterNatureClassic; + +/** + * @public + */ +export declare type Nullable = { + [P in keyof T]: T[P] | null; +}; + +/** + * @public + */ +declare type Nullable_2 = { + [P in keyof T]: T[P] | null; +}; + +/** + * @public + */ +export declare type NullableKey = { + [P in keyof T]: P extends K ? T[P] | null : T[P]; +}; + +/** + * Similar to "Omit", but recurses through any keyed object children to omit K from them, too. + * @public + */ +export declare type OmitDeep = { + [P in keyof T]: P extends K ? never : T[P] extends Record ? OmitDeep : T[P]; +}; + +/** + * Similar to "Omit", but recurses through any keyed object children to omit K from them, too. + * @public + */ +declare type OmitDeep_2 = { + [P in keyof T]: P extends K ? never : T[P] extends Record ? OmitDeep_2 : T[P] +} + +/** + * A stub that omits common metadata recursively. Use it to create things like e.g. AssetAlterProperties. + * + * Additional keys to omit (non-recursively) may optionally be provided with K. + * @public + */ +export declare type OmitMetadataDeep = OmitDeep, MetadataKey>; + +/** + * A stub that omits common metadata recursively. Use it to create things like e.g. AssetAlterProperties. + * + * Additional keys to omit (non-recursively) may optionally be provided with K. + * @public + */ +declare type OmitMetadataDeep_2 = OmitDeep_2, MetadataKey_2>; + +/** + * Omits "never" types. + * @public + */ +export declare type OmitNever = { + [K in keyof T as T[K] extends never ? never : K]: T[K]; +}; + +/** + * @public + */ +export declare type OptionalKeys = { + [K in keyof T]-?: Record extends Pick ? K : never; +}[keyof T]; + +/** + * Interface with elements common to various Oracle-related interfaces and classes. + * + * If you're trying to crawl the tree for a specific ID, I'd recommend using some flavour of JSONpath (I like `jsonpath-plus`) - it's purpose-made for this sort of nested data structure. + * + * But if for some reason you can't, you can use this interface to type both {@link OracleTable} and {@link OracleSet} as you recurse the oracle hierarchy. Objects with `Categories` and `Oracles` are "branches", and objects with `Table` are "leaves". + * @public + */ +export declare interface OracleBase extends Partial, HasId, HasDisplay, HasSource, HasTitle { + $id: string; + /** + * An array containing the ID of every {@link OracleSet} ancestor of this item. The array is sorted from the most recent ancestor (e.g. one level up) to the most distant. + * @pattern ^(Ironsworn|Starforged)/Oracles/[A-z_-/]+$ + */ + Ancestors: OracleSet["$id"][]; + Display: OracleDisplayBase; + /** + * Information on the usage of this oracle: recommended number of rolls, etc. + */ + Usage?: OracleUsage | undefined; + /** + * Represents a single oracle table, where 'table' is defined as being something with a single roll range. + * + * This key appears only on {@link OracleSet}, and thus only on 'leaf' nodes of the oracle hierarchy 'tree'. + */ + Table?: (OracleTableRow | RowNullStub)[] | undefined; + /** + * Oracle tables contained by this set. + * + * This key appears only on {@link OracleSet}, and thus only on 'branch' nodes of the oracle hierarchy 'tree'. + */ + Tables?: { + [key: string]: OracleTable; + } | undefined; + /** + * Oracle sets contained by this set. + * + * This key appears only on {@link OracleSet}, and thus only on 'branch' nodes of the oracle hierarchy 'tree'. + */ + Sets?: { + [key: string]: OracleSet; + } | undefined; + /** + * Describes the match behaviour of this oracle's table, if any, and provides a `Text` string describing it. Only appears on a handful of move oracles like Ask the Oracle and Advance a Threat. + * + * This key appears only on {@link OracleTable}s that have a `Table`. + */ + "On a Match"?: OracleMatch | undefined; +} + +/** + * Interface with elements common to various Oracle-related interfaces and classes. + * + * If you're trying to crawl the tree for a specific ID, I'd recommend using some flavour of JSONpath (I like `jsonpath-plus`) - it's purpose-made for this sort of nested data structure. + * + * But if for some reason you can't, you can use this interface to type both {@link OracleTable} and {@link OracleSet} as you recurse the oracle hierarchy. Objects with `Categories` and `Oracles` are "branches", and objects with `Table` are "leaves". + * @public + */ +declare interface OracleBase_2 extends Partial< HasSummary_2 & HasDescription_2 & HasOracleContent_2 >, HasId_2, HasDisplay_2, HasSource_2, HasTitle_2 { + $id: string; + /** + * An array containing the ID of every {@link OracleSet} ancestor of this item. The array is sorted from the most recent ancestor (e.g. one level up) to the most distant. + * @pattern ^(Ironsworn|Starforged)/Oracles/[A-z_-/]+$ + */ + Ancestors: OracleSet_2["$id"][]; + Display: OracleDisplayBase_2; + /** + * Information on the usage of this oracle: recommended number of rolls, etc. + */ + Usage?: OracleUsage_2 | undefined; + /** + * Represents a single oracle table, where 'table' is defined as being something with a single roll range. + * + * This key appears only on {@link OracleSet}, and thus only on 'leaf' nodes of the oracle hierarchy 'tree'. + */ + Table?: (OracleTableRow_2| RowNullStub_2)[] | undefined; + /** + * Oracle tables contained by this set. + * + * This key appears only on {@link OracleSet}, and thus only on 'branch' nodes of the oracle hierarchy 'tree'. + */ + Tables?: {[key:string]: OracleTable_2} | undefined; + /** + * Oracle sets contained by this set. + * + * This key appears only on {@link OracleSet}, and thus only on 'branch' nodes of the oracle hierarchy 'tree'. + */ + Sets?: {[key:string]: OracleSet_2} | undefined; + /** + * Describes the match behaviour of this oracle's table, if any, and provides a `Text` string describing it. Only appears on a handful of move oracles like Ask the Oracle and Advance a Threat. + * + * This key appears only on {@link OracleTable}s that have a `Table`. + */ + "On a Match"?: OracleMatch_2 | undefined +} + +/** + * Interface for metadata that describes an oracle's semantic or lexical content. + * @public + */ +export declare interface OracleContent { + /** + * The part of speech of this oracle. + */ + "Part of speech"?: PartOfSpeechTag[] | undefined; + /** + * Any arbitrary string tags associated with this oracle. + */ + "Tags"?: string[] | undefined; +} + +/** + * Interface for metadata that describes an oracle's semantic or lexical content. + * @public + */ +declare interface OracleContent_2 { + /** + * The part of speech of this oracle. + */ + "Part of speech"?: PartOfSpeechTag_2[] | undefined; + /** + * Any arbitrary string tags associated with this oracle. + */ + "Tags"?: string[] | undefined; +} + +/** + * Base interface inherited by {@link OracleSetDisplay} and {@link OracleTableDisplay}. + * @public + */ +export declare interface OracleDisplayBase extends Display, HasId { + /** + * If this oracle's `Table` should be rendered as a column of another table, it's indicated here. + * + * If `undefined`, this table is rendered as a standalone table. + * + * If this is set (and the rendering such 'embedded' columns is desired), then `Display.Table` may be safely ignored. + */ + "Column of"?: OracleTable["$id"] | undefined; + /** + * Information on the rendering of this table when it's provided as a standalone table (as opposed to a column of another table). + * + * If close correspondence to the text's table rendering is desired, `Display["Column of"]` should be preferred (when present). + */ + "Columns"?: [TableColumnRoll, ...(TableColumnRoll | TableColumnText)[]] | undefined; + /** + * This table is displayed as embedded in a row of another table. + */ + "Embed in"?: OracleTableRow["$id"] | undefined; +} + +/** + * Base interface inherited by {@link OracleSetDisplay} and {@link OracleTableDisplay}. + * @public + */ +declare interface OracleDisplayBase_2 extends Display_2, HasId_2 { + /** + * If this oracle's `Table` should be rendered as a column of another table, it's indicated here. + * + * If `undefined`, this table is rendered as a standalone table. + * + * If this is set (and the rendering such 'embedded' columns is desired), then `Display.Table` may be safely ignored. + */ + "Column of"?: OracleTable_2["$id"] | undefined; + /** + * Information on the rendering of this table when it's provided as a standalone table (as opposed to a column of another table). + * + * If close correspondence to the text's table rendering is desired, `Display["Column of"]` should be preferred (when present). + */ + "Columns"?: [TableColumnRoll_2, ...(TableColumnRoll_2 | TableColumnText_2)[]] | undefined; + /** + * This table is displayed as embedded in a row of another table. + */ + "Embed in"?: OracleTableRow_2["$id"] | undefined; +} + +/** + * @public + */ +export declare interface OracleMatch extends HasId, HasText { + /** + * @pattern ^(Ironsworn|Starforged)/Oracles/[A-z_-]+((/[A-z_-]+)+)?/On_a_Match$ + */ + $id: string; +} + +/** + * @public + */ +declare interface OracleMatch_2 extends HasId_2, HasText_2 { + /** + * @pattern ^(Ironsworn|Starforged)/Oracles/[A-z_-]+((/[A-z_-]+)+)?/On_a_Match$ + */ + $id: string +} + +/** + * Represents an oracle set: a grouping that can contain both {@link OracleTable}s and other instances of {@link OracleSet}, but doesn't have its own `Table` key. + * + * @see {@link OracleBase} if you need to type both {@link OracleTable} and {@link OracleSet} to crawl the oracle hierarchy in search of a specific `$id`. + * + * @public + */ +export declare interface OracleSet extends Omit { + /** + * @pattern ^(Ironsworn|Starforged)/Oracles/[A-z_-]+(/[A-z_-]+)?$ + */ + $id: string; + /** + * A list of sample names for this category. Only used by Planetary Class {@link OracleSet}s. + */ + "Sample Names"?: string[] | undefined; + Sets?: { + [key: string]: OracleSet; + } | undefined; + Tables?: { + [key: string]: OracleTable; + } | undefined; + Display: OracleSetDisplay; +} + +/** + * Represents an oracle set: a grouping that can contain both {@link OracleTable}s and other instances of {@link OracleSet}, but doesn't have its own `Table` key. + * + * @see {@link OracleBase} if you need to type both {@link OracleTable} and {@link OracleSet} to crawl the oracle hierarchy in search of a specific `$id`. + * + * @public + */ +declare interface OracleSet_2 extends Omit { + /** + * @pattern ^(Ironsworn|Starforged)/Oracles/[A-z_-]+(/[A-z_-]+)?$ + */ + $id: string, + /** + * A list of sample names for this category. Only used by Planetary Class {@link OracleSet}s. + */ + "Sample Names"?: string[] | undefined; + Sets?: {[key:string]: OracleSet_2} | undefined; + Tables?: {[key:string]: OracleTable_2} | undefined; + Display: OracleSetDisplay_2; +} + +/** + * Information on displaying {@link OracleSet}, including information on its rendering in the original text. + * + * If an {@link OracleSet} has `Columns`, it represents a "supertable" composed of multiple roll or string columns. + * @public + */ +export declare interface OracleSetDisplay extends Omit { +} + +/** + * Information on displaying {@link OracleSet}, including information on its rendering in the original text. + * + * If an {@link OracleSet} has `Columns`, it represents a "supertable" composed of multiple roll or string columns. + * @public + */ +declare interface OracleSetDisplay_2 extends Omit { } + +/** + * Represents an oracle that has a `Table` composed of {@link OracleTableRow} objects. Appears only as a 'leaf' note on the oracle hierarchy 'tree'. + * + * @see {@link OracleBase} if you need to type both {@link OracleTable} and {@link OracleSet} to crawl the oracle hierarchy in search of a specific `$id`. + * + * @public + */ +export declare interface OracleTable extends Omit { + /** + * @pattern ^(Ironsworn|Starforged)/Oracles/[A-z_-]+((/[A-z_-]+)+)?$ + */ + $id: string; + /** + * @example + * ```json + * { + * "Canonical": "Character Revealed Aspect", + * "Short": "Revealed Aspect" + * } + * ``` + * @example + * ```json + * { + * "Canonical": "Spaceborne Peril", + * "Short": "Peril" + * } + * ``` + */ + Title: Title; + Display: OracleTableDisplay; + "Table": (OracleTableRow | RowNullStub)[]; + /** + * Describes the match behaviour of this oracle's table, if any, and provides a `Text` string describing it. Only appears on a handful of move oracles like Ask the Oracle and Advance a Threat. + */ + "On a Match"?: OracleMatch | undefined; +} + +/** + * Represents an oracle that has a `Table` composed of {@link OracleTableRow} objects. Appears only as a 'leaf' note on the oracle hierarchy 'tree'. + * + * @see {@link OracleBase} if you need to type both {@link OracleTable} and {@link OracleSet} to crawl the oracle hierarchy in search of a specific `$id`. + * + * @public + */ +declare interface OracleTable_2 extends Omit { + /** + * @pattern ^(Ironsworn|Starforged)/Oracles/[A-z_-]+((/[A-z_-]+)+)?$ + */ + $id: string; + /** + * @example + * ```json + * { + * "Canonical": "Character Revealed Aspect", + * "Short": "Revealed Aspect" + * } + * ``` + * @example + * ```json + * { + * "Canonical": "Spaceborne Peril", + * "Short": "Peril" + * } + * ``` + */ + Title: Title_2; + Display: OracleTableDisplay_2; + "Table": (OracleTableRow_2| RowNullStub_2)[]; + /** + * Describes the match behaviour of this oracle's table, if any, and provides a `Text` string describing it. Only appears on a handful of move oracles like Ask the Oracle and Advance a Threat. + */ + "On a Match"?: OracleMatch_2 | undefined +} + +/** + * Information on displaying {@link OracleTable}, including information on its rendering in the original text. + * @public + */ +export declare interface OracleTableDisplay extends OracleDisplayBase { + "Columns": [TableColumnRoll, ...(TableColumnRoll | TableColumnText)[]]; +} + +/** + * Information on displaying {@link OracleTable}, including information on its rendering in the original text. + * @public + */ +declare interface OracleTableDisplay_2 extends OracleDisplayBase_2 { + "Columns": [TableColumnRoll_2, ...(TableColumnRoll_2 | TableColumnText_2)[]]; +} + +/** + * Interface representing a single row in an oracle table. + * @public + */ +export declare interface OracleTableRow extends Partial> { + /** + * The ID of this row. + * @pattern ^(Ironsworn|Starforged)/Oracles(/[A-z_-]+)+/[1-9][0-9]*(-[1-9][0-9]*)?(/Subtable/[1-9][0-9]*(-[1-9][0-9]*)?)?$ + */ + $id: string; + /** + * The low end of the dice range for this row. + * @minimum 1 + * @maximum 100 + * @nullable + */ + Floor: number | null; + /** + * The high end of the dice range for this row. + * @minimum 1 + * @maximum 100 + * @nullable + */ + Ceiling: number | null; + /** + * The primary result text for the row, annotated in Markdown. + * In the book, this is frequently the only column aside from the roll column. Otherwise, it is the first column. + * Some tables label this column as something other than Result; see the parent (or grandparent) Oracle.Display for more information. + * @markdown + * @localize + */ + Result: string; + /** + * A secondary markdown string that must be presented to the user for the implementation to be complete, but may benefit from progressive disclosure (such as a collapsible element, popover/tooltip, etc). + * + * Generally, `Summary` is longer than `Result`. + * + * Some tables label this column as something other than `Result`; see the parent (or grandparent) `Oracle.Display.Table` for more information. + * + * `null` is used in cases where an 'empty' `Summary` exists (example: Starship Type, p. 326). In the book, these table cells are rendered with the text `--` (and this is the recommended placeholder for tabular display). For display as a single result (e.g. VTT table roll output), however, `null` values can be safely omitted. + * @nullable + * @markdown + * @localize + */ + Summary?: string | null | undefined; + /** + * Additional oracle tables that should be rolled when this row is selected. + */ + "Oracle rolls"?: OracleTable["$id"][] | undefined; + /** + * A table to be rolled when this row is selected. If this row references an external oracle, the `Oracles` property is used instead. + */ + Subtable?: OracleTableRow[] | TruthOptionSubtableRow[] | undefined; + /** + * Data for rows that call for multiple rolls, e.g. on `Roll twice` results. + */ + "Multiple rolls"?: MultipleRolls | undefined; + /** + * The attributes set by this row. + */ + Attributes?: Attribute[] | undefined; +} + +/** + * Interface representing a single row in an oracle table. + * @public + */ +declare interface OracleTableRow_2 extends Partial< Nullable_2> { + /** + * The ID of this row. + * @pattern ^(Ironsworn|Starforged)/Oracles(/[A-z_-]+)+/[1-9][0-9]*(-[1-9][0-9]*)?(/Subtable/[1-9][0-9]*(-[1-9][0-9]*)?)?$ + */ + $id: string; + /** + * The low end of the dice range for this row. + * @minimum 1 + * @maximum 100 + * @nullable + */ + Floor: number | null; + /** + * The high end of the dice range for this row. + * @minimum 1 + * @maximum 100 + * @nullable + */ + Ceiling: number | null; + /** + * The primary result text for the row, annotated in Markdown. + * In the book, this is frequently the only column aside from the roll column. Otherwise, it is the first column. + * Some tables label this column as something other than Result; see the parent (or grandparent) Oracle.Display for more information. + * @markdown + * @localize + */ + Result: string; + /** + * A secondary markdown string that must be presented to the user for the implementation to be complete, but may benefit from progressive disclosure (such as a collapsible element, popover/tooltip, etc). + * + * Generally, `Summary` is longer than `Result`. + * + * Some tables label this column as something other than `Result`; see the parent (or grandparent) `Oracle.Display.Table` for more information. + * + * `null` is used in cases where an 'empty' `Summary` exists (example: Starship Type, p. 326). In the book, these table cells are rendered with the text `--` (and this is the recommended placeholder for tabular display). For display as a single result (e.g. VTT table roll output), however, `null` values can be safely omitted. + * @nullable + * @markdown + * @localize + */ + Summary?: string | null | undefined; + /** + * Additional oracle tables that should be rolled when this row is selected. + */ + "Oracle rolls"?: OracleTable_2["$id"][] | undefined; + /** + * A table to be rolled when this row is selected. If this row references an external oracle, the `Oracles` property is used instead. + */ + Subtable?: OracleTableRow_2[] | TruthOptionSubtableRow_2[] | undefined; + /** + * Data for rows that call for multiple rolls, e.g. on `Roll twice` results. + */ + "Multiple rolls"?: MultipleRolls_2 | undefined; + /** + * The attributes set by this row. + */ + Attributes?: Attribute_2[] | undefined; +} + +/** + * Describes the recommended usage of this item. + * @public + */ +export declare interface OracleUsage extends Partial { + /** + * Whether this table should be included in the initial oracle rolls when generating a game object. This is a somewhat arbitrary recommendation, and may not be appropriate for all implementations (or all game situations). Rather it's a reasonable starting point in *most* cases. + * + * That said, the game itself recommends **against** rolling all possible results at once (see "Peeling the Onion", p. 293, *Starforged*). If your goal is to implement the game 'as-written', consider how you might include some means of "progressive disclosure" of oracle results. + * + * May be deprecated in the future in favour of dedicated object template information. + */ + Initial?: boolean | undefined; + Suggestions?: Suggestions | undefined; + Requires?: Requirements | undefined; + /** + * The minimum number of rolls when using this oracle to create a game object, *if* this oracle is rolled. Assume it's 1 if not specified. + * @deprecated Previous versions of the Starforged Backer Preview had tables that made use of this key, but none do at present. Given the "peeling the onion" philosophy, this key is of limited utility, and will probably be removed in future versions. + */ + "Min rolls"?: number | undefined; + /** + * The maximum number of rolls when using this oracle to create a game object. Assume it's 1 if not specified. + */ + "Max rolls"?: number | undefined; + /** + * Whether the table's standard use is iterative. Common examples are Feature, Opportunity, and Peril tables, which are most often used repeatedly to describe different areas of/events in a place, rather than being assigned as a description of the place as a whole. + * + * Mutually exclusive with `Max rolls`. If undefined, assume `false`. + */ + Repeatable?: boolean | undefined; + /** + * Whether multiple rolls (as in object generation, or with {@link MultipleRolls}) . + */ + "Allow duplicates"?: boolean | undefined; + /** + * Hints which attributes are set by this table. + */ + "Sets"?: AttributeChoices[] | undefined; +} + +/** + * Describes the recommended usage of this item. + * @public + */ +declare interface OracleUsage_2 extends Partial { + /** + * Whether this table should be included in the initial oracle rolls when generating a game object. This is a somewhat arbitrary recommendation, and may not be appropriate for all implementations (or all game situations). Rather it's a reasonable starting point in *most* cases. + * + * That said, the game itself recommends **against** rolling all possible results at once (see "Peeling the Onion", p. 293, *Starforged*). If your goal is to implement the game 'as-written', consider how you might include some means of "progressive disclosure" of oracle results. + * + * May be deprecated in the future in favour of dedicated object template information. + */ + Initial?: boolean | undefined; + Suggestions?: Suggestions_2 | undefined; + Requires?: Requirements_2 | undefined; + /** + * The minimum number of rolls when using this oracle to create a game object, *if* this oracle is rolled. Assume it's 1 if not specified. + * @deprecated Previous versions of the Starforged Backer Preview had tables that made use of this key, but none do at present. Given the "peeling the onion" philosophy, this key is of limited utility, and will probably be removed in future versions. + */ + "Min rolls"?: number | undefined; + /** + * The maximum number of rolls when using this oracle to create a game object. Assume it's 1 if not specified. + */ + "Max rolls"?: number | undefined; + /** + * Whether the table's standard use is iterative. Common examples are Feature, Opportunity, and Peril tables, which are most often used repeatedly to describe different areas of/events in a place, rather than being assigned as a description of the place as a whole. + * + * Mutually exclusive with `Max rolls`. If undefined, assume `false`. + */ + Repeatable?: boolean | undefined; + /** + * Whether multiple rolls (as in object generation, or with {@link MultipleRolls}) . + */ + "Allow duplicates"?: boolean | undefined; + /** + * Hints which attributes are set by this table. + */ + "Sets"?: AttributeChoices_2[] | undefined; +} + +/** + * @public + */ +export declare interface OutcomeBase extends HasId, Partial { + /** + * @pattern ^(Starforged|Ironsworn)/(Moves/[A-z_-]+/[A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/Alter_Moves/[0-9]+|Moves/Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/[A-z_-]+)/Outcomes/((Miss|Strong_Hit)(/With_a_Match)?|Weak_Hit)$ + */ + $id: string; + /** + * Defines a different outcome for this result with a match. Its text should replace the text of this object. + */ + "With a Match"?: OutcomeBase | undefined; + /** + * Count this roll as another roll outcome, e.g. "Count a weak hit as a miss" + */ + "Count as"?: keyof typeof MoveOutcome | undefined; + /** + * Information on rerolls offered by this move. + */ + Reroll?: MoveReroll | undefined; + /** + * Whether this outcome leaves the player character in control (Starforged) or with initiative (Ironsworn) or not. If unspecified, assume that it's `true` on a Strong Hit, and `false` on a Weak Hit or Miss. + */ + "In Control"?: boolean | undefined; + Text?: RequireText extends true ? string : (string | undefined); +} + +/** + * @public + */ +declare interface OutcomeBase_2 extends HasId_2, Partial { + /** + * @pattern ^(Starforged|Ironsworn)/(Moves/[A-z_-]+/[A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/Alter_Moves/[0-9]+|Moves/Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/[A-z_-]+)/Outcomes/((Miss|Strong_Hit)(/With_a_Match)?|Weak_Hit)$ + */ + $id: string; + /** + * Defines a different outcome for this result with a match. Its text should replace the text of this object. + */ + "With a Match"?: OutcomeBase_2 | undefined; + /** + * Count this roll as another roll outcome, e.g. "Count a weak hit as a miss" + */ + "Count as"?: keyof typeof MoveOutcome_2 | undefined; + /** + * Information on rerolls offered by this move. + */ + Reroll?: MoveReroll_2 | undefined; + /** + * Whether this outcome leaves the player character in control (Starforged) or with initiative (Ironsworn) or not. If unspecified, assume that it's `true` on a Strong Hit, and `false` on a Weak Hit or Miss. + */ + "In Control"?: boolean | undefined; + Text?: RequireText extends true ? string : (string| undefined); +} + +/** + * @public + */ +export declare interface OutcomeMiss extends HasId, OutcomeBase { + /** + * @pattern ^(Starforged|Ironsworn)/(Moves/[A-z_-]+/[A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/Alter_Moves/[0-9]+|Moves/Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/[A-z_-]+)/Outcomes/Miss$ + */ + $id: string; + "With a Match"?: OutcomeMissMatch | undefined; + /** + * @default false + */ + "In Control"?: boolean | undefined; +} + +/** + * @public + */ +declare interface OutcomeMiss_2 extends HasId_2, OutcomeBase_2 { + /** + * @pattern ^(Starforged|Ironsworn)/(Moves/[A-z_-]+/[A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/Alter_Moves/[0-9]+|Moves/Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/[A-z_-]+)/Outcomes/Miss$ + */ + $id: string; + "With a Match"?: OutcomeMissMatch_2 | undefined; + /** + * @default false + */ + "In Control"?: boolean | undefined; +} + +/** + * @public + */ +export declare interface OutcomeMissMatch extends Omit { + /** + * @pattern ^(Starforged|Ironsworn)/(Moves/[A-z_-]+/[A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/Alter_Moves/[0-9]+|Moves/Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/[A-z_-]+)/Outcomes/Miss/With_a_Match$ + */ + $id: string; + /** + * @default false + */ + "In Control"?: boolean | undefined; +} + +/** + * @public + */ +declare interface OutcomeMissMatch_2 extends Omit { + /** + * @pattern ^(Starforged|Ironsworn)/(Moves/[A-z_-]+/[A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/Alter_Moves/[0-9]+|Moves/Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/[A-z_-]+)/Outcomes/Miss/With_a_Match$ + */ + $id: string; + /** + * @default false + */ + "In Control"?: boolean | undefined; +} + +/** + * @public + */ +export declare interface Outcomes extends HasId { + /** + * @pattern ^(Starforged|Ironsworn)/(Moves/[A-z_-]+/[A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/Alter_Moves/[0-9]+|Moves/Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/[A-z_-]+)/Outcomes$ + */ + $id: string; + "Strong Hit": OutcomeStrongHit; + "Weak Hit": OutcomeWeakHit; + "Miss": OutcomeMiss; +} + +/** + * @public + */ +declare interface Outcomes_2 extends HasId_2 { + /** + * @pattern ^(Starforged|Ironsworn)/(Moves/[A-z_-]+/[A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/Alter_Moves/[0-9]+|Moves/Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/[A-z_-]+)/Outcomes$ + */ + $id: string; + "Strong Hit": OutcomeStrongHit_2; + "Weak Hit": OutcomeWeakHit_2; + "Miss": OutcomeMiss_2; +} + +/** + * @public + */ +export declare interface OutcomeStrongHit extends HasId, OutcomeBase { + /** + * @pattern ^(Starforged|Ironsworn)/(Moves/[A-z_-]+/[A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/Alter_Moves/[0-9]+|Moves/Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/[A-z_-]+)/Outcomes/Strong_Hit$ + */ + $id: string; + "With a Match"?: OutcomeStrongHitMatch | undefined; + /** + * @default true + */ + "In Control"?: boolean | undefined; +} + +/** + * @public + */ +declare interface OutcomeStrongHit_2 extends HasId_2, OutcomeBase_2 { + /** + * @pattern ^(Starforged|Ironsworn)/(Moves/[A-z_-]+/[A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/Alter_Moves/[0-9]+|Moves/Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/[A-z_-]+)/Outcomes/Strong_Hit$ + */ + $id: string; + "With a Match"?: OutcomeStrongHitMatch_2 | undefined; + /** + * @default true + */ + "In Control"?: boolean | undefined; +} + +/** + * @public + */ +export declare interface OutcomeStrongHitMatch extends Omit { + /** + * @pattern ^(Starforged|Ironsworn)/(Moves/[A-z_-]+/[A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/Alter_Moves/[0-9]+|Moves/Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/[A-z_-]+)/Outcomes/Strong_Hit/With_a_Match$ + */ + $id: string; + /** + * @default true + */ + "In Control"?: boolean | undefined; +} + +/** + * @public + */ +declare interface OutcomeStrongHitMatch_2 extends Omit { + /** + * @pattern ^(Starforged|Ironsworn)/(Moves/[A-z_-]+/[A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/Alter_Moves/[0-9]+|Moves/Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/[A-z_-]+)/Outcomes/Strong_Hit/With_a_Match$ + */ + $id: string; + /** + * @default true + */ + "In Control"?: boolean | undefined; +} + +/** + * @public + */ +export declare interface OutcomeWeakHit extends Omit, "With a Match"> { + /** + * @pattern ^(Starforged|Ironsworn)/(Moves/[A-z_-]+/[A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/Alter_Moves/[0-9]+|Moves/Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/[A-z_-]+)/Outcomes/Weak_Hit$ + */ + $id: string; + /** + * @default false + */ + "In Control"?: boolean | undefined; +} + +/** + * @public + */ +declare interface OutcomeWeakHit_2 extends Omit,"With a Match"> { + /** + * @pattern ^(Starforged|Ironsworn)/(Moves/[A-z_-]+/[A-z_-]+|Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/Alter_Moves/[0-9]+|Moves/Assets/[A-z_-]+/[A-z_-]+/Abilities/[1-3]/[A-z_-]+)/Outcomes/Weak_Hit$ + */ + $id: string; + /** + * @default false + */ + "In Control"?: boolean | undefined; +} + +/** + * Makes a type where K is nullable. + * @public + */ +export declare type PartialBy = Omit & Partial>; + +/** + * Makes a type where K is nullable. + * @public + */ +declare type PartialBy_2 = Omit & Partial>; + +/** + * Similar to 'Partial', but recurses through all properties and their children, too. Use with care, as it can sometimes cause compiler segfaults. It's recommended to combine this with Omit if there's properties that you're sure you won't need (make {@link PartialDeep} the outermost generic type, in this case). + * + * @public + */ +export declare type PartialDeep = Partial<{ + [P in keyof T]?: (T[P] extends Record ? PartialDeep : T[P]) | undefined; +}>; + +/** + * Similar to 'Partial', but recurses through all properties and their children, too. Use with care, as it can sometimes cause compiler segfaults. It's recommended to combine this with Omit if there's properties that you're sure you won't need (make {@link PartialDeep} the outermost generic type, in this case). + * + * @public + */ +declare type PartialDeep_2 = Partial<{ + [P in keyof T]?: ( + // T[P] extends Array ? PartialDeep + // : + T[P] extends Record ? + PartialDeep_2 + : T[P] + ) | undefined +}>; + +/** + * Makes a type where K and its properties are nullable. + * @public + */ +export declare type PartialDeepBy = Omit & PartialDeep>; + +/** + * Makes a type where K and its properties are nullable. + * @public + */ +declare type PartialDeepBy_2 = Omit & PartialDeep_2>; + +/** + * Make all properties of T nullable except for K, which is required. + * @public + */ +export declare type PartialExcept = RequireKey<{ + [P in keyof T]?: T[P]; +}, K>; + +/** + * Make all properties of T nullable except for K, which is required. + * @public + */ +declare type PartialExcept_2 = RequireKey_2<{ + [P in keyof T]?: T[P]; +}, K>; + +/** + * A stub that with recursively optional metadata. Additional keys to make partial may optionally be provided with K. + * @public + */ +export declare type PartialMetadataDeep = PartialDeepBy; + +/** + * A stub that with recursively optional metadata. Additional keys to make partial may optionally be provided with K. + * @public + */ +declare type PartialMetadataDeep_2 = PartialDeepBy_2; + +/** + * @public + */ +export declare enum PartOfSpeechTag { + Noun = "noun", + CommonNoun = "common noun", + Fragment = "fragment", + Adjective = "adjective", + ProperNoun = "proper noun", + Verb = "verb", + Plural = "plural", + Name = "name", + ProperNounFragment = "proper noun fragment", + Sentences = "sentences", + CompoundNoun = "compound noun", + PossessiveCase = "possessive case" +} + +/** + * @public + */ +declare enum PartOfSpeechTag_2 { + Noun = "noun", + CommonNoun = "common noun", + Fragment = "fragment", + Adjective = "adjective", + ProperNoun = "proper noun", + Verb = "verb", + Plural = "plural", + Name = "name", + ProperNounFragment = "proper noun fragment", + Sentences = "sentences", + CompoundNoun = "compound noun", + PossessiveCase = "possessive case" +} + +/** + * Set by "Oracles / Planets / Class" + * @public + */ +export declare enum PlanetaryClass { + Desert = "Desert", + Furnace = "Furnace", + Grave = "Grave", + Ice = "Ice", + Jovian = "Jovian", + Jungle = "Jungle", + Ocean = "Ocean", + Rocky = "Rocky", + Shattered = "Shattered", + Tainted = "Tainted", + Vital = "Vital" +} + +/** + * Set by "Oracles / Planets / Class" + * @public + */ +declare enum PlanetaryClass_2 { + Desert = "Desert", + Furnace = "Furnace", + Grave = "Grave", + Ice = "Ice", + Jovian = "Jovian", + Jungle = "Jungle", + Ocean = "Ocean", + Rocky = "Rocky", + Shattered = "Shattered", + Tainted = "Tainted", + Vital = "Vital", +} + +/** + * Standard player character condition meters. + * @public + */ +export declare enum PlayerConditionMeter { + Health = "health", + Spirit = "spirit", + Supply = "supply" +} + +/** + * Standard player character condition meters. + * @public + */ +declare enum PlayerConditionMeter_2 { + Health = "health", + Spirit = "spirit", + Supply = "supply" +} + +/** + * @public + */ +export declare enum ProgressTypeIronsworn { + Combat = "combat progress", + Vow = "vow progress", + Journey = "journey progress", + Delve = "delve progress", + SceneChallenge = "scene challenge progress", + BondsTrack = "bonds track" +} + +/** + * @public + */ +declare enum ProgressTypeIronsworn_2 { + Combat = "combat progress", + Vow = "vow progress", + Journey = "journey progress", + Delve = "delve progress", + SceneChallenge = "scene challenge progress", + BondsTrack = "bonds track", +} + +/** + * @public + */ +export declare enum ProgressTypeStarforged { + Combat = "combat progress", + Vow = "vow progress", + Expedition = "expedition progress", + Connection = "connection progress", + SceneChallenge = "scene challenge progress", + QuestsLegacy = "quests legacy", + BondsLegacy = "bonds legacy", + DiscoveriesLegacy = "discoveries legacy" +} + +/** + * @public + */ +declare enum ProgressTypeStarforged_2 { + Combat = "combat progress", + Vow = "vow progress", + Expedition = "expedition progress", + Connection = "connection progress", + SceneChallenge = "scene challenge progress", + QuestsLegacy = "quests legacy", + BondsLegacy = "bonds legacy", + DiscoveriesLegacy = "discoveries legacy" +} + +/** + * Standard replacement strings, used by constructors when processing the master YAML data. + * @public + */ +export declare enum Replacement { + /** + * Replace with the ID of the nearest ancestor asset. + */ + Asset = "${{@ASSET}}", + /** + * Replace with the ID of the nearest ancestor asset's condition meter. + */ + AssetMeter = "${{@ASSET_METER}}", + /** + * Replace with the ID of the nearest ancestor move trigger's custom stat. + */ + CustomStat = "${{@CUSTOM_STAT}}", + /** + * Replace with the ID of the nearest select option value of the Stat type + */ + AssetSelectStat = "${{@ASSET_SELECT_STAT}}", + /** + * Replace with the ID of the nearest select option value of the ConditionMeter type. + */ + AssetSelectMeter = "${{@ASSET_SELECT_METER}}" +} + +/** + * @public + */ +export declare type RequiredKeys = { + [K in keyof T]-?: Record extends Pick ? never : K; +}[keyof T]; + +/** + * Generic type: require specific keys to be NonNullable. + * @public + */ +export declare type RequireKey = T & { + [P in K]-?: NonNullable; +}; + +/** + * Generic type: require specific keys to be NonNullable. + * @public + */ +declare type RequireKey_2 = T & { + [P in K]-?: NonNullable; +}; + +/** + * Data describing an item's requirements. + * @public + */ +export declare interface Requirements { + /** + * A list of attribute keys, and values of those keys that satisfy the requirements. + */ + Attributes: AttributeChoices[]; +} + +/** + * Data describing an item's requirements. + * @public + */ +declare interface Requirements_2 { + /** + * A list of attribute keys, and values of those keys that satisfy the requirements. + */ + Attributes: AttributeChoices_2[]; +} + +/** + * Enumerates which dice are to be rerolled. + * @public + */ +export declare enum RerollType { + /** + * The player can pick and choose which dice to reroll. + */ + Any = "Any", + /** + * The player can pick and choose which challenge dice to reroll. + */ + ChallengeDice = "Challenge dice", + /** + * The action die is rerolled. + */ + ActionDie = "Action die", + /** + * The player can choose one challenge die to reroll. + */ + ChallengeDie = "Challenge die", + /** + * Reroll *all* dice + */ + All = "All" +} + +/** + * Enumerates which dice are to be rerolled. + * @public + */ +declare enum RerollType_2 { + /** + * The player can pick and choose which dice to reroll. + */ + Any = "Any", + /** + * The player can pick and choose which challenge dice to reroll. + */ + ChallengeDice = "Challenge dice", + /** + * The action die is rerolled. + */ + ActionDie = "Action die", + /** + * The player can choose one challenge die to reroll. + */ + ChallengeDie = "Challenge die", + /** + * Reroll *all* dice + */ + All = "All" +} + +/** + * @public + */ +export declare type RetainBlacklist = { + [P in keyof T as T[P] extends BlacklistPartial ? P : never]: T[P]; +}; + +/** + * Enumerates the ID of every 'canonical' Starforged oracle that can be rolled directly. Provided to make it easy to type-check e.g. functions that accept an oracle ID as an argument. + * @public + */ +export declare enum RollableOraclesSF { + Character_Creation_Background_Assets = "Starforged/Oracles/Character_Creation/Background_Assets", + Character_Creation_Backstory_Prompts = "Starforged/Oracles/Character_Creation/Backstory_Prompts", + Character_Creation_Inciting_Incident = "Starforged/Oracles/Character_Creation/Inciting_Incident", + Character_Creation_Sector_Trouble = "Starforged/Oracles/Character_Creation/Sector_Trouble", + Character_Creation_Starship_History = "Starforged/Oracles/Character_Creation/Starship_History", + Character_Creation_Starship_Quirks = "Starforged/Oracles/Character_Creation/Starship_Quirks", + Characters_Disposition = "Starforged/Oracles/Characters/Disposition", + Characters_First_Look = "Starforged/Oracles/Characters/First_Look", + Characters_Goal = "Starforged/Oracles/Characters/Goal", + Characters_Name_Callsign = "Starforged/Oracles/Characters/Name/Callsign", + Characters_Name_Family_Name = "Starforged/Oracles/Characters/Name/Family_Name", Characters_Name_Given_Name = "Starforged/Oracles/Characters/Name/Given_Name", Characters_Revealed_Aspect = "Starforged/Oracles/Characters/Revealed_Aspect", Characters_Role = "Starforged/Oracles/Characters/Role", @@ -3050,156 +4989,828 @@ export declare enum RollableOraclesSF { } /** - * Standard player character stats or condition meters that can be used as +stat in an action roll. + * Standard player character stats or condition meters that can be used as +stat in an action roll. + * @public + */ +export declare type RollableStat = Stat | CustomStat["$id"] | PlayerConditionMeter | ConditionMeter["$id"]; + +/** + * Standard player character stats or condition meters that can be used as +stat in an action roll. + * @public + */ +declare type RollableStat_2 = Stat_2 | CustomStat_2["$id"] | PlayerConditionMeter_2 | ConditionMeter_2["$id"]; + +/** + * The stat(s) or progress track(s) that may be rolled with the parent move trigger option. + * @public + */ +export declare enum RollMethod { + /** + * When rolling with this move trigger option, *every* stat or progress track of the `Using` key is rolled. + */ + All = "All", + /** + * When rolling with this move trigger option, use the highest/best option from the `Using` key. + */ + Highest = "Highest", + /** + * When rolling with this move trigger option, use the lowest/worst option from the `Using` key. + */ + Lowest = "Lowest", + /** + * When rolling with this move trigger option, the user picks which stat to use. + * + * This is the default option for triggers that offer a single stat. + */ + Any = "Any", + /** + * This move trigger option has no roll method of its own, and must inherit its roll from another move trigger option. + * + * If the parent's `Using` is defined, the inherited roll must use one of those stats/progress tracks. + * + * Typically appears on children of `AlterMove`. + */ + Inherit = "Inherit", + /** + * The move trigger option results in an automatic strong hit - no roll required. + */ + StrongHit = "Strong Hit", + /** + * The move trigger option results in an automatic weak hit - no roll required. + */ + WeakHit = "Weak Hit" +} + +/** + * The stat(s) or progress track(s) that may be rolled with the parent move trigger option. + * @public + */ +declare enum RollMethod_2 { + /** + * When rolling with this move trigger option, *every* stat or progress track of the `Using` key is rolled. + */ + All = "All", + /** + * When rolling with this move trigger option, use the highest/best option from the `Using` key. + */ + Highest = "Highest", + /** + * When rolling with this move trigger option, use the lowest/worst option from the `Using` key. + */ + Lowest = "Lowest", + /** + * When rolling with this move trigger option, the user picks which stat to use. + * + * This is the default option for triggers that offer a single stat. + */ + Any = "Any", + /** + * This move trigger option has no roll method of its own, and must inherit its roll from another move trigger option. + * + * If the parent's `Using` is defined, the inherited roll must use one of those stats/progress tracks. + * + * Typically appears on children of `AlterMove`. + */ + Inherit = "Inherit", + /** + * The move trigger option results in an automatic strong hit - no roll required. + */ + StrongHit = "Strong Hit", + /** + * The move trigger option results in an automatic weak hit - no roll required. + */ + WeakHit = "Weak Hit" +} + +/** + * Describes the string keys of this item that should be replaced with template strings and filled with the results of one or more oracles. + * @public + */ +export declare interface RollTemplate extends HasId, Partial { + /** + * @pattern ^(Starforged|Ironsworn)/[A-z_-]+/.+/Roll_template$ + */ + $id: string; + /** + * A template string for the parent's `Result` property, to be filled with an oracle table roll Result. + * @localize + * @example + * ```json + * "{{Starforged/Oracles/Factions/Affiliation}} of the {{Starforged/Oracles/Factions/Legacy}} {{Starforged/Oracles/Factions/Identity}}" + * ``` + */ + Result?: string | undefined; + /** + * A template string for the parent's `Summary` property, to be filled with an oracle table roll Result. + * @localize + */ + Summary?: string | undefined; + /** + * A template string for the parent's `Description` property, to be filled with an oracle table roll Result. + * @localize + * @example + * ```json + * "Our computers are limited to simple digital systems and the most basic machine intelligence. This is because: {{Starforged/Setting_Truths/Artificial_Intelligence/1-33/Subtable}}.\n\nThe Adepts serve in place of those advanced systems. They utilize mind-altering drugs to see the universe as a dazzling lattice of data, identifying trends and predicting outcomes with uncanny accuracy. But to gain this insight they sacrifice much of themselves." + * ``` + */ + Description?: string | undefined; +} + +/** + * Describes the string keys of this item that should be replaced with template strings and filled with the results of one or more oracles. + * @public + */ +declare interface RollTemplate_2 extends HasId_2, Partial { + /** + * @pattern ^(Starforged|Ironsworn)/[A-z_-]+/.+/Roll_template$ + */ + $id: string; + /** + * A template string for the parent's `Result` property, to be filled with an oracle table roll Result. + * @localize + * @example + * ```json + * "{{Starforged/Oracles/Factions/Affiliation}} of the {{Starforged/Oracles/Factions/Legacy}} {{Starforged/Oracles/Factions/Identity}}" + * ``` + */ + Result?: string | undefined; + /** + * A template string for the parent's `Summary` property, to be filled with an oracle table roll Result. + * @localize + */ + Summary?: string | undefined; + /** + * A template string for the parent's `Description` property, to be filled with an oracle table roll Result. + * @localize + * @example + * ```json + * "Our computers are limited to simple digital systems and the most basic machine intelligence. This is because: {{Starforged/Setting_Truths/Artificial_Intelligence/1-33/Subtable}}.\n\nThe Adepts serve in place of those advanced systems. They utilize mind-altering drugs to see the universe as a dazzling lattice of data, identifying trends and predicting outcomes with uncanny accuracy. But to gain this insight they sacrifice much of themselves." + * ``` + */ + Description?: string | undefined; +} + +/** + * @public + */ +export declare enum RollType { + Action = "Action roll", + Progress = "Progress roll" +} + +/** + * @public + */ +declare enum RollType_2 { + Action = "Action roll", + Progress = "Progress roll" + // TODO: add 'Any'? +} + +/** + * A row stub that has no dice range assigned to it, but still contains user-facing strings that are relevant to rendering the table. Typically, their dice range appears as "--" in the book. + * @public + */ +export declare interface RowNullStub extends Omit, "$id"> { + Floor: null; + Ceiling: null; + Result: string; + Summary?: string | undefined | null; +} + +/** + * A row stub that has no dice range assigned to it, but still contains user-facing strings that are relevant to rendering the table. Typically, their dice range appears as "--" in the book. + * @public + */ +declare interface RowNullStub_2 extends Omit, "$id"> { + Floor: null; + Ceiling: null; + Result: string; + Summary?: string | undefined | null; +} + +/** + * @public + */ +export declare enum SettingTruthName { + Cataclysm = "Cataclysm", + Exodus = "Exodus", + Communities = "Communities", + Iron = "Iron", + Laws = "Laws", + Religion = "Religion", + Magic = "Magic", + CommunicationAndData = "Communication and Data", + Medicine = "Medicine", + ArtificialIntelligence = "Artificial Intelligence", + War = "War", + Lifeforms = "Lifeforms", + Precursors = "Precursors", + Horrors = "Horrors" +} + +/** + * Interface representing data on this item's source. For 'canonical' content, this is usually a book with numbered pages, but it might also be a link to a web site. + * @public + */ +export declare interface Source { + /** + * The title of the source. + * + * For 'canonical' content, use one of the enumerated `SourceTitle` strings. + * + * For 3rd-party content (including homebrew) that's been released as part of a titled document, use the title of that document (e.g. "Steelforged", "Ironsmith"). + * + * If the source has no particular title (for instance, it's a single custom element in a VTT implementation), use "Custom". + */ + Title: SourceTitle | string; + /** + * The author(s) of this item. For 'canonical' content, this one's usually pretty obvious 😉 However, it's included so that homebrew content can use the same interface/schema. + * @default ["Shawn Tomkin"] + */ + Authors: string[]; + /** + * The 6-number date string formatted as `MMDDYY`. Relevant only during Starforged development; it will be deprecated once the game is released. + * @pattern ^(0[1-9]|1[0-2])([0-2][1-9]|3[0-1])([0-9][0-9])$ + */ + Date?: string | undefined; + /** + * The page on which the item appears most prominently in the source material (if it's in a format that uses page numbers). + */ + Page?: number | undefined; + /** + * The URL where the source material is available. + * @pattern ^https?://.*$ + */ + Url?: string | undefined; + /** + * The URL pointing to the license which this content falls under. + */ + License: License; +} + +/** + * Interface representing data on this item's source. For 'canonical' content, this is usually a book with numbered pages, but it might also be a link to a web site. + * @public + */ +declare interface Source_2 { + /** + * The title of the source. + * + * For 'canonical' content, use one of the enumerated `SourceTitle` strings. + * + * For 3rd-party content (including homebrew) that's been released as part of a titled document, use the title of that document (e.g. "Steelforged", "Ironsmith"). + * + * If the source has no particular title (for instance, it's a single custom element in a VTT implementation), use "Custom". + */ + Title: SourceTitle_2 | string; + /** + * The author(s) of this item. For 'canonical' content, this one's usually pretty obvious 😉 However, it's included so that homebrew content can use the same interface/schema. + * @default ["Shawn Tomkin"] + */ + Authors: string[]; + /** + * The 6-number date string formatted as `MMDDYY`. Relevant only during Starforged development; it will be deprecated once the game is released. + * @pattern ^(0[1-9]|1[0-2])([0-2][1-9]|3[0-1])([0-9][0-9])$ + */ + Date?: string | undefined; + /** + * The page on which the item appears most prominently in the source material (if it's in a format that uses page numbers). + */ + Page?: number | undefined; + /** + * The URL where the source material is available. + * @pattern ^https?://.*$ + */ + Url?: string | undefined; + /** + * The URL pointing to the license which this content falls under. + */ + License: License_2 +} + +/** + * Enumerates valid sourcebook titles. + * @public + */ +export declare enum SourceTitle { + Starforged = "Ironsworn: Starforged Rulebook", + StarforgedAssets = "Ironsworn: Starforged Assets", + SunderedIslesPreview = "Sundered Isles Preview", + Ironsworn = "Ironsworn Rulebook", + IronswornAssets = "Ironsworn Assets", + IronswornDelve = "Ironsworn: Delve", + Custom = "Custom" +} + +/** + * Enumerates valid sourcebook titles. + * @public + */ +declare enum SourceTitle_2 { + Starforged = "Ironsworn: Starforged Rulebook", + StarforgedAssets = "Ironsworn: Starforged Assets", + SunderedIslesPreview = "Sundered Isles Preview", + Ironsworn = "Ironsworn Rulebook", + IronswornAssets = "Ironsworn Assets", + IronswornDelve = "Ironsworn: Delve", + Custom = "Custom" +} + +/** + * Enumerates valid source URLs. + * @public + */ +export declare enum SourceUrl { + Starforged = "https://getstarforged.com", + StarforgedAssets = "https://getstarforged.com", + Ironsworn = "https://shawn-tomkin.itch.io/ironsworn", + IronswornAssets = "https://shawn-tomkin.itch.io/ironsworn", + IronswornDelve = "https://shawn-tomkin.itch.io/ironsworn-delve" +} + +/** + * Root object for *Ironsworn: Starforged* game data. + * @public + */ +export declare interface Starforged extends GameDataRoot { + "Encounters": { + [key: string]: EncounterStarforged; + }; + "Setting Truths": { + [key: string]: Truth; + }; +} + +/** + * @public + */ +export declare const starforged: Starforged; + +/** + * Enumerates player character stats. + * @public + */ +export declare enum Stat { + Edge = "edge", + Heart = "heart", + Iron = "iron", + Shadow = "shadow", + Wits = "wits" +} + +/** + * Enumerates player character stats. + * @public + */ +declare enum Stat_2 { + Edge = "edge", + Heart = "heart", + Iron = "iron", + Shadow = "shadow", + Wits = "wits" +} + +/** + * Make a stub of T where PartialKey is nullable, OmitK is omitted, and all other keys are required. + * + * @public + */ +export declare type StubBy = Omit, OmitKey>; + +/** + * Make a stub of T where PartialKey is nullable, OmitK is omitted, and all other keys are required. + * + * @public + */ +declare type StubBy_2 = Omit, OmitKey>; + +/** + * Make a stub of T where ReqK is required, OmitK is omitted, and all other keys are optional. + * @public + */ +export declare type StubExcept = Omit, OmitKey>; + +/** + * Make a stub of T where ReqK is required, OmitK is omitted, and all other keys are optional. + * @public + */ +declare type StubExcept_2 = Omit, OmitKey>; + +/** + * Describes "non-canonical" suggestions for game content related to the parent item. + * + * These are intended be offered as convenient shortcuts for the user (for instance, including a menu dropdown for rolling on suggested tables); having them roll automatically is **not recommended** for most projects. + * + * These can be safely ignored if that functionality is not desired. + * @public + */ +export declare interface Suggestions { + /** + * Suggested game objects and their parameters. + */ + "Game objects"?: GameObject[] | undefined; + /** + * Suggested oracle rolls, by table ID. Multiples of the same ID can be used to indicate that multiple rolls should be made. + */ + "Oracle rolls"?: OracleTable["$id"][] | undefined; + /** + * Suggested move IDs. + */ + "Moves"?: Move["$id"][] | undefined; + /** + * Suggested asset IDs. + */ + "Assets"?: Asset["$id"][] | undefined; + /** + * Suggested encounter IDs. + */ + "Encounters"?: EncounterStarforged["$id"][] | EncounterClassic["$id"][] | undefined; + /** + * Suggested delve site themes. + */ + "Themes"?: DelveTheme["$id"][] | undefined; + /** + * Suggested delve site domains. + */ + "Domains"?: DelveDomain["$id"][] | undefined; + /** + * Suggested Ironlands regions. + */ + "Regions"?: IronlandsRegion["$id"][] | undefined; +} + +/** + * Describes "non-canonical" suggestions for game content related to the parent item. + * + * These are intended be offered as convenient shortcuts for the user (for instance, including a menu dropdown for rolling on suggested tables); having them roll automatically is **not recommended** for most projects. + * + * These can be safely ignored if that functionality is not desired. + * @public + */ +declare interface Suggestions_2 { + /** + * Suggested game objects and their parameters. + */ + "Game objects"?: GameObject_2[] | undefined; + /** + * Suggested oracle rolls, by table ID. Multiples of the same ID can be used to indicate that multiple rolls should be made. + */ + "Oracle rolls"?: OracleTable_2["$id"][] | undefined; + /** + * Suggested move IDs. + */ + "Moves"?: Move_2["$id"][] | undefined; + /** + * Suggested asset IDs. + */ + "Assets"?: Asset_2["$id"][] | undefined; + /** + * Suggested encounter IDs. + */ + "Encounters"?: EncounterStarforged_2["$id"][] | EncounterClassic_2["$id"][] | undefined; + /** + * Suggested delve site themes. + */ + "Themes"?: DelveTheme_2["$id"][] | undefined + /** + * Suggested delve site domains. + */ + "Domains"?: DelveDomain_2["$id"][] | undefined + /** + * Suggested Ironlands regions. + */ + "Regions"?: IronlandsRegion_2["$id"][] | undefined +} + +/** + * Interface with elements common to {@link TableColumnRoll} and {@link TableColumnText}. + * @public + */ +export declare interface TableColumnBase extends HasLabel { + /** + * The label or header text to use for this column. + * @localize + */ + Label: string; + /** + * The ID of the {@link OracleTable} whose {@link OracleTable.Table} content will be displayed in the table. + */ + "Content": OracleTable["$id"]; + Type: TableColumnType; + /** + * The key of each {@link OracleTableRow} in the {@link OracleTable.Table}, whose string value is displayed in the rendered table. + */ + Key?: KeysWithValuesOfType | undefined; +} + +/** + * Interface with elements common to {@link TableColumnRoll} and {@link TableColumnText}. + * @public + */ +declare interface TableColumnBase_2 extends HasLabel_2 { + /** + * The label or header text to use for this column. + * @localize + */ + Label: string; + /** + * The ID of the {@link OracleTable} whose {@link OracleTable.Table} content will be displayed in the table. + */ + "Content": OracleTable_2["$id"]; + Type: TableColumnType_2 + /** + * The key of each {@link OracleTableRow} in the {@link OracleTable.Table}, whose string value is displayed in the rendered table. + */ + Key?: KeysWithValuesOfType_2 | undefined +} + +/** + * @public + */ +export declare interface TableColumnRoll extends Omit { + /** + * @default "Roll" + * @localize + */ + Label: string; + Type: TableColumnType.Range; +} + +/** * @public */ -export declare type RollableStat = Stat | ICustomStat["$id"] | PlayerConditionMeter | IConditionMeter["$id"]; +declare interface TableColumnRoll_2 extends Omit { + /** + * @default "Roll" + * @localize + */ + Label: string; + Type: TableColumnType_2.Range +} /** - * The stat(s) or progress track(s) that may be rolled with the parent move trigger option. + * Describes the rendering of a table column that displays textual content (as opposed to {@link TableColumnRoll}, which displays numerical ranges). * @public */ -export declare enum RollMethod { +export declare interface TableColumnText extends TableColumnBase { + Type: TableColumnType.String; /** - * When rolling with this move trigger option, *every* stat or progress track of the `Using` key is rolled. + * @default "Result" + * @localize */ - All = "All", + Label: string; /** - * When rolling with this move trigger option, use the highest/best option from the `Using` key. + * @default "Result" */ - Highest = "Highest", + Key: KeysWithValuesOfType; +} + +/** + * Describes the rendering of a table column that displays textual content (as opposed to {@link TableColumnRoll}, which displays numerical ranges). + * @public + */ +declare interface TableColumnText_2 extends TableColumnBase_2 { + Type: TableColumnType_2.String /** - * When rolling with this move trigger option, use the lowest/worst option from the `Using` key. + * @default "Result" + * @localize */ - Lowest = "Lowest", + Label: string; /** - * When rolling with this move trigger option, the user picks which stat to use. + * @default "Result" + */ + Key: KeysWithValuesOfType_2 +} + +/** + * Enumerates the type of content shown: a dice range, or a string. + * @public + */ +export declare enum TableColumnType { + Range = "dice range", + String = "string" +} + +/** + * Enumerates the type of content shown: a dice range, or a string. + * @public + */ +declare enum TableColumnType_2 { + Range="dice range", + String="string" +} + +/** + * @public + */ +export declare interface Title extends HasId { + /** + * @pattern ^(Starforged|Ironsworn)/[0-9A-z_/-]+/Title$ + */ + $id: string; + /** + * The title of this item, which here is defined as the associated header text *exactly* as it appears on the page. * - * This is the default option for triggers that offer a single stat. + * For items that represent a single table column, this is the label that appears at the top of the column. + * + * Use this title if you want high fidelity to the book. For most interactive UX, it's recommended to use {@link Title.Standard} instead. + * + * @localize */ - Any = "Any", + Canonical: string; /** - * This move trigger option has no roll method of its own, and must inherit its roll from another move trigger option. + * The recommended title for most implementations. * - * If the parent's `Using` is defined, the inherited roll must use one of those stats/progress tracks. + * This is usually the same as the canonical title, but editorializes a bit by trimming out things like "Oracle 15" in some Ironsworn oracles (because *nobody* remembers it as "Oracle 15"). * - * Typically appears on children of `IAlterMove`. + * If you need the shortest possible name, see {@link Title.Short} instead. + * @localize */ - Inherit = "Inherit", + Standard: string; /** - * The move trigger option results in an automatic strong hit - no roll required. + * The shortest title for this item that remains distinct amongst its siblings. + * + * Unless you're very pressed for space, most UX should use {@link Title.Standard} instead. + * + * @localize */ - StrongHit = "Strong Hit", + Short: string; +} + +/** + * @public + */ +declare interface Title_2 extends HasId_2 { /** - * The move trigger option results in an automatic weak hit - no roll required. + * @pattern ^(Starforged|Ironsworn)/[0-9A-z_/-]+/Title$ */ - WeakHit = "Weak Hit" + $id: string + /** + * The title of this item, which here is defined as the associated header text *exactly* as it appears on the page. + * + * For items that represent a single table column, this is the label that appears at the top of the column. + * + * Use this title if you want high fidelity to the book. For most interactive UX, it's recommended to use {@link Title.Standard} instead. + * + * @localize + */ + Canonical: string + /** + * The recommended title for most implementations. + * + * This is usually the same as the canonical title, but editorializes a bit by trimming out things like "Oracle 15" in some Ironsworn oracles (because *nobody* remembers it as "Oracle 15"). + * + * If you need the shortest possible name, see {@link Title.Short} instead. + * @localize + */ + Standard: string + /** + * The shortest title for this item that remains distinct amongst its siblings. + * + * Unless you're very pressed for space, most UX should use {@link Title.Standard} instead. + * + * @localize + */ + Short: string } /** + * Interface for Starforged Setting Truth categories such as "Exodus" and "Cataclysm". See page XX of Starforged for further information. + * @see TruthOption * @public */ -export declare enum RollType { - Action = "Action roll", - Progress = "Progress roll" +export declare interface Truth extends HasId, HasSource, HasDisplay, Partial, HasTable, HasTitle { + /** + * @pattern ^Starforged/Setting_Truths/[A-z_-]+$ + */ + $id: string; + /** + * The 'canonical' options for this setting truth category. + */ + Table: TruthOption[]; + /** + * A Markdown version of the text that appears at the end of each Truth entry; it offers suggestions on the character's assets and background. + * @markdown + * @localize + */ + Character: string; + Display: Display; } /** + * Interface for Starforged Setting Truth categories such as "Exodus" and "Cataclysm". See page XX of Starforged for further information. + * @see TruthOption * @public */ -export declare enum SettingTruthName { - Cataclysm = "Cataclysm", - Exodus = "Exodus", - Communities = "Communities", - Iron = "Iron", - Laws = "Laws", - Religion = "Religion", - Magic = "Magic", - CommunicationAndData = "Communication and Data", - Medicine = "Medicine", - ArtificialIntelligence = "Artificial Intelligence", - War = "War", - Lifeforms = "Lifeforms", - Precursors = "Precursors", - Horrors = "Horrors" +declare interface Truth_2 extends HasId_2, HasSource_2, HasDisplay_2, Partial, HasTable_2, HasTitle_2 { + /** + * @pattern ^Starforged/Setting_Truths/[A-z_-]+$ + */ + $id: string; + /** + * The 'canonical' options for this setting truth category. + */ + Table: TruthOption_2[]; + /** + * A Markdown version of the text that appears at the end of each Truth entry; it offers suggestions on the character's assets and background. + * @markdown + * @localize + */ + Character: string; + Display: Display_2; } /** - * Enumerates valid sourcebook titles. * @public */ -export declare enum SourceTitle { - Starforged = "Ironsworn: Starforged Rulebook", - StarforgedAssets = "Ironsworn: Starforged Assets", - SunderedIslesPreview = "Sundered Isles Preview", - Ironsworn = "Ironsworn Rulebook", - IronswornAssets = "Ironsworn Assets", - IronswornDelve = "Ironsworn: Delve", - Custom = "Custom" +export declare interface TruthClassic extends HasTitle, HasSource { + /** + * @pattern ^Ironsworn/Setting_Truths/[A-z_-]+$ + */ + $id: string; + Options: TruthOptionClassic[]; } /** - * Enumerates valid source URLs. * @public */ -export declare enum SourceUrl { - Starforged = "https://getstarforged.com", - StarforgedAssets = "https://getstarforged.com", - Ironsworn = "https://shawn-tomkin.itch.io/ironsworn", - IronswornAssets = "https://shawn-tomkin.itch.io/ironsworn", - IronswornDelve = "https://shawn-tomkin.itch.io/ironsworn-delve" +declare interface TruthClassic_2 extends HasTitle_2, HasSource_2 { + /** + * @pattern ^Ironsworn/Setting_Truths/[A-z_-]+$ + */ + $id: string; + Options: TruthOptionClassic_2[]; } /** - * Root object for *Ironsworn: Starforged* game data. + * Interface for 'canonical' options within a SettingTruth category. + * @see {@link SettingTruth} * @public */ -export declare interface Starforged extends GameDataRoot { - "Encounters": { - [key: string]: IEncounterStarforged; - }; - "Setting Truths": { - [key: string]: ISettingTruth; - }; +export declare interface TruthOption extends OracleTableRow, HasQuestStarter, HasDescription { + /** + * @pattern ^Starforged/Setting_Truths/[A-z_-]+/(1-33|34-67|68-100)$ + */ + $id: string; + "Roll template"?: RollTemplate | undefined; + Subtable?: TruthOptionSubtableRow[] | undefined; } /** + * Interface for 'canonical' options within a SettingTruth category. + * @see {@link SettingTruth} * @public */ -export declare const starforged: Starforged; +declare interface TruthOption_2 extends OracleTableRow_2, HasQuestStarter_2, HasDescription_2 { + /** + * @pattern ^Starforged/Setting_Truths/[A-z_-]+/(1-33|34-67|68-100)$ + */ + $id: string; + "Roll template"?: RollTemplate_2 | undefined; + Subtable?: TruthOptionSubtableRow_2[] | undefined; +} /** - * Enumerates player character stats. * @public */ -export declare enum Stat { - Edge = "edge", - Heart = "heart", - Iron = "iron", - Shadow = "shadow", - Wits = "wits" +export declare interface TruthOptionClassic extends HasDescription, HasQuestStarter { + /** + * @pattern ^Ironsworn/Setting_Truths/[A-z_-]+/[1-3]$ + */ + $id: string; } /** - * Make a stub of T where PartialKey is nullable, OmitK is omitted, and all other keys are required. - * * @public */ -export declare type StubBy = Omit, OmitKey>; +declare interface TruthOptionClassic_2 extends HasDescription_2, HasQuestStarter_2 { + /** + * @pattern ^Ironsworn/Setting_Truths/[A-z_-]+/[1-3]$ + */ + $id: string +} /** - * Make a stub of T where ReqK is required, OmitK is omitted, and all other keys are optional. + * @see {@link TruthOption}, {@link Truth} * @public */ -export declare type StubExcept = Omit, OmitKey>; +export declare interface TruthOptionSubtableRow extends OracleTableRow { + /** + * @pattern ^(Starforged|Ironsworn)/Setting_Truths/[A-z_-]+/(1-33|34-67|68-100|[1-3])/[1-9][0-9]*(-[1-9][0-9]*)?$ + */ + $id: string; +} /** - * Enumerates the type of content shown: a dice range, or a string. + * @see {@link TruthOption}, {@link Truth} * @public */ -export declare enum TableColumnType { - Range = "dice range", - String = "string" +declare interface TruthOptionSubtableRow_2 extends OracleTableRow_2 { + /** + * @pattern ^(Starforged|Ironsworn)/Setting_Truths/[A-z_-]+/(1-33|34-67|68-100|[1-3])/[1-9][0-9]*(-[1-9][0-9]*)?$ + */ + $id: string; } /** @@ -3218,6 +5829,17 @@ export declare enum VaultZone { Sanctum = "Sanctum" } +/** + * @public + */ +export declare interface YamlSource extends Partial { +} + +/** + * @public + */ +declare interface YamlSource_2 extends Partial {} + /** * @public */ @@ -3232,4 +5854,18 @@ export declare enum Zone { Research = "Research" } +/** + * @public + */ +declare enum Zone_2 { + Access = "Access", + Community = "Community", + Engineering = "Engineering", + Living = "Living", + Medical = "Medical", + Operations = "Operations", + Production = "Production", + Research = "Research" +} + export { }