First iteration over items

This commit is contained in:
2025-11-06 23:30:37 +01:00
parent 6b883f8126
commit 4a9f026a2a
109 changed files with 1535 additions and 715 deletions
+20
View File
@@ -0,0 +1,20 @@
/**
* Class configuration for Prism RPG
*/
export const ARCHETYPE = {
faith: "PRISMRPG.Class.Archetype.faith",
mana: "PRISMRPG.Class.Archetype.mana",
wanderer: "PRISMRPG.Class.Archetype.wanderer",
warrior: "PRISMRPG.Class.Archetype.warrior"
}
export const CLASS_TYPE = {
core: "PRISMRPG.Class.ClassType.core",
continental: "PRISMRPG.Class.ClassType.continental"
}
export const SPELLCASTING_TYPE = {
mana: "PRISMRPG.Class.SpellcastingType.mana",
faith: "PRISMRPG.Class.SpellcastingType.faith"
}
+15
View File
@@ -0,0 +1,15 @@
/**
* Race configuration for Prism RPG
*/
export const SIZE = {
small: "PRISMRPG.Race.Size.small",
medium: "PRISMRPG.Race.Size.medium",
large: "PRISMRPG.Race.Size.large"
}
export const AGE_CATEGORY = {
short: "PRISMRPG.Race.AgeCategory.short",
medium: "PRISMRPG.Race.AgeCategory.medium",
long: "PRISMRPG.Race.AgeCategory.long"
}
+9
View File
@@ -38,6 +38,15 @@ export const TYPE = Object.freeze({
}
});
/**
* Simplified Shield Types object for form choices (label-only format)
*/
export const TYPE_CHOICES = Object.freeze(
Object.fromEntries(
Object.entries(TYPE).map(([key, value]) => [key, value.label])
)
);
/**
* Block augment descriptions for reference
* These are activated when using the Block action with the shield
+24
View File
@@ -99,6 +99,30 @@ export const CORE_SKILLS = Object.freeze({
}
});
/**
* Simplified Core Skills object for form choices (label-only format)
*/
export const CORE_SKILLS_CHOICES = {
acrobatics: "PRISMRPG.Skill.CoreSkill.acrobatics",
animalHandling: "PRISMRPG.Skill.CoreSkill.animalHandling",
arcana: "PRISMRPG.Skill.CoreSkill.arcana",
athletics: "PRISMRPG.Skill.CoreSkill.athletics",
deception: "PRISMRPG.Skill.CoreSkill.deception",
history: "PRISMRPG.Skill.CoreSkill.history",
insight: "PRISMRPG.Skill.CoreSkill.insight",
intimidate: "PRISMRPG.Skill.CoreSkill.intimidate",
investigation: "PRISMRPG.Skill.CoreSkill.investigation",
medicine: "PRISMRPG.Skill.CoreSkill.medicine",
nature: "PRISMRPG.Skill.CoreSkill.nature",
perception: "PRISMRPG.Skill.CoreSkill.perception",
performance: "PRISMRPG.Skill.CoreSkill.performance",
persuasion: "PRISMRPG.Skill.CoreSkill.persuasion",
religion: "PRISMRPG.Skill.CoreSkill.religion",
sleightOfHand: "PRISMRPG.Skill.CoreSkill.sleightOfHand",
stealth: "PRISMRPG.Skill.CoreSkill.stealth",
survival: "PRISMRPG.Skill.CoreSkill.survival"
};
/**
* Core Skill bonus values
*/
+9
View File
@@ -40,6 +40,15 @@ export const COLORS = Object.freeze({
}
});
/**
* Simplified Spell Colors object for form choices (label-only format)
*/
export const COLORS_CHOICES = Object.freeze(
Object.fromEntries(
Object.entries(COLORS).map(([key, value]) => [key, value.label])
)
);
/**
* Spell ranges (legacy - to be replaced with Prism system)
*/
+13 -12
View File
@@ -7,6 +7,8 @@ import * as SKILL from "./skill.mjs"
import * as EQUIPMENT from "./equipment.mjs"
import * as CHARACTERISTICS from "./characteristic-tables.mjs"
import * as MONSTER from "./monster.mjs"
import * as RACE from "./race.mjs"
import * as CLASS from "./class.mjs"
export const SYSTEM_ID = "fvtt-prism-rpg"
export const DEV_MODE = false
@@ -220,15 +222,6 @@ export const MIRACLE_TYPES = {
"ritualfaith": "Ritual of Faith"
}
export const SPELL_CRITICAL = {
"none": "None",
"electric": "Electric",
"fire": "Fire",
"cold": "Cold",
"force": "Force",
"acid": "Acid"
}
export const CHOICE_MODIFIERS = {
"-9": "-9",
"-8": "-8",
@@ -296,6 +289,7 @@ export const SYSTEM = {
CHALLENGES: CHARACTER.CHALLENGES,
SKILL_CATEGORY: SKILL.CATEGORY,
CORE_SKILLS: SKILL.CORE_SKILLS,
CORE_SKILLS_CHOICES: SKILL.CORE_SKILLS_CHOICES,
CORE_SKILL_BONUS: SKILL.CORE_SKILL_BONUS,
ARMOR_TYPE: ARMOR.TYPE,
ARMOR_BASE_AC: ARMOR.BASE_AC,
@@ -303,16 +297,19 @@ export const SYSTEM = {
ARMOR_WITHSTAND_APC: ARMOR.WITHSTAND_APC,
ARMOR_SET_REQUIREMENTS: ARMOR.SET_REQUIREMENTS,
SHIELD_TYPE: SHIELD.TYPE,
SHIELD_TYPE_CHOICES: SHIELD.TYPE_CHOICES,
SHIELD_BLOCK_AUGMENTS: SHIELD.BLOCK_AUGMENTS,
EQUIPMENT_CATEGORY: EQUIPMENT.CATEGORY,
SPELL_RANGE: SPELL.RANGE,
SPELL_COLORS: SPELL.COLORS,
SPELL_COLORS_CHOICES: SPELL.COLORS_CHOICES,
WEAPON_TYPE: WEAPON.TYPE,
WEAPON_TYPE_CHOICES: WEAPON.TYPE_CHOICES,
WEAPON_GROUP: WEAPON.WEAPON_GROUP,
WEAPON_GROUP_CHOICES: WEAPON.WEAPON_GROUP_CHOICES,
WEAPON_DAMAGE_TYPE: WEAPON.DAMAGE_TYPE,
WEAPON_CLASS: WEAPON.WEAPON_CLASS,
COMBAT_PROGRESSION_DICE: DICE_VALUES,
SHIELD_DEFENSE_DICE: DEFENSE_DICE_VALUES,
WEAPON_CATEGORIES: WEAPON.WEAPON_CATEGORIES,
CHARACTERISTIC_ATTACK,
CHARACTERISTIC_RANGED_ATTACK,
@@ -333,8 +330,12 @@ export const SYSTEM = {
FAVOR_CHOICES,
ATTACKER_AIM_CHOICES,
MORTAL_CHOICES,
SPELL_CRITICAL,
MIRACLE_TYPES,
SPELL_LETHARGY_DICE,
GRANTED_DICE_CHOICES
GRANTED_DICE_CHOICES,
RACE_SIZE: RACE.SIZE,
RACE_AGE_CATEGORY: RACE.AGE_CATEGORY,
CLASS_ARCHETYPE: CLASS.ARCHETYPE,
CLASS_TYPE: CLASS.CLASS_TYPE,
CLASS_SPELLCASTING_TYPE: CLASS.SPELLCASTING_TYPE
}
+24 -6
View File
@@ -29,6 +29,15 @@ export const TYPE = Object.freeze({
}
});
/**
* Simplified Weapon Types object for form choices (label-only format)
*/
export const TYPE_CHOICES = Object.freeze(
Object.fromEntries(
Object.entries(TYPE).map(([key, value]) => [key, value.label])
)
);
/**
* Weapon groups and their associated passives
* Each weapon belongs to a group and possesses its passive while wielded
@@ -36,48 +45,57 @@ export const TYPE = Object.freeze({
export const WEAPON_GROUP = Object.freeze({
longsword: {
id: "longsword",
label: "PRISMRPG.Weapon.WeaponGroup.longsword",
label: "PRISMRPG.WeaponGroup.longsword",
passive: "turningEdge",
passiveLabel: "PRISMRPG.Weapon.Passive.turningEdge",
passiveDescription: "PRISMRPG.Weapon.PassiveDescription.turningEdge"
},
warhammer: {
id: "warhammer",
label: "PRISMRPG.Weapon.WeaponGroup.warhammer",
label: "PRISMRPG.WeaponGroup.warhammer",
passive: "puncturingBlows",
passiveLabel: "PRISMRPG.Weapon.Passive.puncturingBlows",
passiveDescription: "PRISMRPG.Weapon.PassiveDescription.puncturingBlows"
},
battleaxe: {
id: "battleaxe",
label: "PRISMRPG.Weapon.WeaponGroup.battleaxe",
label: "PRISMRPG.WeaponGroup.battleaxe",
passive: "shieldEater",
passiveLabel: "PRISMRPG.Weapon.Passive.shieldEater",
passiveDescription: "PRISMRPG.Weapon.PassiveDescription.shieldEater"
},
dagger: {
id: "dagger",
label: "PRISMRPG.Weapon.WeaponGroup.dagger",
label: "PRISMRPG.WeaponGroup.dagger",
passive: "balancingStance",
passiveLabel: "PRISMRPG.Weapon.Passive.balancingStance",
passiveDescription: "PRISMRPG.Weapon.PassiveDescription.balancingStance"
},
crossbow: {
id: "crossbow",
label: "PRISMRPG.Weapon.WeaponGroup.crossbow",
label: "PRISMRPG.WeaponGroup.crossbow",
passive: "boltlock",
passiveLabel: "PRISMRPG.Weapon.Passive.boltlock",
passiveDescription: "PRISMRPG.Weapon.PassiveDescription.boltlock"
},
longbow: {
id: "longbow",
label: "PRISMRPG.Weapon.WeaponGroup.longbow",
label: "PRISMRPG.WeaponGroup.longbow",
passive: "volleyFire",
passiveLabel: "PRISMRPG.Weapon.Passive.volleyFire",
passiveDescription: "PRISMRPG.Weapon.PassiveDescription.volleyFire"
}
});
/**
* Simplified Weapon Groups object for form choices (label-only format)
*/
export const WEAPON_GROUP_CHOICES = Object.freeze(
Object.fromEntries(
Object.entries(WEAPON_GROUP).map(([key, value]) => [key, value.label])
)
);
/**
* Damage types for weapons
*/