Initial import

This commit is contained in:
2025-11-05 20:35:04 +01:00
commit 5b1fd847c2
4586 changed files with 685044 additions and 0 deletions
+5
View File
@@ -0,0 +1,5 @@
export const TYPE = Object.freeze({
light: { id: "light", label: "PRISMRPG.Armor.Category.light" },
medium: { id: "medium", label: "PRISMRPG.Armor.Category.medium" },
heavy: { id: "medium", label: "PRISMRPG.Armor.Category.heavy" }
})
+76
View File
@@ -0,0 +1,76 @@
export const CHARACTERISTICS = Object.freeze({
str: {
id: "str",
label: "PRISMRPG.Label.str"
},
int: {
id: "int",
label: "PRISMRPG.Character.int.label"
},
wis: {
id: "wis",
label: "PRISMRPG.Character.wis.label"
},
dex: {
id: "dex",
label: "PRISMRPG.Character.dex.label"
},
con: {
id: "con",
label: "PRISMRPG.Character.con.label"
},
cha: {
id: "cha",
label: "PRISMRPG.Character.cha.label"
},
luc: {
id: "luc",
label: "PRISMRPG.Character.luc.label"
},
app: {
id: "app",
label: "PRISMRPG.Character.app.label"
},
})
export const CHALLENGES = Object.freeze({
str: {
id: "str",
label: "PRISMRPG.Character.str.label"
},
agility: {
id: "agility",
label: "PRISMRPG.Character.agility.label"
},
dying: {
id: "dying",
label: "PRISMRPG.Character.dying.label"
}
})
export const SAVES = Object.freeze({
will: {
id: "will",
label: "PRISMRPG.Character.will.label"
},
dodge: {
id: "dodge",
label: "PRISMRPG.Character.dodge.label"
},
toughness: {
id: "toughness",
label: "PRISMRPG.Character.toughness.label"
},
contagion: {
id: "contagion",
label: "PRISMRPG.Character.contagion.label"
},
poison: {
id: "poison",
label: "PRISMRPG.Character.poison.label"
},
pain: {
id: "pain",
label: "PRISMRPG.Character.pain.label"
}
})
File diff suppressed because it is too large Load Diff
+51
View File
@@ -0,0 +1,51 @@
export const CATEGORY = Object.freeze({
essentialkit: {
id: "essentialkit",
label: "PRISMRPG.EquipmentCategories.EssentialKit",
},
classkit: {
id: "classkit",
label: "PRISMRPG.EquipmentCategories.ClassKit",
},
clothing: {
id: "clothing",
label: "PRISMRPG.EquipmentCategories.Clothing",
},
music: {
id: "music",
label: "PRISMRPG.EquipmentCategories.Music",
},
sleeping: {
id: "sleeping",
label: "PRISMRPG.EquipmentCategories.Sleeping",
},
landtransport: {
id: "landtransport",
label: "PRISMRPG.EquipmentCategories.LandTransport",
},
watertransport: {
id: "watertransport",
label: "PRISMRPG.EquipmentCategories.WaterTransport",
},
mount: {
id: "mount",
label: "PRISMRPG.EquipmentCategories.Mount",
},
light: {
id: "light",
label: "PRISMRPG.EquipmentCategories.Light",
},
loadbearing: {
id: "loadbearing",
label: "PRISMRPG.EquipmentCategories.LoadBearing",
},
misc: {
id: "misc",
label: "PRISMRPG.EquipmentCategories.Misc",
},
fooddrink: {
id: "fooddrink",
label: "PRISMRPG.EquipmentCategories.FoodDrink",
},
})
+60
View File
@@ -0,0 +1,60 @@
export const MONSTER_CHARACTERISTICS = Object.freeze({
int: {
id: "int",
label: "PRISMRPG.Character.int.label"
},
dex: {
id: "dex",
label: "PRISMRPG.Character.dex.label"
},
})
export const MONSTER_RESIST = Object.freeze({
resistTorture: {
id: "resistTorture",
label: "PRISMRPG.Monster.resistTorture.label"
},
resistPerformance: {
id: "resistPerformance",
label: "PRISMRPG.Monster.resistPerformance.label"
},
resistIntimidation: {
id: "resistIntimidation",
label: "PRISMRPG.Monster.resistIntimidation.label"
},
perception: {
id: "perception",
label: "PRISMRPG.Monster.perception.label"
},
stealth: {
id: "stealth",
label: "PRISMRPG.Monster.stealth.label"
}
})
export const MONSTER_SAVES = Object.freeze({
will: {
id: "will",
label: "PRISMRPG.Character.will.label"
},
dodge: {
id: "dodge",
label: "PRISMRPG.Character.dodge.label"
},
toughness: {
id: "toughness",
label: "PRISMRPG.Character.toughness.label"
},
contagion: {
id: "contagion",
label: "PRISMRPG.Character.contagion.label"
},
poison: {
id: "poison",
label: "PRISMRPG.Character.poison.label"
},
paincourage: {
id: "paincourage",
label: "PRISMRPG.Character.painCourage.label"
}
})
+22
View File
@@ -0,0 +1,22 @@
export const CATEGORY = Object.freeze({
layperson: {
id: "layperson",
label: "PRISMRPG.Skill.Category.layperson",
},
professional: {
id: "professional",
label: "PRISMRPG.Skill.Category.professional",
},
weapon: {
id: "weapon",
label: "PRISMRPG.Skill.Category.weapon",
},
armor: {
id: "armor",
label: "PRISMRPG.Skill.Category.armor",
},
resist: {
id: "resist",
label: "PRISMRPG.Skill.Category.resist",
}
})
+22
View File
@@ -0,0 +1,22 @@
export const RANGE = Object.freeze({
na: {
id: "na",
label: "PRISMRPG.Spell.Range.na",
},
contact: {
id: "contact",
label: "PRISMRPG.Spell.Range.contact",
},
proche: {
id: "proche",
label: "PRISMRPG.Spell.Range.proche",
},
loin: {
id: "loin",
label: "PRISMRPG.Spell.Range.loin",
},
distant: {
id: "distant",
label: "PRISMRPG.Spell.Range.distant",
},
})
+327
View File
@@ -0,0 +1,327 @@
import * as CHARACTER from "./character.mjs"
import * as WEAPON from "./weapon.mjs"
import * as ARMOR from "./armor.mjs"
import * as SPELL from "./spell.mjs"
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"
export const SYSTEM_ID = "fvtt-prism-rpg"
export const DEV_MODE = false
export const MONEY = {
tinbit: {
id: "tinbit",
abbrev: "tb",
label: "PRISMRPG.Money.Tinbits",
valuetb: 1
},
copper: {
id: "copper",
abbrev: "cp",
label: "PRISMRPG.Money.Coppers",
valuetb: 10
},
silver: {
id: "silver",
abbrev: "sp",
label: "PRISMRPG.Money.Silvers",
valuetb: 100
},
gold: {
id: "gold",
abbrev: "gp",
label: "PRISMRPG.Money.Golds",
valuetb: 1000
},
platinum: {
id: "platinum",
abbrev: "pp",
label: "PRISMRPG.Money.Platinums",
valuetb: 10000
}
}
export const MORTAL_CHOICES = {
"mankind": { label: "Mankind", id: "mankind", defenseBonus: 0 },
"elf": { label: "Elf", id: "elf", defenseBonus: 0 },
"dwarf": { label: "Dwarf", id: "dwarf", defenseBonus: 0 },
"halfelf": { label: "Half-Elf", id: "halfelf", defenseBonus: 0 },
"halforc": { label: "Half-Orc", id: "halforc", defenseBonus: 0 },
"gnome": { label: "Gnome", id: "gnome", defenseBonus: 2 },
"halflings": { label: "Halfling", id: "halflings", defenseBonus: 2 }
}
export const FAVOR_CHOICES = {
"none": { label: "None", value: "none" },
"favor": { label: "Favor", value: "favor" },
"disfavor": { label: "Disfavor", value: "disfavor" }
}
export const MOVEMENT_CHOICES = {
"none": { label: "None (D20E Disfavor)", disfavor: true, value: "2D20kl" },
"walk": { label: "Walk (D20E)", disfavor: true, value: "D20" },
"incombat": { label: "In Combat (D20E)", favor: false, value: "D20" },
"run": { label: "Jog/Run/Sprint (D20E Favor)", favor: true, value: "2D20kh" }
}
export const MOVE_DIRECTION_CHOICES = {
"away": { label: "Away (+0)", value: "+0" },
"toward": { label: "Toward (0)", value: "0" },
"lateral": { label: "Lateral (Red +5)", value: "+5" },
"none": { label: "None (+0)", value: "0" },
}
export const SIZE_CHOICES = {
"tiny": { label: "Tiny (Blue +11)", value: "+11" },
"small": { label: "Small (Purple +7)", value: "+7" },
"medium": { label: "Medium (Red +5)", value: "+5" },
"large": { label: "Large (Yellow +1)", value: "+1" },
"huge": { label: "Huge (0)", value: "0" }
}
export const RANGE_CHOICES = {
"pointblank": { label: "Point Blank (Special)", value: "pointblank" },
"short": { label: "Short (+0)", value: "0" },
"medium": { label: "Medium (Red +5)", value: "+5" },
"long": { label: "Long (Purle +7)", value: "+7" },
"extreme": { label: "Extreme (Grey +9)", value: "+9" },
"beyondskill": { label: "Beyond Skill (Blue +11)", value: "beyondskill" }
}
export const ATTACKER_AIM_CHOICES = {
"simple": { label: "Simple (+0)", value: "0" },
"careful": { label: "Careful (Red +5)", value: "+4" },
"focused": { label: "Focused (Grey +9)", value: "+9" }
}
export const SPELL_LETHARGY_DICE = [
{ dice: "D6", level: "1-5", value: "6", maxLevel: 5 },
{ dice: "D8", level: "6-10", value: "8", maxLevel: 10 },
{ dice: "D10", value: "10", level: "11-15", maxLevel: 15 },
{ dice: "D12", value: "12", level: "16-20", maxLevel: 20 },
{ dice: "D20", value: "20", level: "21-25", maxLevel: 25 }
]
export const GRANTED_DICE_CHOICES = {
"0": { label: "None", value: "0" },
"D2": { label: "D2", value: "D2" },
"D3": { label: "D3", value: "D3" },
"D4": { label: "D4", value: "D4" },
"D6": { label: "D6", value: "D6" },
"D8": { label: "D8", value: "D8" },
"D10": { label: "D10", value: "D10" },
"D12": { label: "D12", value: "D12" },
"D20": { label: "D20", value: "D20" }
}
export const INITIATIVE_DICE_CHOICES_PER_CLASS = {
"untrained": [
{ "name": "Asleep or totally distracted (2D12)", "value": "2D12" },
{ "name": "Awake but unsuspecting (2D8)", "value": "2D8" },
{ "name": "Declared Ready on Alert (2D6)", "value": "2D6" },
/*{ "name": "Aware of the enemy, can hear them but not see (2D4)", "value": "2D4" },
{ "name": "Aware and know exactly where the enemy is (2D3)", "value": "2D3" }*/
],
"fighter": [
{ "name": "Asleep or totally distracted (1D12)", "value": "1D12" },
{ "name": "Awake but unsuspecting (1D8)", "value": "1D8" },
{ "name": "Declared Ready on Alert (1)", "value": "1" },
/*{ "name": "Aware of the enemy, can hear them but not see (1D4)", "value": "1D4" },
{ "name": "Aware and know exactly where the enemy is (1D3)", "value": "1D3" }*/
],
"rogue": [
{ "name": "Asleep or totally distracted (1D10)", "value": "1D10" },
{ "name": "Awake but unsuspecting (1D8)", "value": "1D8" },
{ "name": "Declared Ready on Alert (1)", "value": "1" },
/*{ "name": "Aware of the enemy, can hear them but not see (1D3)", "value": "1D3" },
{ "name": "Aware and know exactly where the enemy is (1D2)", "value": "1D2" }*/
],
"ranger": [
{ "name": "Asleep or totally distracted (1D10)", "value": "1D10" },
{ "name": "Awake but unsuspecting (1D8)", "value": "1D8" },
{ "name": "Declared Ready on Alert (1)", "value": "1" },
/*{ "name": "Aware of the enemy, can hear them but not see (1D4)", "value": "1D4" },
{ "name": "Aware and know exactly where the enemy is (1D3)", "value": "1D3" }*/
],
"cleric": [
{ "name": "Asleep or totally distracted (1D12)", "value": "1D12" },
{ "name": "Awake but unsuspecting (1D10)", "value": "1D10" },
{ "name": "Declared Ready on Alert (1)", "value": "1" },
/*{ "name": "Aware of the enemy, can hear them but not see (1D6)", "value": "1D6" },
{ "name": "Aware and know exactly where the enemy is (1D4)", "value": "1D4" }*/
],
"magicuser": [
{ "name": "Sleeping to recover Aether Points (2D20)", "value": "2D20" },
{ "name": "Asleep or totally distracted (1D20)", "value": "1D20" },
{ "name": "Awake but unsuspecting (1D12)", "value": "1D12" },
{ "name": "Declared Ready on Alert (1)", "value": "1" },
/*{ "name": "Aware of the enemy, can hear them but not see (1D8)", "value": "1D8" },
{ "name": "Aware and know exactly where the enemy is (1D6)", "value": "1D6" }*/
]
}
export const CHAR_CLASSES = {
"untrained": "Untrained",
"fighter": "Fighter",
"rogue": "Rogue",
"ranger": "Ranger",
"cleric": "Cleric",
"magicuser": "Magic User"
}
export const CHAR_CLASSES_DEFINES = {
"untrained": { id: "untrained", label: "Untrained" },
"fighter": { id: "fighter", label: "Fighter" },
"rogue": { id: "rogue", label: "Rogue" },
"ranger": { id: "ranger", label: "Ranger" },
"cleric": { id: "cleric", label: "Cleric" },
"magicuser": { id: "magicuser", label: "Magic User" }
}
export const DICE_VALUES = {
"d3": "D3",
"d4": "D4",
"d6": "D6",
"d8": "D8",
"d10": "D10",
"d12": "D12",
"d20": "D20"
}
export const CHARACTERISTIC_ATTACK = ["str", "int", "wis", "dex"]
export const CHARACTERISTIC_RANGED_ATTACK = ["int", "wis", "dex"]
export const CHARACTERISTIC_DEFENSE = ["int", "wis", "dex"]
export const CHARACTERISTIC_DAMAGE = ["str"]
export const DEFENSE_DICE_VALUES = {
"0": "0",
"d3": "D3",
"d4": "D4",
"d6": "D6",
"d8": "D8",
"d10": "D10"
}
export const CHOICE_DICE = {
"D4": "D4",
"D6": "D6",
"D8": "D8",
"D10": "D10",
"D12": "D12",
"D20": "D20"
}
export const MIRACLE_TYPES = {
"combat": "Combat",
"noncombat": "Non-Combat",
"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",
"-7": "-7",
"-6": "-6",
"-5": "-5",
"-4": "-4",
"-3": "-3",
"-2": "-2",
"-1": "-1",
"+0": "0",
"+1": "+1",
"+2": "+2",
"+3": "+3",
"+4": "+4",
"+5": "+5",
"+6": "+6",
"+7": "+7",
"+8": "+8",
"+9": "+9",
"+10": "+10",
"+11": "+11",
"+12": "+12",
"+13": "+13",
"+14": "+14",
"+15": "+15",
"+16": "+16",
"+17": "+17",
"+18": "+18",
"+19": "+19",
"+20": "+20",
"+21": "+21",
"+22": "+22",
"+23": "+23",
"+24": "+24",
"+25": "+25"
}
export const ASCII = `
······················································································································
: :
:@@@ @@@@@@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@ @@@@@@@@ @@@@@@ @@@ @@@ @@@@@@@ @@@@@@ @@@@@@ @@@ @@@ :
:@@! @@! @!! @@! @@@ @@! @@@ @@! @@! @@! @@@ @@!@!@@@ @!! @@! @@@ !@@ @@! !@@ :
:@!! @!!!:! @!! @!@!@!@! @!@!@!@! @!! @!!!:! @!@!@!@! @!@@!!@! @!! @!@!@!@! !@@!! !@!@! :
:!!: !!: !!: !!: !!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!: !!! !:! !!: :
:: ::.: : : :: :: : : : : : : : : ::.: : : : : : :: : : : : : ::.: : .: :
: :
······················································································································
`
/**
* Include all constant definitions within the SYSTEM global export
* @type {Object}
*/
export const SYSTEM = {
id: SYSTEM_ID,
CHARACTERISTICS: CHARACTER.CHARACTERISTICS,
CHARACTERISTICS_TABLES: CHARACTERISTICS.TABLES,
CHARACTERISTICS_MAJOR: CHARACTERISTICS.MAJOR,
MONSTER_CHARACTERISTICS: MONSTER.MONSTER_CHARACTERISTICS,
MONSTER_RESIST: MONSTER.MONSTER_RESIST,
MONSTER_SAVES: MONSTER.MONSTER_SAVES,
SAVES: CHARACTER.SAVES,
CHALLENGES: CHARACTER.CHALLENGES,
SKILL_CATEGORY: SKILL.CATEGORY,
ARMOR_TYPE: ARMOR.TYPE,
EQUIPMENT_CATEGORY: EQUIPMENT.CATEGORY,
SPELL_RANGE: SPELL.RANGE,
WEAPON_TYPE: WEAPON.WEAPON_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,
CHARACTERISTIC_DEFENSE,
CHARACTERISTIC_DAMAGE,
INITIATIVE_DICE_CHOICES_PER_CLASS,
CHAR_CLASSES,
CHAR_CLASSES_DEFINES,
MONEY,
ASCII,
CHOICE_MODIFIERS,
CHOICE_DICE,
DEV_MODE,
MOVEMENT_CHOICES,
MOVE_DIRECTION_CHOICES,
SIZE_CHOICES,
RANGE_CHOICES,
FAVOR_CHOICES,
ATTACKER_AIM_CHOICES,
MORTAL_CHOICES,
SPELL_CRITICAL,
MIRACLE_TYPES,
SPELL_LETHARGY_DICE,
GRANTED_DICE_CHOICES
}
+35
View File
@@ -0,0 +1,35 @@
export const WEAPON_TYPE = {
"melee": "PRISMRPG.Weapon.WeaponType.melee",
"ranged": "PRISMRPG.Weapon.WeaponType.ranged"
}
export const WEAPON_CLASS = {
"longblade": "PRISMRPG.Weapon.WeaponClass.longblade",
"shortblade": "PRISMRPG.Weapon.WeaponClass.shortblade",
"mediumblade": "PRISMRPG.Weapon.WeaponClass.mediumblade",
"axe": "PRISMRPG.Weapon.WeaponClass.axe",
"hammer": "PRISMRPG.Weapon.WeaponClass.hammer",
"mace": "PRISMRPG.Weapon.WeaponClass.mace",
"flail": "PRISMRPG.Weapon.WeaponClass.flail",
"bow": "PRISMRPG.Weapon.WeaponClass.bow",
"sling": "PRISMRPG.Weapon.WeaponClass.sling",
"thrown": "PRISMRPG.Weapon.WeaponClass.thrown",
"polearm": "PRISMRPG.Weapon.WeaponClass.polearm",
"unarmed" : "PRISMRPG.Weapon.WeaponClass.unarmed"
}
export const WEAPON_CATEGORIES = {
"longblade": ["mediumblade", "shortblade"],
"shortblade": ["mediumblade", "longblade"],
"mediumblade": ["shortblade", "longblade"],
"axe": ["hammer", "mace", "flail", "bow", "sling", "thrown", "polearm"],
"hammer": ["axe", "mace", "flail", "bow", "sling", "thrown", "polearm"],
"mace": ["axe", "hammer", "flail", "bow", "sling", "thrown", "polearm"],
"flail": ["axe", "hammer", "mace", "bow", "sling", "thrown", "polearm"],
"bow": ["axe", "hammer", "mace", "flail", "sling", "thrown", "polearm"],
"sling": ["axe", "hammer", "mace", "flail", "bow", "thrown", "polearm"],
"thrown": ["axe", "hammer", "mace", "flail", "bow", "sling", "polearm"],
"polearm": ["axe", "hammer", "mace", "flail", "bow", "sling", "thrown"]
}