Johannes Loher
9d7c570553
This also allows to assign a spell to multiple spell groups, which is the case for many spells in the SRD. Additionally, this makes many small improvements and fixes to the provided spell compendium.
464 lines
16 KiB
TypeScript
464 lines
16 KiB
TypeScript
// SPDX-FileCopyrightText: 2021 Johannes Loher
|
|
// SPDX-FileCopyrightText: 2021 Oliver Rümpelein
|
|
// SPDX-FileCopyrightText: 2021 Gesina Schwalbe
|
|
// SPDX-FileCopyrightText: 2021 Siegfried Krug
|
|
//
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
const i18nKeys = {
|
|
/**
|
|
* Define the set of acttack types that can be performed with weapon items
|
|
*/
|
|
attackTypes: {
|
|
melee: "DS4.AttackTypeMelee",
|
|
ranged: "DS4.AttackTypeRanged",
|
|
meleeRanged: "DS4.AttackTypeMeleeRanged",
|
|
},
|
|
|
|
/**
|
|
* Define the set of item availabilties
|
|
*/
|
|
itemAvailabilities: {
|
|
unset: "DS4.ItemAvailabilityUnset",
|
|
hamlet: "DS4.ItemAvailabilityHamlet",
|
|
village: "DS4.ItemAvailabilityVilage",
|
|
city: "DS4.ItemAvailabilityCity",
|
|
elves: "DS4.ItemAvailabilityElves",
|
|
dwarves: "DS4.ItemAvailabilityDwarves",
|
|
nowhere: "DS4.ItemAvailabilityNowhere",
|
|
},
|
|
|
|
/**
|
|
* Define the set of item types
|
|
*/
|
|
itemTypes: {
|
|
weapon: "DS4.ItemTypeWeapon",
|
|
armor: "DS4.ItemTypeArmor",
|
|
shield: "DS4.ItemTypeShield",
|
|
spell: "DS4.ItemTypeSpell",
|
|
equipment: "DS4.ItemTypeEquipment",
|
|
loot: "DS4.ItemTypeLoot",
|
|
talent: "DS4.ItemTypeTalent",
|
|
racialAbility: "DS4.ItemTypeRacialAbility",
|
|
language: "DS4.ItemTypeLanguage",
|
|
alphabet: "DS4.ItemTypeAlphabet",
|
|
specialCreatureAbility: "DS4.ItemTypeSpecialCreatureAbility",
|
|
},
|
|
|
|
/**
|
|
* Define the set of armor types, a character may only wear one item of each at any given time
|
|
*/
|
|
armorTypes: {
|
|
body: "DS4.ArmorTypeBody",
|
|
helmet: "DS4.ArmorTypeHelmet",
|
|
vambrace: "DS4.ArmorTypeVambrace",
|
|
greaves: "DS4.ArmorTypeGreaves",
|
|
vambraceGreaves: "DS4.ArmorTypeVambraceGreaves",
|
|
},
|
|
|
|
/**
|
|
* Define abbreviations for the armor types
|
|
*/
|
|
armorTypesAbbr: {
|
|
body: "DS4.ArmorTypeBodyAbbr",
|
|
helmet: "DS4.ArmorTypeHelmetAbbr",
|
|
vambrace: "DS4.ArmorTypeVambraceAbbr",
|
|
greaves: "DS4.ArmorTypeGreavesAbbr",
|
|
vambraceGreaves: "DS4.ArmorTypeVambraceGreavesAbbr",
|
|
},
|
|
|
|
/**
|
|
* Define the set of armor materials, used to determine if a character may wear the armor without additional penalties
|
|
*/
|
|
armorMaterialTypes: {
|
|
cloth: "DS4.ArmorMaterialTypeCloth",
|
|
leather: "DS4.ArmorMaterialTypeLeather",
|
|
chain: "DS4.ArmorMaterialTypeChain",
|
|
plate: "DS4.ArmorMaterialTypePlate",
|
|
natural: "DS4.ArmorMaterialTypeNatural",
|
|
},
|
|
|
|
/**
|
|
* Define the abbreviations of armor materials
|
|
*/
|
|
armorMaterialTypesAbbr: {
|
|
cloth: "DS4.ArmorMaterialTypeClothAbbr",
|
|
leather: "DS4.ArmorMaterialTypeLeatherAbbr",
|
|
chain: "DS4.ArmorMaterialTypeChainAbbr",
|
|
plate: "DS4.ArmorMaterialTypePlateAbbr",
|
|
natural: "DS4.ArmorMaterialTypeNaturalAbbr",
|
|
},
|
|
|
|
spellTypes: {
|
|
spellcasting: "DS4.SpellTypeSpellcasting",
|
|
targetedSpellcasting: "DS4.SpellTypeTargetedSpellcasting",
|
|
},
|
|
|
|
spellGroups: {
|
|
lightning: "DS4.SpellGroupLightning",
|
|
earth: "DS4.SpellGroupEarth",
|
|
water: "DS4.SpellGroupWater",
|
|
ice: "DS4.SpellGroupIce",
|
|
fire: "DS4.SpellGroupFire",
|
|
healing: "DS4.SpellGroupHealing",
|
|
light: "DS4.SpellGroupLight",
|
|
air: "DS4.SpellGroupAir",
|
|
transport: "DS4.SpellGroupTransport",
|
|
damage: "DS4.SpellGroupDamage",
|
|
shadow: "DS4.SpellGroupShadow",
|
|
protection: "DS4.SpellGroupProtection",
|
|
mindAffecting: "DS4.SpellGroupMindAffecting",
|
|
demonology: "DS4.SpellGroupDemonology",
|
|
necromancy: "DS4.SpellGroupNecromancy",
|
|
transmutation: "DS4.SpellGroupTransmutation",
|
|
area: "DS4.SpellGroupArea",
|
|
},
|
|
|
|
cooldownDurations: {
|
|
"0r": "DS4.CooldownDuration0R",
|
|
"1r": "DS4.CooldownDuration1R",
|
|
"2r": "DS4.CooldownDuration2R",
|
|
"5r": "DS4.CooldownDuration5R",
|
|
"10r": "DS4.CooldownDuration10R",
|
|
"100r": "DS4.CooldownDuration100R",
|
|
"1d": "DS4.CooldownDuration1D",
|
|
d20d: "DS4.CooldownDurationD20D",
|
|
},
|
|
|
|
/**
|
|
* Define the set of actor types
|
|
*/
|
|
actorTypes: {
|
|
character: "DS4.ActorTypeCharacter",
|
|
creature: "DS4.ActorTypeCreature",
|
|
},
|
|
|
|
/**
|
|
* Define the set of attributes an actor has
|
|
*/
|
|
attributes: {
|
|
body: "DS4.AttributeBody",
|
|
mobility: "DS4.AttributeMobility",
|
|
mind: "DS4.AttributeMind",
|
|
},
|
|
|
|
/**
|
|
* Define the set of traits an actor has
|
|
*/
|
|
traits: {
|
|
strength: "DS4.TraitStrength",
|
|
agility: "DS4.TraitAgility",
|
|
intellect: "DS4.TraitIntellect",
|
|
constitution: "DS4.TraitConstitution",
|
|
dexterity: "DS4.TraitDexterity",
|
|
aura: "DS4.TraitAura",
|
|
},
|
|
|
|
/**
|
|
* Define the set of combat values an actor has
|
|
*/
|
|
combatValues: {
|
|
hitPoints: "DS4.CombatValuesHitPoints",
|
|
defense: "DS4.CombatValuesDefense",
|
|
initiative: "DS4.CombatValuesInitiative",
|
|
movement: "DS4.CombatValuesMovement",
|
|
meleeAttack: "DS4.CombatValuesMeleeAttack",
|
|
rangedAttack: "DS4.CombatValuesRangedAttack",
|
|
spellcasting: "DS4.CombatValuesSpellcasting",
|
|
targetedSpellcasting: "DS4.CombatValuesTargetedSpellcasting",
|
|
},
|
|
|
|
/**
|
|
* The what do display in the actor sheets for the combat value text (in some languages, abbreviations are necessary)
|
|
*/
|
|
combatValuesSheet: {
|
|
hitPoints: "DS4.CombatValuesHitPointsSheet",
|
|
defense: "DS4.CombatValuesDefenseSheet",
|
|
initiative: "DS4.CombatValuesInitiativeSheet",
|
|
movement: "DS4.CombatValuesMovementSheet",
|
|
meleeAttack: "DS4.CombatValuesMeleeAttackSheet",
|
|
rangedAttack: "DS4.CombatValuesRangedAttackSheet",
|
|
spellcasting: "DS4.CombatValuesSpellcastingSheet",
|
|
targetedSpellcasting: "DS4.CombatValuesTargetedSpellcastingSheet",
|
|
},
|
|
|
|
/**
|
|
* Define the base info of a character
|
|
*/
|
|
characterBaseInfo: {
|
|
race: "DS4.CharacterBaseInfoRace",
|
|
class: "DS4.CharacterBaseInfoClass",
|
|
heroClass: "DS4.CharacterBaseInfoHeroClass",
|
|
culture: "DS4.CharacterBaseInfoCulture",
|
|
},
|
|
|
|
/**
|
|
* Define the progression info of a character
|
|
*/
|
|
characterProgression: {
|
|
level: "DS4.CharacterProgressionLevel",
|
|
experiencePoints: "DS4.CharacterProgressionExperiencePoints",
|
|
talentPoints: "DS4.CharacterProgressionTalentPoints",
|
|
progressPoints: "DS4.CharacterProgressionProgressPoints",
|
|
},
|
|
|
|
/**
|
|
* Define the language info of a character
|
|
*/
|
|
characterLanguage: {
|
|
languages: "DS4.CharacterLanguageLanguages",
|
|
alphabets: "DS4.CharacterLanguageAlphabets",
|
|
},
|
|
|
|
/**
|
|
* Define the profile info of a character
|
|
*/
|
|
characterProfile: {
|
|
biography: "DS4.CharacterProfileBiography",
|
|
gender: "DS4.CharacterProfileGender",
|
|
birthday: "DS4.CharacterProfileBirthday",
|
|
birthplace: "DS4.CharacterProfileBirthplace",
|
|
age: "DS4.CharacterProfileAge",
|
|
height: "DS4.CharacterProfileHeight",
|
|
hairColor: "DS4.CharacterProfileHairColor",
|
|
weight: "DS4.CharacterProfileWeight",
|
|
eyeColor: "DS4.CharacterProfileEyeColor",
|
|
specialCharacteristics: "DS4.CharacterProfileSpecialCharacteristics",
|
|
},
|
|
/**
|
|
* Define currency elements of a character
|
|
*/
|
|
characterCurrency: {
|
|
gold: "DS4.CharacterCurrencyGold",
|
|
silver: "DS4.CharacterCurrencySilver",
|
|
copper: "DS4.CharacterCurrencyCopper",
|
|
},
|
|
|
|
/**
|
|
* Define the different creature types a creature can be
|
|
*/
|
|
creatureTypes: {
|
|
animal: "DS4.CreatureTypeAnimal",
|
|
construct: "DS4.CreatureTypeConstruct",
|
|
humanoid: "DS4.CreatureTypeHumanoid",
|
|
magicalEntity: "DS4.CreatureTypeMagicalEntity",
|
|
plantBeing: "DS4.CreatureTypePlantBeing",
|
|
undead: "DS4.CreatureTypeUndead",
|
|
},
|
|
|
|
/**
|
|
* Define the different size categories creatures fall into
|
|
*/
|
|
creatureSizeCategories: {
|
|
tiny: "DS4.CreatureSizeCategoryTiny",
|
|
small: "DS4.CreatureSizeCategorySmall",
|
|
normal: "DS4.CreatureSizeCategoryNormal",
|
|
large: "DS4.CreatureSizeCategoryLarge",
|
|
huge: "DS4.CreatureSizeCategoryHuge",
|
|
colossal: "DS4.CreatureSizeCategoryColossal",
|
|
},
|
|
|
|
/**
|
|
* Define the base info of a creature
|
|
*/
|
|
creatureBaseInfo: {
|
|
loot: "DS4.CreatureBaseInfoLoot",
|
|
foeFactor: "DS4.CreatureBaseInfoFoeFactor",
|
|
creatureType: "DS4.CreatureBaseInfoCreatureType",
|
|
sizeCategory: "DS4.CreatureBaseInfoSizeCategory",
|
|
experiencePoints: "DS4.CreatureBaseInfoExperiencePoints",
|
|
description: "DS4.CreatureBaseInfoDescription",
|
|
},
|
|
|
|
/**
|
|
* Define translations for available distance units
|
|
*/
|
|
distanceUnits: {
|
|
meter: "DS4.UnitMeters",
|
|
kilometer: "DS4.UnitKilometers",
|
|
custom: "DS4.UnitCustom",
|
|
},
|
|
/**
|
|
* Define abbreviations for available distance units
|
|
*/
|
|
distanceUnitsAbbr: {
|
|
meter: "DS4.UnitMetersAbbr",
|
|
kilometer: "DS4.UnitKilometersAbbr",
|
|
custom: "DS4.UnitCustomAbbr",
|
|
},
|
|
|
|
/**
|
|
* Define translations for available duration units
|
|
*/
|
|
temporalUnits: {
|
|
rounds: "DS4.UnitRounds",
|
|
minutes: "DS4.UnitMinutes",
|
|
hours: "DS4.UnitHours",
|
|
days: "DS4.UnitDays",
|
|
custom: "DS4.UnitCustom",
|
|
},
|
|
|
|
/**
|
|
* Define abbreviations for available duration units
|
|
*/
|
|
temporalUnitsAbbr: {
|
|
rounds: "DS4.UnitRoundsAbbr",
|
|
minutes: "DS4.UnitMinutesAbbr",
|
|
hours: "DS4.UnitHoursAbbr",
|
|
days: "DS4.UnitDaysAbbr",
|
|
custom: "DS4.UnitCustomAbbr",
|
|
},
|
|
|
|
checks: {
|
|
appraise: "DS4.ChecksAppraise",
|
|
changeSpell: "DS4.ChecksChangeSpell",
|
|
climb: "DS4.ChecksClimb",
|
|
communicate: "DS4.ChecksCommunicate",
|
|
decipherScript: "DS4.ChecksDecipherScript",
|
|
defend: "DS4.ChecksDefend",
|
|
defyPoison: "DS4.ChecksDefyPoison",
|
|
disableTraps: "DS4.ChecksDisableTraps",
|
|
featOfStrength: "DS4.ChecksFeatOfStrength",
|
|
flirt: "DS4.ChecksFlirt",
|
|
haggle: "DS4.ChecksHaggle",
|
|
hide: "DS4.ChecksHide",
|
|
identifyMagic: "DS4.ChecksIdentifyMagic",
|
|
jump: "DS4.ChecksJump",
|
|
knowledge: "DS4.ChecksKnowledge",
|
|
openLock: "DS4.ChecksOpenLock",
|
|
perception: "DS4.ChecksPerception",
|
|
pickPocket: "DS4.ChecksPickPocket",
|
|
readTracks: "DS4.ChecksReadTracks",
|
|
resistDisease: "DS4.ChecksResistDisease",
|
|
ride: "DS4.ChecksRide",
|
|
search: "DS4.ChecksSearch",
|
|
senseMagic: "DS4.ChecksSenseMagic",
|
|
sneak: "DS4.ChecksSneak",
|
|
startFire: "DS4.ChecksStartFire",
|
|
swim: "DS4.ChecksSwim",
|
|
wakeUp: "DS4.ChecksWakeUp",
|
|
workMechanism: "DS4.ChecksWorkMechanism",
|
|
},
|
|
|
|
/**
|
|
* Translations for the standard check modifiers
|
|
*/
|
|
checkModifiers: {
|
|
routine: "DS4.CheckModifierRoutine",
|
|
veryEasy: "DS4.CheckModifierVeryEasy",
|
|
easy: "DS4.CheckModifierEasy",
|
|
normal: "DS4.CheckModifierMormal",
|
|
difficult: "DS4.CheckModifierDifficult",
|
|
veryDifficult: "DS4.CheckModifierVeryDifficult",
|
|
extremelyDifficult: "DS4.CheckModifierExtremelyDifficult",
|
|
custom: "DS4.CheckModifierCustom",
|
|
},
|
|
};
|
|
|
|
export const DS4 = {
|
|
// ASCII Artwork
|
|
ASCII: String.raw`_____________________________________________________________________________________________
|
|
____ _ _ _ _ ____ _____ ___ _ _ ____ _ _ __ _______ ____ ____ _ _
|
|
| _ \| | | | \ | |/ ___| ____/ _ \| \ | / ___|| | / \\ \ / / ____| _ \/ ___| | || |
|
|
| | | | | | | \| | | _| _|| | | | \| \___ \| | / _ \\ V /| _| | |_) \___ \ | || |_
|
|
| |_| | |_| | |\ | |_| | |__| |_| | |\ |___) | |___ / ___ \| | | |___| _ < ___) | |__ _|
|
|
|____/ \___/|_| \_|\____|_____\___/|_| \_|____/|_____/_/ \_\_| |_____|_| \_\____/ |_|
|
|
=============================================================================================`,
|
|
|
|
/**
|
|
* A dictionary of dictionaries each mapping keys to localized strings
|
|
* resp. their localization keys.
|
|
* The localization is assumed to take place on each reload.
|
|
*/
|
|
i18n: i18nKeys,
|
|
|
|
/**
|
|
* A dictionary of dictionaries each mapping keys to localizion keys.
|
|
*/
|
|
i18nKeys,
|
|
|
|
/**
|
|
* A dictionary of dictionaries mapping keys to icon file paths.
|
|
*/
|
|
icons: {
|
|
/**
|
|
* Define the file paths to icon images
|
|
*/
|
|
attackTypes: {
|
|
melee: "systems/ds4/assets/icons/official/combat-values/melee-attack.png",
|
|
meleeRanged: "systems/ds4/assets/icons/official/combat-values/melee-ranged-attack.png",
|
|
ranged: "systems/ds4/assets/icons/official/combat-values/ranged-attack.png",
|
|
},
|
|
|
|
/**
|
|
* Define the file paths to icon images
|
|
*/
|
|
spellTypes: {
|
|
spellcasting: "systems/ds4/assets/icons/official/combat-values/spellcasting.png",
|
|
targetedSpellcasting: "systems/ds4/assets/icons/official/combat-values/targeted-spellcasting.png",
|
|
},
|
|
|
|
/**
|
|
* Define the file paths to check images
|
|
*/
|
|
checks: {
|
|
appraise: "systems/ds4/assets/icons/game-icons/delapouite/two-coins.svg",
|
|
changeSpell: "systems/ds4/assets/icons/game-icons/delapouite/card-exchange.svg",
|
|
climb: "systems/ds4/assets/icons/game-icons/caro-asercion/mountain-climbing.svg",
|
|
communicate: "systems/ds4/assets/icons/game-icons/delapouite/discussion.svg",
|
|
decipherScript: "systems/ds4/assets/icons/game-icons/lorc/rune-stone.svg",
|
|
defend: "systems/ds4/assets/icons/game-icons/sbed/shield.svg",
|
|
defyPoison: "systems/ds4/assets/icons/game-icons/lorc/poison-bottle.svg",
|
|
disableTraps: "systems/ds4/assets/icons/game-icons/lorc/wolf-trap.svg",
|
|
featOfStrength: "systems/ds4/assets/icons/game-icons/delapouite/biceps.svg",
|
|
flirt: "systems/ds4/assets/icons/game-icons/lorc/charm.svg",
|
|
haggle: "systems/ds4/assets/icons/game-icons/lorc/cash.svg",
|
|
hide: "systems/ds4/assets/icons/game-icons/lorc/hidden.svg",
|
|
identifyMagic: "systems/ds4/assets/icons/game-icons/lorc/uncertainty.svg",
|
|
jump: "systems/ds4/assets/icons/game-icons/delapouite/jump-across.svg",
|
|
knowledge: "systems/ds4/assets/icons/game-icons/delapouite/bookshelf.svg",
|
|
openLock: "systems/ds4/assets/icons/game-icons/delapouite/padlock-open.svg",
|
|
perception: "systems/ds4/assets/icons/game-icons/lorc/awareness.svg",
|
|
pickPocket: "systems/ds4/assets/icons/game-icons/darkzaitev/robber-hand.svg",
|
|
readTracks: "systems/ds4/assets/icons/game-icons/delapouite/deer-track.svg",
|
|
resistDisease: "systems/ds4/assets/icons/game-icons/lorc/virus.svg",
|
|
ride: "systems/ds4/assets/icons/game-icons/delapouite/cavalry.svg",
|
|
search: "systems/ds4/assets/icons/game-icons/lorc/magnifying-glass.svg",
|
|
senseMagic: "systems/ds4/assets/icons/game-icons/delapouite/sparkles.svg",
|
|
sneak: "systems/ds4/assets/icons/game-icons/delapouite/mute.svg",
|
|
startFire: "systems/ds4/assets/icons/game-icons/lorc/campfire.svg",
|
|
swim: "systems/ds4/assets/icons/game-icons/delapouite/pool-dive.svg",
|
|
wakeUp: "systems/ds4/assets/icons/game-icons/delapouite/alarm-clock.svg",
|
|
workMechanism: "systems/ds4/assets/icons/game-icons/lorc/lever.svg",
|
|
},
|
|
},
|
|
|
|
/**
|
|
* Profile info types for handlebars of a character
|
|
*/
|
|
characterProfileDTypes: {
|
|
biography: "String",
|
|
gender: "String",
|
|
birthday: "String",
|
|
birthplace: "String",
|
|
age: "Number",
|
|
height: "Number",
|
|
hairColor: "String",
|
|
weight: "Number",
|
|
eyeColor: "String",
|
|
specialCharacteristics: "String",
|
|
},
|
|
|
|
/**
|
|
* Standard check modifiers
|
|
*/
|
|
checkModifiers: {
|
|
routine: 8,
|
|
veryEasy: 4,
|
|
easy: 2,
|
|
normal: 0,
|
|
difficult: -2,
|
|
veryDifficult: -4,
|
|
extremelyDifficult: -8,
|
|
},
|
|
};
|