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-lethal-fantasy" export const DEV_MODE = false export const MONEY = { tinbit: { id: "tinbit", abbrev: "tb", label: "LETHALFANTASY.Money.Tinbits", valuetb: 1 }, copper: { id: "copper", abbrev: "cp", label: "LETHALFANTASY.Money.Coppers", valuetb: 10 }, silver: { id: "silver", abbrev: "sp", label: "LETHALFANTASY.Money.Silvers", valuetb: 100 }, gold: { id: "gold", abbrev: "gp", label: "LETHALFANTASY.Money.Golds", valuetb: 1000 }, platinum: { id: "platinum", abbrev: "pp", label: "LETHALFANTASY.Money.Platinums", valuetb: 10000 } } export const MORTAL_CHOICES = { "mankind": {label: "Mankind", value: "mankind", defenseBonus: 0}, "elf": {label: "Elf", value: "elf", defenseBonus: 0}, "dwarf": {label: "Dwarf", value: "dwarf", defenseBonus: 0}, "halfelf": {label: "Half-Elf", value: "halfelf", defenseBonus: 0}, "halforc": {label: "Half-Orc", value: "halforc", defenseBonus: 0}, "gnome": {label: "Gnome", value: "gnome", defenseBonus: 2}, "shirefolk": {label: "Shire Folk", value: "shirefolk", 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 (D8E)", value: "D8"}, "walk": {label: "Walk (D10E)", value: "D10"}, "jog": {label: "Jog (D12E)", value: "D12"}, "run": {label: "Run (D20E)", value: "D20"}, "incombat": {label: "In Combat (D12E)", value: "D12"} } export const MOVE_DIRECTION_CHOICES = { "none": {label: "None (+0)", value: "0"}, "away": {label: "Away (+4)", value: "+4"}, "toward": {label: "Toward (+0)", value: "0"}, "lateral": {label: "Lateral (+10)", value: "+10"} } export const SIZE_CHOICES = { "tiny": {label: "Tiny (+10)", value: "+10"}, "small": {label: "Small (+5)", value: "+5"}, "medium": {label: "Medium (+0)", value: "0"}, "huge": {label: "Huge (-10)", value: "-10"} } export const RANGE_CHOICES = { "pointblank": {label: "Point Blank (-5)", value: "-5"}, "short": {label: "Short (+0)", value: "0"}, "medium": {label: "Medium (+8)", value: "+8"}, "long": {label: "Long (+15)", value: "+15"}, "extreme": {label: "Extreme (+20)", value: "+20"}, "beyondskill": {label: "Beyond Skill (+25)", value: "+25"} } export const ATTACKER_AIM_CHOICES = { "simple": {label: "Simple (+0)", value: "0"}, "careful": {label: "Careful (-4)", value: "-4"}, "focused": {label: "Focused (-8)", value: "-8"} } 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 (1D6)", "value": "1D6" }, { "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 (1D6)", "value": "1D6" }, { "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 (1D6)", "value": "1D6" }, { "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 (1D8)", "value": "1D8" }, { "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 (1D10)", "value": "1D10" }, { "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 = { "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 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 }